如何解决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 举报,一经查实,本站将立刻删除。