在pytorch中,给定a
形状(1X11)
和形状b
(1X11)
的张量torch.stack((a,b),0)
,(2X11)
会给我一个形状张量{{1} }}
但是,如果a
的形状(2X11)
且b
的形状为(1X11)
,则torch.stack((a,b),0)
会引发错误。 “两个张量大小必须完全相同”。
因为两个张量是模型的输出(包含渐变),所以我无法将它们转换为numpy以使用np.stack()
或np.vstack()
。
是否有任何可能的解决方案至少使用GPU内存?
答案 0 :(得分:10)
您似乎想要使用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])