Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีลบทิลเซอร์แบบองค์ประกอบ (Element-wise Subtraction) ใน PyTorch

ในการลบทิลเซอร์แบบองค์ประกอบ เราใช้เมธอด 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.]])