pytorch--切斷梯度的方法

方法

  1. 調用tensor的data屬性
  2. 調用tensor的detach()函數
  3. 調用clone()可行嗎?不可行

驗證

先寫結論:.data 和.detach只取出本體tensor數據,捨棄了grad,grad_fn等額外反向圖計算過程需保存的額外信息。但是.data所創建的tensor與原tensor的內存是共享的,也就是說改變二者任一變量,另一個變量的內容也會發生同樣的改變。

data屬性 與 detach()函數

在這裏插入圖片描述
進一步,當我調用.backward()時會發生錯誤:

  • .data:

    在這裏插入圖片描述

  • .detach()
    在這裏插入圖片描述

clone()函數驗證

在這裏插入圖片描述
如上所示,clone()後的結果仍然requires_grad。所以並不能切斷梯度

參考資料

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