如何使用张量流近似粗糙矩阵的范数

时间:2017-10-10 17:03:16

标签: python tensorflow

我想知道是否有任何方法可以在图表中重新计算具有更新权重的渐变,或者是否有更好的方法来执行此操作。例如,为了估计粗糙范数,我们需要计算

delta ~ N(0, I)
hessian_norm = 1/M \sum_{1}^{M} gradient(f(x+delta))- gradient(f(x-delta))/(2*delta)

我们需要x+delta上的渐变值。目前,如果我们直接在None上使用tf.gradient,我们会获得var+delta类型。

更具体地说,如果我们定义

a = tf.Variable
b = some_function(a)
grad = tf.gradients(b, a) 

这是正常的梯度计算,但如果我们这样做

grad_delta = tf.gradients(b, a+delta) 

它将返回None。这个特征似乎使得使用上述方法无法逼近粗麻线范数。

1 个答案:

答案 0 :(得分:1)

b不是a+delta的函数,因此您获得None s。您需要创建取决于b2的新值a+delta,或者只需将a变量移动delta并再次移动eval以获得第二个值。

这与您line search in TensorFlow的方式类似。