梯度裁剪Grandient Clipping
生活随笔
收集整理的這篇文章主要介紹了
梯度裁剪Grandient Clipping
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
神經網絡是通過梯度下降來學習的。
梯度爆炸問題一般會隨著網絡層數的增加而變得越來越明顯。如果發生梯度爆炸,那么就是學過了,會直接跳過最優解。因此需要梯度裁剪,避免模型越過最優點。
梯度裁剪有兩種方法
- 確定一個范圍,參數的gradient超過,直接裁剪。比較直接,對應于pytorch中的nn.utils.clip_grad_value(parameters, clip_value). 將所有的參數剪裁到 [ -clip_value, clip_value]
- 根據若干參數的gradient組成的vector的L2 Norm進行裁剪。更常見,對應于pytorch中clip_grad_norm_(parameters, max_norm, norm_type=2)。 如果所有參數的gradient組成的向量的L2 norm 大于max norm,那么需要根據L2 norm/max_norm 進行縮放。從而使得L2 norm 小于預設的 clip_norm
梯度裁剪使用位置
在backward得到梯度之后,step()更新之前,使用梯度剪裁,在完成計算完梯度后,進行裁剪,然后進行網絡更新的過程。
總結
以上是生活随笔為你收集整理的梯度裁剪Grandient Clipping的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 自定义View 实例2_
- 下一篇: Cesium,ClippingPlane