如何使用torch.stack函数

时间:2018-09-12 06:19:48

标签: python pytorch tensor

我对Torch.stack有疑问

我有2个张量,a.shape =(2,3,4)和b.shape =(2,3)。 如何在没有就地操作的情况下堆叠它们

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

如果他们不是同一个昏暗的人,那就不会行动。小心!