TensorFlow 交叉熵教程

TensorFlow cross-entropy on tutorial

我刚刚完成了 TensorFlow 教程 (https://www.tensorflow.org/versions/r0.8/tutorials/mnist/pros/index.html#deep-mnist-for-experts)。

我有两个问题:

  1. 为什么要用cost function with y_ * log(y)?不应该是y_ * log(y) + (1-y_) * log(1-y)吗?

  2. TensorFlow怎么知道如何计算我用的cost functiongradient?我们不应该在某个地方告诉 TensorFlow 如何计算 gradient 吗?

谢谢!

  1. 当y = 1或0时,可以使用y_ * log(y) + (1-y_) * log(1-y),但是当y为one-hot编码时,y =[0 1] 或 [1 0],我们使用 y_ * log(y)。其实都是一样的

  2. TensorFlow 中的一切都是图表,包括您的成本函数。

因此每个节点都知道它们的操作和局部梯度。 Tensorflow 使用反向传播(链式规则)来计算使用图形的梯度。