Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách thực hiện trừ từng phần tử (element-wise) trên tensor trong PyTorch

Để thực hiện phép trừ từng phần tử trên tensor, ta sử dụng phương thức torch.sub() của PyTorch. Các phần tử tương ứng của các tensor sẽ bị trừ. Chúng ta có thể trừ một vô hướng (scalar) hoặc tensor từ tensor khác. Có thể trừ tensor từ tensor khác có cùng hoặc khác số chiều. Số chiều của tensor kết quả sẽ bằng số chiều của tensor có số chiều lớn hơn.

Các bước thực hiện

  • Nhập thư viện cần thiết. Trong tất cả ví dụ, thư viện bắt buộc là torch. Đảm bảo đã cài đặt.

  • Định nghĩa hai hoặc nhiều tensor PyTorch và in ra. Nếu trừ vô hướng, hãy định nghĩa giá trị đó.

  • Trừ vô hướng hoặc tensor từ tensor khác bằng torch.sub(), gán kết quả cho biến mới. Phép trừ này không làm thay đổi tensor gốc.

  • In tensor kết quả.

Ví dụ 1: Trừ vô hướng từ tensor

Chương trình Python 3 sau trừ một giá trị vô hướng từ tensor theo ba cách khác nhau.

# Chương trình thực hiện trừ từng phần tử
import torch

# Tạo tensor
t = torch.Tensor([1.5, 2.03, 3.8, 2.9])
print("Tensor gốc t:\n", t)

# Trừ vô hướng
v = torch.sub(t, 5.60)
print("Kết quả trừ từng phần tử:\n", v)

# Cách 2: dùng tensor chứa giá trị 5.60
t1 = torch.Tensor([5.60])
w = torch.sub(t, t1)
print("Kết quả trừ từng phần tử:\n", w)

# Cách 3: tạo tensor cùng kích thước toàn giá trị 5.60
t2 = torch.Tensor([5.60, 5.60, 5.60, 5.60])
x = torch.sub(t, t2)
print("Kết quả trừ từng phần tử:\n", x)

Kết quả

Original Tensor t:     tensor([1.5000, 2.0300, 3.8000, 2.9000])
Element-wise subtraction result:     tensor([-4.1000, -3.5700, -1.8000, -2.7000])
Element-wise subtraction result:     tensor([-4.1000, -3.5700, -1.8000, -2.7000])
Element-wise subtraction result:     tensor([-4.1000, -3.5700, -1.8000, -2.7000])

Ví dụ 2: Trừ tensor 1D từ tensor 2D

import torch

# Tạo tensor 2D
T1 = torch.Tensor([[8, 7], [4, 5]])
# Tạo tensor 1D
T2 = torch.Tensor([10, 5])

print("T1:\n", T1)
print("T2:\n", T2)

# Trừ tensor 1D từ tensor 2D
v = torch.sub(T1, T2)
print("Kết quả trừ từng phần tử:\n", v)

Kết quả

T1: tensor([[8., 7.], [4., 5.]])
T2:     tensor([10., 5.])
Element-wise subtraction result: tensor([[-2., 2.], [-6., 0.]])

Ví dụ 3: Trừ tensor 2D từ tensor 1D

import torch

# Tạo tensor 2D
T1 = torch.Tensor([[1, 2], [4, 5]])
# Tạo tensor 1D
T2 = torch.Tensor([10, 5])

print("T1:\n", T1)
print("T2:\n", T2)

# Trừ tensor 2D từ tensor 1D
v = torch.sub(T2, T1)
print("Kết quả trừ từng phần tử:\n", v)

Kết quả

T1: tensor([[1., 2.], [4., 5.]])
T2:     tensor([10., 5.])
Element-wise subtraction result: tensor([[9., 3.], [6., 0.]])

Nhận thấy tensor kết quả là tensor 2D.

Ví dụ 4: Trừ hai tensor 2D

import torch

# Tạo hai tensor 2D
T1 = torch.Tensor([[8, 7], [3, 4]])
T2 = torch.Tensor([[0, 3], [4, 9]])

print("T1:\n", T1)
print("T2:\n", T2)

# Trừ hai tensor 2D
v = torch.sub(T1, T2)
print("Kết quả trừ từng phần tử:\n", v)

Kết quả

T1: tensor([[8., 7.], [3., 4.]])
T2: tensor([[0., 3.], [4., 9.]])
Element-wise subtraction result: tensor([[ 8., 4.], [-1., -5.]])