1
我不知道是否有任何方法來重新計算圖中更新權重的梯度,或者是否有更好的方法來做到這一點。例如,用於估計粗麻布規範,我們需要計算如何使用張量流來逼近hessian矩陣的規範
delta ~ N(0, I)
hessian_norm = 1/M \sum_{1}^{M} gradient(f(x+delta))- gradient(f(x-delta))/(2*delta)
我們需要在x+delta
梯度值。目前,如果我們直接在var+delta
上使用tf.gradient
,我們將獲得None
類型。
更多specifally說,如果我們定義
a = tf.Variable
b = some_function(a)
grad = tf.gradients(b, a)
,這是一個正常的梯度計算,但如果我們這樣做
grad_delta = tf.gradients(b, a+delta)
它將返回None
。這個特徵似乎使得使用上述方法不可能逼近hessian規範。
非常感謝。但是,如果我做了a2 = a + delta,grad = tf.gradients(b,a2),它仍然會發生。 –
在你的計算圖中有b和a2之間的路徑嗎? –