同:
從功能上來看,它們的作用是相同的,都是將原張量元素(按順序)重組爲新的shape。
異:
我的理解是,有兩種情況:
- 如果一個tensor原本在內存中是連續的,此時可以直接使用view(),也可以直接使用reshape()方法。
- 如果原tensor經過了transpose之類的操作,改變了tensor中的元素(比如交換了元素的位置),但是tensor在內存空間中的存儲位置沒有改變,那麼變換後的tensor在內存空間中的存儲就不連續了。
此時若想reshape變換後的tensor,可以有兩種方法:- 一是先調用.contiguous()方法,使tensor的元素在內存空間中連續,然後調用.view();
- 二是直接調用.reshape(),此時由於tensor的元素內存地址不連續,reshape方法返回的就不是原tensor的view,而是原tensor的一份copy。
以上僅爲個人理解,如有不足歡迎指正。
參考:
https://blog.csdn.net/weixin_43002433/article/details/104299896