Computer >> Máy Tính >  >> Lập trình >> Python

Làm thế nào để tham gia tensors trong PyTorch?

Chúng tôi có thể kết hợp hai hoặc nhiều bộ căng bằng cách sử dụng torch.cat () torch.stack () . torch.cat () được sử dụng để nối hai hoặc nhiều tensor, trong khi torch.stack () được sử dụng để xếp chồng lên nhau. Chúng ta có thể nối các tensors theo các chiều khác nhau như chiều 0, chiều -1.

Cả torch.cat () torch.stack () được sử dụng để tham gia các tensors. Vậy, sự khác biệt cơ bản giữa hai phương pháp này là gì?

  • torch.cat () nối một chuỗi các tenxơ dọc theo một kích thước hiện có, do đó không thay đổi kích thước của các tenxơ.

  • torch.stack () xếp chồng các tensors dọc theo một kích thước mới, do đó, nó làm tăng kích thước.

Các bước

  • Nhập thư viện được yêu cầu. Trong tất cả các ví dụ sau, thư viện Python bắt buộc là torch . Đảm bảo rằng bạn đã cài đặt nó.

  • Tạo hai hoặc nhiều bộ căng PyTorch và in chúng.

  • Sử dụng torch.cat () hoặc torch.stack () để nối các tensor được tạo ở trên. Cung cấp thứ nguyên, tức là 0, -1, để nối các tensors trong một thứ nguyên cụ thể

  • Cuối cùng, in các tensors đã nối hoặc xếp chồng lên nhau.

Ví dụ 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)

Đầu ra

Khi bạn chạy mã Python 3 ở trên, nó sẽ tạo ra kết quả sau

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

Ví dụ 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)

Đầu ra

Khi bạn chạy mã Python 3 ở trên, nó sẽ tạo ra kết quả sau

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

Trong ví dụ trên, các căng 2D được nối với nhau dọc theo các kích thước 0 và -1. Việc kết hợp theo thứ nguyên 0 sẽ làm tăng số lượng hàng, giữ nguyên số lượng cột.

Ví dụ 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)

Đầu ra

Khi bạn chạy mã Python 3 ở trên, nó sẽ tạo ra kết quả sau

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

Trong ví dụ trên, bạn có thể nhận thấy rằng tensor 1D được xếp chồng lên nhau và tensor cuối cùng là tensor 2D.

Ví dụ 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)

Đầu ra

Khi bạn chạy mã Python 3 ở trên, nó sẽ tạo ra kết quả sau.

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

Trong ví dụ trên, bạn có thể nhận thấy rằng các bộ căng 2D được nối (xếp chồng lên nhau) để tạo ra một bộ căng 3D.