在訓練神經網路時,如果在一次迭代中多次使用同一個模塊,在反向傳播時模塊的梯度是否需要特殊處理?
例如:

一個可變形補償在該模型中使用了 3 次,這意味著它們共享相同的權重。
當我使用時會發生什么loss.backward()?會loss.backward()正常作業嗎?
uj5u.com熱心網友回復:
美好的事物 自動畢業而backward pass 是底層框架不是“演算法的”,而是數學的:它實作了導數的鏈式法則。因此,沒有“共享權重”或“加權不同層”的“演算法”考慮,這是純數學。向后傳遞以純數學方式提供損失函式的導數與權重。
共享權重可以在全球范圍內完成(例如,在訓練Saimese 網路時),在“層級”(如您的示例中),但也可以在層內完成。當您考慮它時,卷積層和回圈層是本地共享權重的一種奇特方式。
自然,pytorch(以及所有其他 DL 框架)可以輕松處理這些情況。
只要你的“可變形補償”層被正確實作——pytorch 會以數學上正確的方式為你處理梯度,這要歸功于鏈式法則。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/381672.html
