tensorflow如何实现自定义梯度反向传播

  介绍

这篇文章主要介绍了tensorflow如何实现自定义梯度反向传播,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

<强>以签函数为例:

 tensorflow如何实现自定义梯度反向传播

符号函数可以对数值进行二值化,但在梯度反向传播是不好处理,一般采用一个近似函数的梯度作为代替,如上图的Htanh。在[1]直接梯度为1,其他为0。

#使用修饰器,建立梯度反向传播函数。其中op.input包含输入值,输出值,毕业生包含上层传来的梯度   @tf.RegisterGradient (“QuantizeGrad")   def  sign_grad (op,研究生):=,,input  op.inputs [0]=,cond  (input>=1), (input<=1)=,,zeros  tf.zeros_like(研究生)   ,return  tf.where(电导率,校友,,0)   ,   #使用的上下文管理器覆盖原始的迹象梯度函数   def 二进制(输入):=,x 输入   ,with  tf.get_default_graph () .gradient_override_map ({“Sign": & # 39; QuantizeGrad& # 39;}):   时间=x 才能;tf.sign (x)   return  x   ,   #使用   x =,二进制(x)

感谢你能够认真阅读完这篇文章,希望小编分享的“tensorflow如何实现自定义梯度反向传播”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

tensorflow如何实现自定义梯度反向传播