循環神經網絡——裁剪梯度(應對梯度爆炸)

循環神經網絡中比較容易出現梯度衰減或梯度爆炸,爲了應對梯度爆炸,可以進行裁剪梯度。假設把所有模型參數梯度的元素拼接成一個向量g,並設裁剪的閾值是θ\theta。裁剪後的梯度min(θg,1)gmin(\frac{\theta}{||g||},1)gL2L_2範數不超過θ\theta

通過代碼進行演示:

def grad_clipping(params, theta)  #paras是模型參數,theta是閾值
    norm = 0
    for param in params:
        norm += (param ** 2).sum()
    norm = norm.sqrt()
    if norm > theta:
        for param in params:
            param *= theta/norm
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章