ใน 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.]])