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

จะเข้าร่วมเทนเซอร์ใน PyTorch ได้อย่างไร?


เราสามารถรวมเมตริกซ์ตั้งแต่สองตัวขึ้นไปโดยใช้ 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 มิติ