微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pytorch视图张量并缩小一维

如何解决pytorch视图张量并缩小一维

所以我有一个形状为[4,1,128,678]的4d张量,我想将其查看/重塑为[4,678,128]

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

关于变换张量的最佳操作的任何想法?查看/重塑?以及如何?

谢谢

解决方法

您还可以使用(写得更少和IMO清洁器):

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

如果您使用view,则会丢失尺寸信息(但也许正是您想要的),在这种情况下,它将是:

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

permute对张量进行重新排序,而shape仅给出不同的视图,对底层内存进行重构。您可以看到这两个操作in this StackOverflow answer之间的区别。

,

改为使用einops,它可以一圈执行所有操作并验证已知尺寸:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。