区别-tf.gradients与tf.keras.backend.gradients

时间:2020-02-24 22:23:21

标签: python tensorflow keras gradient

作为Tensorflow的新手,我试图了解tf.gradients和tf.keras.backend.gradients的基础功能之间的区别。

后者找到具有成本函数的输入要素值的梯度。

但是我对前者是否能计算成本函数梯度还是输出概率不清楚(例如,考虑使用简单前馈网络进行二进制分类的情况。此处将输出概率称为单神经元末层的乙状结肠活化结果,成本由二元交叉熵给出)

我已经参考了tf.gradients的官方文档,但是(对于我来说)它简短而模糊,我没有清晰的画面-文档将其称为“ y”-是成本还是输出概率?

为什么需要渐变? 实现基于基本梯度的特征归因。

1 个答案:

答案 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)