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

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

ใน PyTorch เราใช้เมธอด torch.mul() เพื่อคูณทิลเซอร์แบบองค์ประกอบ (element-wise multiplication) เมธอดนี้จะคูณองค์ประกอบที่ตรงกันของทิลเซอร์ทั้งสอง เราสามารถคูณทิลเซอร์ได้สองตัวขึ้นไป รวมถึงคูณสเกลาร์กับทิลเซอร์ และทิลเซอร์ที่มีมิติเท่ากันหรือต่างกันก็ได้ ผลลัพธ์จะมีมิติเท่ากับทิลเซอร์ที่มีมิติสูงกว่า การคูณแบบนี้ยังเรียกอีกอย่างว่า Hadamard product

ขั้นตอนการทำงาน

  • นำเข้าไลบรารีที่จำเป็น ในตัวอย่างทั้งหมดจะใช้ไลบรารี torch โปรดตรวจสอบว่าติดตั้งแล้ว

  • กำหนดทิลเซอร์ PyTorch สองตัวขึ้นไปและพิมพ์ค่า ถ้าต้องการคูณกับสเกลาร์ ให้กำหนดค่าสเกลาร์ด้วย

  • ใช้ torch.mul() คูณทิลเซอร์สองตัวขึ้นไป และกำหนดผลลัพธ์ให้ตัวแปรใหม่ สามารถคูณสเกลาร์กับทิลเซอร์ได้เช่นกัน การคูณแบบนี้ไม่เปลี่ยนแปลงทิลเซอร์ต้นฉบับ

  • พิมพ์ทิลเซอร์ผลลัพธ์

ตัวอย่างที่ 1: คูณสเกลาร์กับทิลเซอร์

โปรแกรมต่อไปนี้แสดงวิธีคูณสเกลาร์กับทิลเซอร์ สามารถทำได้หลายวิธีที่ให้ผลลัพธ์เหมือนกัน

# โปรแกรม Python สำหรับคูณทิลเซอร์แบบองค์ประกอบ
import torch

# สร้างทิลเซอร์
t = torch.Tensor([2.05, 2.03, 3.8, 2.29])
print("Original Tensor t:\n", t)

# คูณค่าสเกลาร์กับทิลเซอร์
v = torch.mul(t, 7)
print("Element-wise multiplication result:\n", v)

# วิธีเดียวกันแต่ใช้ทิลเซอร์แทนสเกลาร์
t1 = torch.Tensor([7])
w = torch.mul(t, t1)
print("Element-wise multiplication result:\n", w)

# อีกวิธีหนึ่ง สร้างทิลเซอร์ที่มีค่า 7 ทุกองค์ประกอบ
t2 = torch.Tensor([7, 7, 7, 7])
x = torch.mul(t, t2)
print("Element-wise multiplication result:\n", x)

ผลลัพธ์

Original Tensor t:      tensor([2.0500, 2.0300, 3.8000, 2.2900])
Element-wise multiplication result:      tensor([14.3500, 14.2100, 26.6000, 16.0300])
Element-wise multiplication result:      tensor([14.3500, 14.2100, 26.6000, 16.0300])
Element-wise multiplication result:      tensor([14.3500, 14.2100, 26.6000, 16.0300])

ตัวอย่างที่ 2: คูณทิลเซอร์ 2D กับทิลเซอร์ 1D

โปรแกรมนี้แสดงการคูณทิลเซอร์ 2 มิติกับทิลเซอร์ 1 มิติ

import torch

# สร้างทิลเซอร์ 2D
T1 = torch.Tensor([[3, 2], [7, 5]])
# สร้างทิลเซอร์ 1D
T2 = torch.Tensor([10, 8])
print("T1:\n", T1)
print("T2:\n", T2)

# คูณทิลเซอร์ 1D กับ 2D
v = torch.mul(T1, T2)
print("Element-wise multiplication result:\n", v)

ผลลัพธ์

T1: tensor([[3., 2.], [7., 5.]])
T2: tensor([10., 8.])
Element-wise multiplication result: tensor([[30., 16.], [70., 40.]])

ตัวอย่างที่ 3: คูณทิลเซอร์ 2D กับทิลเซอร์ 2D

โปรแกรมนี้แสดงการคูณทิลเซอร์ 2 มิติทั้งคู่

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.mul(T1, T2)
print("Element-wise multiplication result:\n", v)

ผลลัพธ์

T1: tensor([[8., 7.], [3., 4.]])
T2: tensor([[0., 3.], [4., 9.]])
Element-wise multiplication result: tensor([[ 0., 21.], [12., 36.]])