我对Torch.stack有疑问
我有2个张量,a.shape =(2,3,4)和b.shape =(2,3)。 如何在没有就地操作的情况下堆叠它们?
答案 0 :(得分:8)
堆叠需要相同数量的尺寸。一种方法是解压和堆叠。例如:
a.size() # 2, 3, 4
b.size() # 2, 3
b = torch.unsqueeze(b, dim=2) # 2, 3, 1
# torch.unsqueeze(b, dim=-1) does the same thing
torch.stack([a, b], dim=2) # 2, 3, 5
答案 1 :(得分:8)
使用pytorch 1.2或1.4 arjoonn的答案对我不起作用。
我将torch.stack
与pytorch 1.2和1.4结合使用,而不是torch.cat
:
>>> import torch
>>> a = torch.randn([2, 3, 4])
>>> b = torch.randn([2, 3])
>>> b = b.unsqueeze(dim=2)
>>> b.shape
torch.Size([2, 3, 1])
>>> torch.cat([a, b], dim=2).shape
torch.Size([2, 3, 5])
如果要使用torch.stack
,张量的尺寸必须相同:
>>> a = torch.randn([2, 3, 4])
>>> b = torch.randn([2, 3, 4])
>>> torch.stack([a, b]).shape
torch.Size([2, 2, 3, 4])
这里是另一个示例:
>>> t = torch.tensor([1, 1, 2])
>>> stacked = torch.stack([t, t, t], dim=0)
>>> t.shape, stacked.shape, stacked
(torch.Size([3]),
torch.Size([3, 3]),
tensor([[1, 1, 2],
[1, 1, 2],
[1, 1, 2]]))
使用stack
,您可以使用dim
参数,该参数可用于指定将等张量的张量堆叠在哪个维度上。
答案 2 :(得分:0)
假设您有两个张量a,b,它们的尺寸相等,即a(A,B,C)因此b(A,B,C) 一个例子
let myArray = [3]
console.log( ...myArray ) // -> 3
console.log( ...[3] ) // -> 3
如果他们不是同一个昏暗的人,那就不会行动。小心!