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中的列表知识点汇总
Apr 14 Python
Python字符串格式化输出方法分析
Apr 13 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
django-filter和普通查询的例子
Aug 12 Python
softmax及python实现过程解析
Sep 30 Python
解决python 读取excel时 日期变成数字并加.0的问题
Oct 08 Python
Python MySQL 日期时间格式化作为参数的操作
Mar 02 Python
Python基于Tkinter编写crc校验工具
May 06 Python
Python可以用来做什么
Nov 23 Python
Pycharm安装python库的方法
Nov 24 Python
快速一键生成Python爬虫请求头
Mar 04 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
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
PHP中array_merge和array相加的区别分析
2013/06/17 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
用js生产批量批处理执行命令
2008/07/28 Javascript
很可爱的输入框
2008/08/03 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
JS实现含有中文字符串的友好截取功能分析
2017/03/13 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
python中os操作文件及文件路径实例汇总
2015/01/15 Python
Python用threading实现多线程详解
2017/02/03 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
Python操作json的方法实例分析
2018/12/06 Python
Python实现网站表单提交和模板
2019/01/15 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
详解python polyscope库的安装和例程
2020/11/13 Python
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
建筑专业自我鉴定
2013/10/22 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js