ในการลบทิลเซอร์แบบองค์ประกอบ เราใช้เมธอด torch.sub() ของ PyTorch เมธอดนี้จะลบองค์ประกอบที่ตรงกันของทิลเซอร์ เราสามารถลบสเกลาร์หรือทิลเซอร์ออกจากทิลเซอร์อื่นได้ รองรับทิลเซอร์ที่มีมิติเท่ากันหรือต่างกัน ผลลัพธ์จะมีมิติเท่ากับทิลเซอร์ที่มีมิติสูงกว่า
ขั้นตอนการทำงาน
นำเข้าไลบรารีที่จำเป็น ใช้ไลบรารี torch ในทุกตัวอย่าง
กำหนดทิลเซอร์ PyTorch สองตัวขึ้นไปและพิมพ์ค่า ถ้าต้องการลบสเกลาร์ ให้กำหนดค่าสเกลาร์
ใช้ torch.sub() ลบสเกลาร์หรือทิลเซอร์จากทิลเซอร์อื่น และกำหนดผลลัพธ์ให้ตัวแปรใหม่ ไม่เปลี่ยนแปลงทิลเซอร์ต้นฉบับ
พิมพ์ทิลเซอร์ผลลัพธ์
ตัวอย่างที่ 1: ลบสเกลาร์ออกจากทิลเซอร์
โปรแกรมนี้แสดง 3 วิธีในการลบสเกลาร์ออกจากทิลเซอร์
import torch
# สร้างทิลเซอร์
t = torch.Tensor([1.5, 2.03, 3.8, 2.9])
print("Original Tensor t:\n", t)
# ลบค่าสเกลาร์จากทิลเซอร์
v = torch.sub(t, 5.60)
print("Element-wise subtraction result:\n", v)
# วิธีเดียวกันแต่ใช้ทิลเซอร์แทนสเกลาร์
t1 = torch.Tensor([5.60])
w = torch.sub(t, t1)
print("Element-wise subtraction result:\n", w)
# อีกวิธีหนึ่ง สร้างทิลเซอร์ที่มีค่า 5.60 ทุกองค์ประกอบ
t2 = torch.Tensor([5.60, 5.60, 5.60, 5.60])
x = torch.sub(t, t2)
print("Element-wise subtraction result:\n", x)
ผลลัพธ์
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])
ตัวอย่างที่ 2: ลบทิลเซอร์ 1D ออกจากทิลเซอร์ 2D
import torch
# สร้างทิลเซอร์ 2D
T1 = torch.Tensor([[8, 7], [4, 5]])
# สร้างทิลเซอร์ 1D
T2 = torch.Tensor([10, 5])
print("T1:\n", T1)
print("T2:\n", T2)
# ลบทิลเซอร์ 1D ออกจาก 2D
v = torch.sub(T1, T2)
print("Element-wise subtraction result:\n", v)
ผลลัพธ์
T1: tensor([[8., 7.], [4., 5.]]) T2: tensor([10., 5.]) Element-wise subtraction result: tensor([[-2., 2.], [-6., 0.]])
ตัวอย่างที่ 3: ลบทิลเซอร์ 2D ออกจากทิลเซอร์ 1D
import torch
# สร้างทิลเซอร์ 2D
T1 = torch.Tensor([[1, 2], [4, 5]])
# สร้างทิลเซอร์ 1D
T2 = torch.Tensor([10, 5])
print("T1:\n", T1)
print("T2:\n", T2)
# ลบทิลเซอร์ 2D ออกจาก 1D
v = torch.sub(T2, T1)
print("Element-wise subtraction result:\n", v)
ผลลัพธ์
T1: tensor([[1., 2.], [4., 5.]]) T2: tensor([10., 5.]) Element-wise subtraction result: tensor([[9., 3.], [6., 0.]])
สังเกตว่าทิลเซอร์ผลลัพธ์เป็นทิลเซอร์ 2 มิติ
ตัวอย่างที่ 4: ลบทิลเซอร์ 2D ออกจากทิลเซอร์ 2D
import torch
# สร้างทิลเซอร์ 2D สองตัว
T1 = torch.Tensor([[8, 7], [3, 4]])
T2 = torch.Tensor([[0, 3], [4, 9]])
print("T1:\n", T1)
print("T2:\n", T2)
# ลบทิลเซอร์ 2D ทั้งสองตัว
v = torch.sub(T1, T2)
print("Element-wise subtraction result:\n", v)
ผลลัพธ์
T1: tensor([[8., 7.], [3., 4.]]) T2: tensor([[0., 3.], [4., 9.]]) Element-wise subtraction result: tensor([[ 8., 4.], [-1., -5.]])