對pytorch中view與reshape的理解

同:

從功能上來看,它們的作用是相同的,都是將原張量元素(按順序)重組爲新的shape。

異:

我的理解是,有兩種情況:

  1. 如果一個tensor原本在內存中是連續的,此時可以直接使用view(),也可以直接使用reshape()方法。
  2. 如果原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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章