TensorFlow中的梯度裁剪(Gradient Clipping)

本文介绍了深度学习中解决梯度爆炸问题的TensorFlow函数,包括tf.clip_by_norm、tf.clip_by_global_norm、tf.clip_by_average_norm和tf.clip_by_value,通过实例解析了它们的工作原理和使用方法,确保优化过程的数值稳定性。
摘要由CSDN通过智能技术生成

梯度爆炸是深度学习中十分常见的现象,有时会导致寻优过程不收敛,或者算出来的结果干脆直接溢出,例如在Python里都是Nan,使迭代无法继续下去。TensorFlow里提供了一系列简单可行的梯度裁剪函数,方便我们对超过阈值的梯度值进行规约,使优化算法相对更加数值稳定。
TensorFlow里提供的几个Gradient Clipping函数都是以clip_by开头,分别是tf.clip_by_normtf.clip_by_global_normtf.clip_by_average_normtf.clip_by_value,下面依次逐个介绍。


1. tf.clip_by_norm

使用方法:

tf.clip_by_norm(t, clip_norm, axes=None, name=None)
"""
t: 要裁剪的梯度张量
clip_norm: 裁剪阈值,一个合适的正数
axes: 需要进行规约的维度,为None时,则对张量t的所有元素做规约
name:操作名称
"""

规约公式如下:

t={ tclip_norm||t||2 ,t ,||t||2clip_normotherwise t = { t ∗ c l i p _ n o r m | | t | | 2   , | | t | | 2 ≥ c l i p _ n o r m t   , otherwise

其中: ||t|

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值