【问题标题】:Pytorch - Stack dimension must be exactly the same?Pytorch - 堆栈尺寸必须完全相同?
【发布时间】:2018-10-27 21:39:43
【问题描述】:

在pytorch中,给定形状(1X11)的张量a和形状(1X11)btorch.stack((a,b),0)会给我一个形状为(2X11)的张量

但是,当a 的形状为(2X11)b 的形状为(1X11) 时,torch.stack((a,b),0) 将引发错误,参见。 “两个张量大小必须完全相同”。

因为这两个张量是模型的输出(包括梯度),我无法将它们转换为 numpy 以使用 np.stack()np.vstack()

是否有任何可能的解决方案来减少 GPU 内存使用量?

【问题讨论】:

标签: python-3.x reshape pytorch tensor


【解决方案1】:

您似乎想使用torch.cat()(沿现有维度连接张量)而不是torch.stack()(沿新维度连接/堆叠张量):

import torch

a = torch.randn(1, 42, 1, 1)
b = torch.randn(1, 42, 1, 1)

ab = torch.stack((a, b), 0)
print(ab.shape)
# torch.Size([2, 1, 42, 1, 1])

ab = torch.cat((a, b), 0)
print(ab.shape)
# torch.Size([2, 42, 1, 1])
aab = torch.cat((a, ab), 0)
print(aab.shape)
# torch.Size([3, 42, 1, 1])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 2021-11-08
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 2021-08-29
    • 2020-01-07
    相关资源
    最近更新 更多