เราสามารถรวมเมตริกซ์ตั้งแต่สองตัวขึ้นไปโดยใช้ torch.cat() และ torch.stack() . torch.cat() ใช้เพื่อเชื่อมเทนเซอร์ตั้งแต่สองตัวขึ้นไป ในขณะที่ torch.stack() ใช้ในการซ้อนเทนเซอร์ เราสามารถเชื่อมเทนเซอร์ในมิติต่างๆ ได้ เช่น 0 มิติ -1 มิติ
ทั้ง torch.cat() และ torch.stack() ใช้สำหรับเชื่อมเทนเซอร์ ดังนั้น อะไรคือความแตกต่างพื้นฐานระหว่างสองวิธีนี้?
-
torch.cat() เชื่อมลำดับของเทนเซอร์ตามมิติที่มีอยู่ จึงไม่เปลี่ยนมิติของเทนเซอร์
-
torch.stack() ซ้อนเทนเซอร์ตามมิติใหม่ ส่งผลให้มิติเพิ่มขึ้น
ขั้นตอน
-
นำเข้าไลบรารีที่จำเป็น ในตัวอย่างต่อไปนี้ ไลบรารี Python ที่จำเป็นคือ ไฟฉาย . ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งแล้ว
-
สร้างเมตริกซ์ PyTorch ตั้งแต่สองตัวขึ้นไปแล้วพิมพ์ออกมา
-
ใช้ torch.cat() หรือ torch.stack() เพื่อเข้าร่วมเทนเซอร์ที่สร้างขึ้นข้างต้น ระบุมิติข้อมูล เช่น 0, -1 เพื่อรวมเทนเซอร์ในมิติใดมิติหนึ่ง
-
สุดท้าย ให้พิมพ์เทนเซอร์แบบต่อหรือแบบเรียงซ้อน
ตัวอย่างที่ 1
# Python program to join tensors in PyTorch # import necessary library import torch # create tensors T1 = torch.Tensor([1,2,3,4]) T2 = torch.Tensor([0,3,4,1]) T3 = torch.Tensor([4,3,2,5]) # print above created tensors print("T1:", T1) print("T2:", T2) print("T3:", T3) # join (concatenate) above tensors using torch.cat() T = torch.cat((T1,T2,T3)) # print final tensor after concatenation print("T:",T)
ผลลัพธ์
เมื่อคุณเรียกใช้โค้ด Python 3 ด้านบน โค้ดจะสร้างเอาต์พุตต่อไปนี้
T1: tensor([1., 2., 3., 4.]) T2: tensor([0., 3., 4., 1.]) T3: tensor([4., 3., 2., 5.]) T: tensor([1., 2., 3., 4., 0., 3., 4., 1., 4., 3., 2., 5.])
ตัวอย่างที่ 2
# import necessary library import torch # create tensors T1 = torch.Tensor([[1,2],[3,4]]) T2 = torch.Tensor([[0,3],[4,1]]) T3 = torch.Tensor([[4,3],[2,5]]) # print above created tensors print("T1:\n", T1) print("T2:\n", T2) print("T3:\n", T3) print("join(concatenate) tensors in the 0 dimension") T = torch.cat((T1,T2,T3), 0) print("T:\n", T) print("join(concatenate) tensors in the -1 dimension") T = torch.cat((T1,T2,T3), -1) print("T:\n", T)
ผลลัพธ์
เมื่อคุณเรียกใช้โค้ด Python 3 ด้านบน โค้ดจะสร้างเอาต์พุตต่อไปนี้
T1: tensor([[1., 2.], [3., 4.]]) T2: tensor([[0., 3.], [4., 1.]]) T3: tensor([[4., 3.], [2., 5.]]) join(concatenate) tensors in the 0 dimension T: tensor([[1., 2.], [3., 4.], [0., 3.], [4., 1.], [4., 3.], [2., 5.]]) join(concatenate) tensors in the -1 dimension T: tensor([[1., 2., 0., 3., 4., 3.], [3., 4., 4., 1., 2., 5.]])
ในตัวอย่างข้างต้น เทนเซอร์ 2 มิติจะถูกต่อกันตามขนาด 0 และ -1 การต่อกันในมิติข้อมูล 0 จะเพิ่มจำนวนแถว โดยให้จำนวนคอลัมน์ไม่เปลี่ยนแปลง
ตัวอย่างที่ 3
# Python program to join tensors in PyTorch # import necessary library import torch # create tensors T1 = torch.Tensor([1,2,3,4]) T2 = torch.Tensor([0,3,4,1]) T3 = torch.Tensor([4,3,2,5]) # print above created tensors print("T1:", T1) print("T2:", T2) print("T3:", T3) # join above tensor using "torch.stack()" print("join(stack) tensors") T = torch.stack((T1,T2,T3)) # print final tensor after join print("T:\n",T) print("join(stack) tensors in the 0 dimension") T = torch.stack((T1,T2,T3), 0) print("T:\n", T) print("join(stack) tensors in the -1 dimension") T = torch.stack((T1,T2,T3), -1) print("T:\n", T)
ผลลัพธ์
เมื่อคุณเรียกใช้โค้ด Python 3 ด้านบน โค้ดจะสร้างเอาต์พุตต่อไปนี้
T1: tensor([1., 2., 3., 4.]) T2: tensor([0., 3., 4., 1.]) T3: tensor([4., 3., 2., 5.]) join(stack) tensors T: tensor([[1., 2., 3., 4.], [0., 3., 4., 1.], [4., 3., 2., 5.]]) join(stack) tensors in the 0 dimension T: tensor([[1., 2., 3., 4.], [0., 3., 4., 1.], [4., 3., 2., 5.]]) join(stack) tensors in the -1 dimension T: tensor([[1., 0., 4.], [2., 3., 3.], [3., 4., 2.], [4., 1., 5.]])
ในตัวอย่างข้างต้น คุณจะสังเกตได้ว่าเทนเซอร์ 1 มิติซ้อนกัน และเมตริกซ์สุดท้ายเป็นเมตริกซ์ 2 มิติ
ตัวอย่างที่ 4
# import necessary library import torch # create tensors T1 = torch.Tensor([[1,2],[3,4]]) T2 = torch.Tensor([[0,3],[4,1]]) T3 = torch.Tensor([[4,3],[2,5]]) # print above created tensors print("T1:\n", T1) print("T2:\n", T2) print("T3:\n", T3) print("Join (stack)tensors in the 0 dimension") T = torch.stack((T1,T2,T3), 0) print("T:\n", T) print("Join(stack) tensors in the -1 dimension") T = torch.stack((T1,T2,T3), -1) print("T:\n", T)
ผลลัพธ์
เมื่อคุณเรียกใช้โค้ด Python 3 ด้านบน โค้ดจะสร้างเอาต์พุตต่อไปนี้
T1: tensor([[1., 2.], [3., 4.]]) T2: tensor([[0., 3.], [4., 1.]]) T3: tensor([[4., 3.], [2., 5.]]) Join (stack)tensors in the 0 dimension T: tensor([[[1., 2.], [3., 4.]], [[0., 3.], [4., 1.]], [[4., 3.], [2., 5.]]]) Join(stack) tensors in the -1 dimension T: tensor([[[1., 0., 4.], [2., 3., 3.]], [[3., 4., 2.], [4., 1., 5.]]])
ในตัวอย่างข้างต้น คุณจะสังเกตเห็นว่ามีการรวมเมตริกซ์ 2 มิติ (ซ้อนกัน) เพื่อสร้างเมตริกซ์ 3 มิติ