ในการปรับขนาดทิลเซอร์ PyTorch เราใช้เมธอด .view() สามารถเพิ่มหรือลดมิติของทิลเซอร์ได้ แต่ต้องคำนึงว่า จำนวนองค์ประกอบทั้งหมดต้องเท่ากัน ก่อนและหลังการปรับขนาด
ขั้นตอนการทำงาน
นำเข้าไลบรารี torch
สร้างทิลเซอร์ PyTorch และพิมพ์ค่า
ใช้ .view() ปรับขนาดทิลเซอร์ และกำหนดผลลัพธ์ให้ตัวแปร .view() ไม่เปลี่ยนทิลเซอร์ต้นฉบับ แต่ให้มุมมอง (view) ใหม่กับขนาดที่ต้องการ
พิมพ์ทิลเซอร์หลังปรับขนาด
ตัวอย่างที่ 1: ปรับขนาดทิลเซอร์ 1D เป็น 2D
import torch
# สร้างทิลเซอร์
T = torch.Tensor([1, 2, 3, 4, 5, 6])
print(T)
# ปรับขนาด T เป็น 2x3
x = T.view(2, 3)
print("Tensor after resize:\n", x)
# วิธีอื่น: ใช้ -1 ให้ PyTorch คำนวณมิตินั้นอัตโนมัติ
x = T.view(-1, 3)
print("Tensor after resize:\n", x)
# อีกวิธี: ระบุมิติแรกเป็น 2 ให้คำนวณมิติที่สอง
x = T.view(2, -1)
print("Tensor after resize:\n", x)
ผลลัพธ์
tensor([1., 2., 3., 4., 5., 6.]) Tensor after resize: tensor([[1., 2., 3.], [4., 5., 6.]]) Tensor after resize: tensor([[1., 2., 3.], [4., 5., 6.]]) Tensor after resize: tensor([[1., 2., 3.], [4., 5., 6.]])
ตัวอย่างที่ 2: ปรับขนาดทิลเซอร์ 4x3 ให้เป็นรูปแบบต่างๆ
import torch
# สร้างทิลเซอร์ขนาด 4x3
T = torch.Tensor([[1, 2, 3], [2, 1, 3], [2, 3, 5], [5, 6, 4]])
print(T)
# ปรับขนาด T เป็น 3x4
x = T.view(-1, 4)
print("Tensor after resize:\n", x)
# อีกวิธี ปรับเป็น 3x4
x = T.view(3, -1)
print("Tensor after resize:\n", x)
# ปรับขนาด T เป็น 2x6
x = T.view(2, -1)
print("Tensor after resize:\n", x)
ผลลัพธ์
tensor([[1., 2., 3.], [2., 1., 3.], [2., 3., 5.], [5., 6., 4.]]) Tensor after resize: tensor([[1., 2., 3., 2.], [1., 3., 2., 3.], [5., 5., 6., 4.]]) Tensor after resize: tensor([[1., 2., 3., 2.], [1., 3., 2., 3.], [5., 5., 6., 4.]]) Tensor after resize: tensor([[1., 2., 3., 2., 1., 3.], [2., 3., 5., 5., 6., 4.]])
หมายเหตุ: .view() จะทำงานได้ก็ต่อเมื่อทิลเซอร์มีหน่วยความจำต่อเนื่อง (contiguous) หากไม่ต่อเนื่อง ให้ใช้ .reshape() แทน