回答
老师讲到torch中reshape和view是一样的,看了torch文档,并实践了一下,事实上还是有一点点区别的,区别在于被操作的那个tensor是否是连续的,当连续时两者一致,当不连续时reshape会返回新的tensor,该tensor与原来的再无关联,修改reshape返回的tensor不会变更原来的,比如:
a = t.rand(3,3)
b = a.permute(1,0)
c = b.reshape(9)
c【0】=100 #这里观察一下a,b对应位置的数值
评论
可以参考这个网页的第一个回答:https://stackoverflow.com/questions/49643225/whats-the-difference-between-reshape-and-view-in-pytorch view只能作用在连续的张量上(张量中元素的内存地址是连续的)。而reshape连续or非连续都可以。调用x.reshape的时候,如果x在内存中是连续的,那么x.reshape会返回一个view(原地修改,此时内存地址不变),否则就会返回一个新的张量(这时候内存地址变了)。所以推荐的做法是,想要原地修改就直接view,否则就先clone()再改。