tf.gradients(
ys,xs,
grad_ys=none,
name='gradients',
colocate_gradients_with_ops=false,
gate_gradients=false,
aggregation_method=none,
stop_gradients=none,
unconnected_gradients=tf.unconnectedgradients.none
)
計算ys關於xs的梯度,tf.gradients
返回的結果是乙個長度為len(xs)的tensor列表list,每個張量為sum(dy/dx)
,即ys關於xs的導數。
例子:tf.gradients(y, [x1, x2, x3]
返回[dy/dx1, dy/dx2, dy/dx3]
當y與x無關時,即graph無x到y的路徑, 則求y關於x的梯度時返回[none]
引數stop_gradients
指定的變數對當前梯度求解而言, 梯度求解將止於這些變數。
例項:
a = tf.constant(0.)
b = 2 * a
g = tf.gradients(a + b, [a, b], stop_gradients=[a, b]) #梯度計算不再追溯a,b之前的變數
輸出:
in: sess.run(g)
out:[1.0, 1.0]
如果不設定stop_gradients
引數則反向傳播梯度計算將追溯到最開始的值a,輸出結果為:
in : sess.run(g)
out: [3.0, 1.0]
具體查閱:tf.gradients官網教程
compute_gradients(
loss,
var_list=none,
gate_gradients=gate_op,
aggregation_method=none,
colocate_gradients_with_ops=false,
grad_loss=none
)
optimizer.compute_gradients
是tf.gradients
的封裝1.
是optimizer.minimize()
的第一步,返回(gradient, variable)的列表,其中gradient是tensor。
直觀上,optimizer.compute_gradients
只比tf.gradients
多了乙個variable輸出。
具體查閱:optimizer.compute_gradients官網教程
tf.stop_gradient(
input,
name=none
)
tf.stop_gradient
阻止input的變數參與梯度計算,即在梯度計算的過程中遮蔽input之前的graph。
返回:關於input的梯度
應用:em演算法,其中m步驟不應涉及通過e步驟的輸出的反向傳播。
boltzmann機器的對比散度訓練,在區分能量函式時,訓練不得反向傳播通過模型生成樣本的圖形。
對抗性訓練,通過對抗性示例生成過程不會發生反向訓練。
具體查閱: tf.stop_gradient官網教程
tensorflow中的幾種交叉熵
準備1 先說一下什麼是logit,logit函式定義為 是一種將取值範圍在 0,1 內的概率對映到實數域 inf,inf 的函式,如果p 0.5,函式值為0 p 0.5,函式值為負 p 0.5,函式值為正。相對地,softmax和sigmoid則都是將 inf,inf 對映到 0,1 的函式。在te...
TensorFlow框架 tensorflow基礎
1 圖預設已經註冊,一組表示 tf.operation計算單位的物件和tf.tensor,表示操作之間流動的資料單元的物件 2 獲取呼叫 tf.get default graph op sess或者tensor 的graph屬性 3 圖的建立和使用 執行tensorflow操作圖的類,使用預設註冊的...
TensorFlow深度學習框架
tensorflow支援python和c 兩種程式語言,再複雜的多層神經網路模型都可以用python來實現,如果業務使用其他程式設計也不用擔心,使用跨語言的grpc或者http服務也可以訪問使用tensorflow訓練好的智慧型模型。tensorflow 是乙個採用資料流圖 data flow gr...