tensorflow 实现自定义梯度反向传播代码


Posted in Python onFebruary 10, 2020

以sign函数为例:

tensorflow 实现自定义梯度反向传播代码

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

#使用修饰器,建立梯度反向传播函数。其中op.input包含输入值、输出值,grad包含上层传来的梯度
@tf.RegisterGradient("QuantizeGrad")
def sign_grad(op, grad):
 input = op.inputs[0]
 cond = (input>=-1)&(input<=1)
 zeros = tf.zeros_like(grad)
 return tf.where(cond, grad, zeros)
 
#使用with上下文管理器覆盖原始的sign梯度函数
def binary(input):
 x = input
 with tf.get_default_graph().gradient_override_map({"Sign":'QuantizeGrad'}):
  x = tf.sign(x)
 return x
 
#使用
x = binary(x)

以上这篇tensorflow 实现自定义梯度反向传播代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现各种排序算法的代码示例总结
Dec 11 Python
简单谈谈python的反射机制
Jun 28 Python
Python实现全角半角字符互转的方法
Nov 28 Python
Python中文件I/O高效操作处理的技巧分享
Feb 04 Python
Python中的上下文管理器和with语句的使用
Apr 17 Python
python实现贪吃蛇游戏
Mar 21 Python
python小程序实现刷票功能详解
Jul 17 Python
Django使用消息提示简单的弹出个对话框实例
Nov 15 Python
python os模块常用的29种方法使用详解
Jun 02 Python
python pyhs2 的安装操作
Apr 07 Python
如何用python绘制雷达图
Apr 24 Python
python中if和elif的区别介绍
Nov 07 Python
用Python做一个久坐提醒小助手的示例代码
Feb 10 #Python
Python3 元组tuple入门基础
Feb 09 #Python
Python3列表List入门知识附实例
Feb 09 #Python
Python 动态变量名定义与调用方法
Feb 09 #Python
python函数定义和调用过程详解
Feb 09 #Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 #Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 #Python
You might like
神族 PROTOSS 概述
2020/03/14 星际争霸
深入PHP与浏览器缓存的分析
2013/06/03 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
微信小程序实现蓝牙打印
2019/09/23 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
详解Python3.1版本带来的核心变化
2015/04/07 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
python实现按任意键继续执行程序
2016/12/30 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
Python WSGI的深入理解
2018/08/01 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
韩国江南富人区高端时尚百货商场:Galleria(格乐丽雅)
2018/03/27 全球购物
英国时尚配饰、珠宝和服装网站:KJ Beckett
2020/01/23 全球购物
英语专业学子个人的自我评价
2013/10/02 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS