作为Tensorflow的新手,我试图了解tf.gradients和tf.keras.backend.gradients的基础功能之间的区别。
后者找到具有成本函数的输入要素值的梯度。
但是我对前者是否能计算成本函数梯度还是输出概率不清楚(例如,考虑使用简单前馈网络进行二进制分类的情况。此处将输出概率称为单神经元末层的乙状结肠活化结果,成本由二元交叉熵给出)
我已经参考了tf.gradients的官方文档,但是(对于我来说)它简短而模糊,我没有清晰的画面-文档将其称为“ y”-是成本还是输出概率?
为什么需要渐变? 实现基于基本梯度的特征归因。
答案 0 :(得分:1)
它们基本相同。 tf.keras
是TensorFlow的高级API,用于构建和训练深度学习模型。它用于快速原型制作,最先进的研究和生产。 tf.Keras
基本上在其后端使用Tensorflow。通过查看tf.Keras
源代码here,我们可以看到tf.keras.backend.gradients
确实使用了tf.gradients
:
# Part of Keras.backend.py
from tensorflow.python.ops import gradients as gradients_module
@keras_export('keras.backend.gradients')
def gradients(loss, variables):
"""Returns the gradients of `loss` w.r.t. `variables`.
Arguments:
loss: Scalar tensor to minimize.
variables: List of variables.
Returns:
A gradients tensor.
"""
# ========
# Uses tensorflow's gradient function
# ========
return gradients_module.gradients(
loss, variables, colocate_gradients_with_ops=True)