2024-04-24 02:47:03 发布
网友
所以我有一个4d张量,形状为[4,1,128,678],我想把它看作[4,678,128]
[4,1,128,678]
[4,678,128]
我必须对多个张量这样做,其中最后一个形状值678并不总是已知的,并且可能不同,因此[4,1,128,575]也应该转到[4,575,128]
[4,1,128,575]
[4,575,128]
你知道转换张量的最佳操作是什么吗?查看/重塑?怎么做
谢谢
您还可以使用(少写和更干净):
# x.shape == (4, 1, 128, 678) x.squeeze().permute(0, 2, 1)
如果您使用view,您将丢失维度信息(但可能这正是您想要的),在这种情况下,它将是:
view
x.squeeze().view(4, -1, 128)
permute重新排列张量,而形状只提供不同的视图,而不重构底层记忆。您可以看到这两个操作in this StackOverflow answer之间的差异
permute
改用einops,它可以一次完成所有操作并验证已知尺寸:
from einops import reshape y = rearrange(x, 'x 1 y z -> x z y', x=4, y=128)
您还可以使用(少写和更干净):
如果您使用
view
,您将丢失维度信息(但可能这正是您想要的),在这种情况下,它将是:permute
重新排列张量,而形状只提供不同的视图,而不重构底层记忆。您可以看到这两个操作in this StackOverflow answer之间的差异改用einops,它可以一次完成所有操作并验证已知尺寸:
相关问题 更多 >
编程相关推荐