# #############添加##############
def binarize(self, x):
"""
Clip and binarize tensor using the straight through estimator (STE) for the gradient.
"""
g = tf.get_default_graph() with ops.name_scope("Binarized") as name:
# x=tf.clip_by_value(x,-1,1)
###当网络正向传播时,返回的是tf.sign(x),当反向求梯度时,用Identity代替了Sign函数,Identity一般可以认为等于。即直接用x来求梯度。
with g.gradient_override_map({"Cast": "Identity"}):
return tf.sign(x)#############结束##############

正如我在代码中注释的一样,gradient_override_map函数主要用于解决使用自己定义的函数方式来求梯度的问题,特别是在深度学习的二值化,无法对符号函数进行求导,需要使用straight through estimator (STE)求导。 gradient_override_map函数的参数值为一个字典。其表示的意思是:字典中value表示使用该值表示的函数代替key表示的函数进行梯度运算。例如例子中,在求梯度时,使用tf.identity函数代替tf.sign函数。即使用identity处理后的值来求梯度。

对于tensorflow中的gradient_override_map函数的理解的更多相关文章

  1. js中的回调函数的理解和使用方法

    js中的回调函数的理解和使用方法 一. 回调函数的作用 js代码会至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数. 二. 回调函数的解释 因为 ...

  2. 【tensorflow基础】tensorflow中 tf.reduce_mean函数

    参考 1. tensorflow中 tf.reduce_mean函数: 完

  3. TensorFlow中的卷积函数

    前言 最近尝试看TensorFlow中Slim模块的代码,看的比较郁闷,所以试着写点小的代码,动手验证相关的操作,以增加直观性. 卷积函数 slim模块的conv2d函数,是二维卷积接口,顺着源代码可 ...

  4. opengl中对glOrtho()函数的理解

    glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工程中的制图等.需要比较精确的显示. 而作为它的对立情况, glFrustum则产生一个 ...

  5. vue中的钩子函数的理解

    接下来我们对几个钩子函数进行解释 beforeCreated:这个钩子函数实在vue实例创建后,触发的.这个时候还没有进行data里的数据监听和事件的初始化 其实大家很多时候都会在created钩子函 ...

  6. Tensorflow中的run()函数

    1 run()函数存在的意义 run()函数可以让代码变得更加简洁,在搭建神经网络(一)中,经历了数据集准备.前向传播过程设计.损失函数及反向传播过程设计等三个过程,形成计算网络,再通过会话tf.Se ...

  7. js中的回调函数的理解

    一,常见的但是不是特别注意的回调方法. 1.1,ajax $.ajax({ url:"test.json", type: "GET", data: {usern ...

  8. js中立即执行函数写法理解

    在理解了一些函数基本概念后,回头看看( function(){…} )()和( function (){…} () )这两种立即执行函数的写法,最初我以为是一个括号包裹匿名函数, 并后面加个括号立即调 ...

  9. 【转载】 tf.Print() (------------ tensorflow中的print函数)

    原文地址: https://blog.csdn.net/weixin_36670529/article/details/100191674 ------------------------------ ...

随机推荐

  1. 大数据篇:HDFS

    HDFS HDFS是什么? Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File Syste ...

  2. Flink系统之Table API 和 SQL

    Flink提供了像表一样处理的API和像执行SQL语句一样把结果集进行执行.这样很方便的让大家进行数据处理了.比如执行一些查询,在无界数据和批处理的任务上,然后将这些按一定的格式进行输出,很方便的让大 ...

  3. tar命令详解及使用实例

    tar命令 [root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 …. 参数: -c :创建压缩文件 -x :解开压缩文件 -t :查看tar包里面的文件! 上面3个参数只能 ...

  4. pytorch之 sava_reload_model

    import torch import matplotlib.pyplot as plt # torch.manual_seed(1) # reproducible # fake data x = t ...

  5. 洛谷P1157----组合数的输出

    #include<stdio.h> ] = { ,,,,,,,,,,,,,,,,,,, }; ]; int n, r; ; void dfs(int x) {//x表示当前是第几个数 in ...

  6. emmet笔记

    1.div.div${div$}*6 生成 <div class="div1">div1</div> <div class="div2&qu ...

  7. 用PHP&JS实现的ID&密码校验程序

    声明:本程序纯粹是本人在学习过程中突发奇想做的,并未考虑任何可行性,实用性,只是留下来供以后参考. 前端页面 sign.html <!DOCTYPE html> <html> ...

  8. C# 一个帮您理解回调函数的例子(新手必看)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 回调函数 ...

  9. 流处理引擎(SPE)中的的分布式一致性语义之Exactly-Once和Effectively-Onece区别

    -- At most Onece:最多一次,如果算子处理事件失败,事件将不再尝试该事件. -- At Least Onece:至少一次,如果算子处理事件失败,算子会再次尝试该处理事件,直到有一次成功. ...

  10. 共同战“疫”,CODING 帮助研发团队高效协同

    新冠疫情下,家里蹲的日子继续延长.部分企业虽然受困于不能回公司办公,但都陆续开启了远程协作办公,远程协作领域被推上了风口.但「远程协同」看不见摸不着工作伙伴,个人的自律能力也无法保证,难免出现沟通响应 ...