pytorch反向傳播inplace operation報錯解決方法

問題描述:
調(diào)試 pytorch 代碼報錯:
并且錯誤定位在 loss.backward() 這一行。
解決辦法:
首先考慮去除程序中的 inplace 操作,包括 += , -= 等
嘗試后仍然報上一條錯,還有另一條錯誤
這條錯誤添加如下語句就能消除:
嘗試在前饋計算的不同位置,對中間變量調(diào)用 .backward(),一步一步對錯誤進行溯源。(這個方法很棒)
定位到錯誤在于前饋計算中,沒給輸入變量添加 .detach()。因為是對參數(shù)求導(dǎo),輸入變量是不能修改的。修改之后問題消除。
Txing
標簽: