You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow custom_gradient中dy计算逻辑及梯度乘clip_norm原因求解

问题1:backward函数接收dy=1.0的计算逻辑

反向传播遵循链式求导规则,你调用t.gradient(output, v)时,output是整个计算图的最终标量输出:

  • 标量对自身求导的结果固定为1,即d(output)/d(output) = 1.0,这个值就是传递给clip_gradients反向函数的上游梯度dy
  • 由于clip_gradients是计算图的最后一层,直接输出最终的output,因此反向传播时顶层梯度1.0会直接传入backward函数

问题2:最终梯度乘以0.6的原因

tf.custom_gradient装饰器会完全覆盖被装饰函数的默认梯度计算逻辑,改为使用你定义的backward函数返回值作为梯度,整体计算逻辑如下:

  1. 完整的链式求导路径为:最终梯度 = d(output)/d(clip输入) * d(clip输入)/d(v)
  2. 其中clip输入是v*v,自动微分得到d(clip输入)/d(v) = 2*v = 6
  3. 你自定义的d(output)/d(clip输入)是backward函数的返回值:tf.clip_by_norm(dy, 0.6),传入的dy=1.0裁剪后结果为0.6
  4. 两者相乘得到最终梯度:6 * 0.6 = 3.6,和代码运行输出一致

内容的提问来源于stack exchange,提问作者Mins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 12:42:00