一、torch.cat与torch.stack的区别
torch.cat
用于在给定的维度上连接多个张量,它将这些张量沿着指定维度堆叠在一起。
torch.stack
用于在新的维度上堆叠多个张量,它会创建一个新的维度,并将这些张量沿着这个新维度堆叠在一起。
二、torch.cat
Example1:
py
import torch
tensor1 = torch.tensor([[1, 2], [3, 4]])
tensor2 = torch.tensor([[5, 6], [7, 8]])
result1 = torch.cat((tensor1, tensor2), dim=0)
result2 = torch.cat((tensor1, tensor2), dim=1)
print(result1.shape)
print(result1)
print(result2.shape)
print(result2)
lua
torch.Size([4, 2])
tensor([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
torch.Size([2, 4])
tensor([[1, 2, 5, 6],
[3, 4, 7, 8]])
三、torch.stack
Example1:
py
import torch
tensor1 = torch.tensor([1, 2, 3])
tensor2 = torch.tensor([4, 5, 6])
result1 = torch.stack((tensor1, tensor2), dim=0)
result2 = torch.stack((tensor1, tensor2), dim=1)
print(result1.shape)
print(result1)
print(result2.shape)
print(result2)
lua
torch.Size([2, 3])
tensor([[1, 2, 3],
[4, 5, 6]])
torch.Size([3, 2])
tensor([[1, 4],
[2, 5],
[3, 6]])
Example2:
py
import torch
tensor1 = torch.tensor([[1, 2], [3, 4], [5, 6]])
tensor2 = torch.tensor([[7, 8], [9, 10], [11, 12]])
tensor3 = torch.tensor([[13, 14], [15, 16], [17, 18]])
result1 = torch.stack((tensor1, tensor2, tensor3), dim=0)
result2 = torch.stack((tensor1, tensor2, tensor3), dim=1)
print(result1.shape)
print(result1)
print(result2.shape)
print(result2)
lua
torch.Size([3, 3, 2])
tensor([[[ 1, 2],
[ 3, 4],
[ 5, 6]],
[[ 7, 8],
[ 9, 10],
[11, 12]],
[[13, 14],
[15, 16],
[17, 18]]])
torch.Size([3, 3, 2])
tensor([[[ 1, 2],
[ 7, 8],
[13, 14]],
[[ 3, 4],
[ 9, 10],
[15, 16]],
[[ 5, 6],
[11, 12],
[17, 18]]])