tensorflow 實現(xiàn)自定義梯度反向傳播代碼
以sign函數(shù)為例:

sign函數(shù)可以對數(shù)值進行二值化,但在梯度反向傳播是不好處理,一般采用一個近似函數(shù)的梯度作為代替,如上圖的Htanh。在[-1,1]直接梯度為1,其他為0。
#使用修飾器,建立梯度反向傳播函數(shù)。其中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梯度函數(shù)
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 實現(xiàn)自定義梯度反向傳播代碼就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
flask-socketio實現(xiàn)前后端實時通信的功能的示例
本文主要介紹了flask-socketio實現(xiàn)前后端實時通信的功能的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-04-04
Python使用ntplib庫同步校準當?shù)貢r間的方法
NTP網(wǎng)絡時間協(xié)議其實大家平時或多或少都能接觸到,包括Windows在內(nèi)的操作系統(tǒng)中的很多Internet時間同步功能都是在NTP的基礎上來做,這里我們來看一下Python使用ntplib庫同步校準當?shù)貢r間的方法2016-07-07
pd.read_csv讀取文件路徑出現(xiàn)的問題解決
本文主要介紹了pd.read_csv讀取文件路徑出現(xiàn)的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06
pytorch中tensor轉換為float的實現(xiàn)示例
本文主要介紹了pytorch中tensor轉換為float,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-03-03
Django配置Bootstrap, js實現(xiàn)過程詳解
這篇文章主要介紹了Django配置Bootstrap, js實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10
python 簡單搭建阻塞式單進程,多進程,多線程服務的實例
下面小編就為大家?guī)硪黄猵ython 簡單搭建阻塞式單進程,多進程,多線程服務的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11

