所以我的tf.Variable()
名为W
shape=[1]
。
我认为tf.hessians(loss, W)
并不等于tf.gradients(tf.gradients(loss, W), W)
,尽管它应该是相同的:二阶导数。
如果我尝试用双梯度替换Hessians,我会得到问题的代码的小小要点: https://gist.github.com/guillaume-chevalier/6b01c4e43a123abf8db69fa97532993f 然而,我观察到如果我使用双梯度,结果不会收敛。
答案 0 :(得分:-1)
双梯度称为拉普拉斯算子:Laplace Operator。它将衍生的w.r.t取两次相同的x变量。然而,Hessian矩阵采用两个x变量的衍生w.r.t组合:Hessian Matrix。因此,Hessian的痕迹将是拉普拉斯算子,这是双梯度。