pytorch视图张量与约化一维

2024-04-24 02:47:03 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个4d张量,形状为[4,1,128,678],我想把它看作[4,678,128]

我必须对多个张量这样做,其中最后一个形状值678并不总是已知的,并且可能不同,因此[4,1,128,575]也应该转到[4,575,128]

你知道转换张量的最佳操作是什么吗?查看/重塑?怎么做

谢谢


Tags: 形状重塑
2条回答

您还可以使用(少写和更干净):

# x.shape == (4, 1, 128, 678)
x.squeeze().permute(0, 2, 1)

如果您使用view,您将丢失维度信息(但可能这正是您想要的),在这种情况下,它将是:

x.squeeze().view(4, -1, 128)

permute重新排列张量,而形状只提供不同的视图,而不重构底层记忆。您可以看到这两个操作in this StackOverflow answer之间的差异

改用einops,它可以一次完成所有操作并验证已知尺寸:

from einops import reshape
y = rearrange(x, 'x 1 y z -> x z y', x=4, y=128)

相关问题 更多 >