【CNN训练梯度裁剪】

  • 梯度裁剪
    • 参考

    • 方法

      梯度裁剪(Gradient Clipping)是一种防止梯度爆炸或梯度消失的优化技术,它可以在反向传播过程中对梯度进行缩放或截断,使其保持在一个合理的范围内。梯度裁剪有两种常见的方法:

      1. 按照梯度的绝对值进行裁剪,即如果梯度的绝对值超过了一个阈值,就将其设置为该阈值的符号乘以该阈值。
      2. 按照梯度的范数进行裁剪,即如果梯度的范数超过了一个阈值,就将其按比例缩小,使其范数等于该阈值。例如,如果阈值为1,那么梯度的范数就是1。
    • pytorch实现

      import torch.nn as nn
       
      outputs = model(data)
      loss= loss_fn(outputs, target)
      optimizer.zero_grad()
      loss.backward()
      # 方法一
      torch.nn.utils.clip_grad_value_(model.parameters(), clip_value=0.5)
      # 方法二
      nn.utils.clip_grad_norm_(model.parameters(), max_norm=20, norm_type=2)	#! 在梯度更新前裁剪
      optimizer.step()
      
      # 获取梯度的范数
      # 对于模型的每个参数,计算其梯度的L2范数
      for param in model.parameters():
          grad_norm = torch.norm(param.grad, p=2)
          print(grad_norm)
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stsdddd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值