Advertisement

Replace or modify gradient in TensorFlow

阅读量:

问题

我希望对 TensorFlow 中的某个操作或计算图的一部分梯度进行替换或调整,应当如何操作?

在特定场景下,这与 tf.stop_gradient() 所实现的功能存在差异:我们并非希望“插入一个操作,并在梯度计算过程中忽略该操作”,而是期望“仅在梯度计算阶段生效(即希望有一个仅在梯度计算时起作用的计算方式)”。

一个简单的示例如下:

在不改变前向传播过程的前提下,通过将梯度乘以一个固定数值的方式实现对梯度的缩放。

另一个示例如下:

在保持前向传播不变的前提下,将梯度限制在一个预设的区间范围内。

回答1

回答人:BlueSun
回答质量:很高

版本1
初始步骤应为自行编写梯度计算的相关函数,并将其成功集成至 tensorflow 系统中

复制代码
    @tf.RegisterGradient("CustomGrad") # 注册到tensorflow
    def _const_mul_grad(unused_op, grad):
      return 5.0 * grad
    
    
      
      
      
    
    
    
    AI写代码python
    
    运行

由于我们希望保持前向传播过程不变,因此接下来将采用之前注册的函数来替代原有的梯

全部评论 (0)

还没有任何评论哟~