在 tensorflow 中计算与 y 大小相同的梯度 (dy/dx)

compute the gradient (dy/dx) in tensorflow with the same size of y

我想计算dy/dx的梯度,得到大小的梯度 y 的维度加上 x 的维度以指示 x 中变量的微分。 例如,如果 Y[100x1]=A[100x50]X[50x1],那么 return Y[100x1x50x1]。 (对于 x 中的每个参数,给我 Y 的微分)

我试过 tf.gradients 运算符: https://www.tensorflow.org/api_docs/python/tf/gradients

但是,它 return 是总和 (dy/dx) 而不是 dy/dx

您实际上并不是要计算梯度,而是要计算雅可比行列式。梯度是将 nabla 运算符应用于相对于向量的标量函数,而雅可比矩阵只是一个矩阵,其中每个元素 J_ij 是 y_i 相对于 x_j 的导数,这就是你想要的。

这在 Tensorflow 中仍未实现,但已详细讨论 here。您可能会在那里找到适合您的工作方式。

基本思路是一次仅针对一个变量调用 tf.gradients,然后从那里手动构建雅可比矩阵。