torch.nn.utils.clip_grad_norm_(parameters, max_norm, norm_type=2)
1.(引用:【深度學習】RNN中梯度消失的解決方案(LSTM) )html
梯度裁剪原理:既然在BP過程當中會產生梯度消失(就是偏導無限接近0,致使長時記憶沒法更新),那麼最簡單粗暴的方法,設定閾值,當梯度小於閾值時,更新的梯度爲閾值,以下圖所示:python
P.S.在原博中,評論中有提到,經常使用的梯度裁剪的方法是限制上限,針對梯度爆炸不收斂的狀況,和做者寫的相反。我理解的大概是「梯度裁剪解決的是梯度消失或爆炸的問題,即設定閾值」。函數
2. 函數定義:裁剪可迭代參數的漸變範數。範數是在全部梯度一塊兒計算的,就好像它們被鏈接成單個矢量同樣。漸變是就地修改的。學習
Parameters:spa
Returns:參數的整體範數(做爲單個向量來看)(原文:Total norm of the parameters (viewed as a single vector).).net