tensorflow - tf.gradients 和 tf.train.Optimizer.compute_gradient 有什么区别?

标签 tensorflow

看来tf.gradients还允许计算雅可比矩阵,即一个张量 wrt 的每个条目的偏导数。另一个张量的每个条目,而 tf.train.Optimizer.compute_gradient只计算实际梯度,例如标量值wrt的偏导数。特定张量或wrt的每个条目。一个特定的标量。如果tf.gradients 为什么会有单独的函数也实现了那个功能?

最佳答案

tf.gradients 不允许您计算雅可比矩阵,它为每个输出聚合每个输入的梯度(类似于实际雅可比矩阵的每一列的总和)。事实上,在 TensorFlow 中没有计算雅可比行列式的“好”方法(基本上你必须每次输出调用 tf.gradients 一次, see this issue )。

关于 tf.train.Optimizer.compute_gradients ,是的,它的结果基本相同,但会自动处理一些细节,并且输出格式稍微方便一些。如果你看 the implementation ,您将看到,其核心是对 tf.gradients 的调用。 (在这种情况下别名为 gradients.gradients ),但是对于优化器实现来说,已经实现了周围的逻辑是很有用的。此外,将其作为方法允许子类中的可扩展行为,要么实现某种优化策略(实际上不太可能在 compute_gradients 步骤)或用于辅助目的,如跟踪或调试。

关于tensorflow - tf.gradients 和 tf.train.Optimizer.compute_gradient 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45347275/

相关文章:

tensorflow - 支持 Nvidia CUDA Toolkit 9.2

python - 将 Keras 模型转换为 tensorflow 模型给我错误

python - 张量和稀疏张量有什么区别?

tensorflow - 如何在 Keras 中按组对输入样本进行平均?

python - RLException : [/directory] requires the 'logdir' arg to be set

python - 分阶段的 Tensorflow 自定义训练

Python - 由于缺少 DLL,Tensorflow 将无法导入

python - ValueError : Can not squeeze dim[1], 期望维度为 1,'sparse_softmax_cross_entropy_loss 得到 3

TensorFlow:使用不同的输入张量重新运行网络?

python - 导入 BERT : module 'tensorflow._api.v2.train' has no attribute 'Optimizer' 时出错