2016-04-25 6 views
4

Ich war gerade durch die TensorFlow Tutorial (https://www.tensorflow.org/versions/r0.8/tutorials/mnist/pros/index.html#deep-mnist-for-experts).TensorFlow Cross-Entropy auf Tutorial

Ich habe zwei Fragen zu diesem Thema:

  1. Warum es die cost function with y_ * log(y) nicht verwendet? Sollte es nicht y_ * log(y) + (1-y_) * log(1-y) sein?

  2. Wie TensorFlow wissen, wie die gradient des cost function berechnen ich verwenden? Sollten wir nicht irgendwo einen Ort haben, an dem wir uns äußern können TensorFlow Wie berechnet man die gradient?

Vielen Dank!

+0

Die Gradientenabstiegsfunktion ist bereits programmiert. Sie können den Quelltext durchsuchen, um ihn zu finden. –

Antwort

5
  1. Wenn y 1 oder = 0, kann man Y_ verwenden * log (y) + (1-y_) * log (1-y), aber, wenn y One-Hot-Kodierung, y = [0 1] oder [1 0] verwenden wir y_ * log (y). In der Tat sind sie gleich.

  2. Alles ist ein Diagramm in TensorFlow einschließlich Ihrer Kostenfunktion.

enter image description here

So jeder Knoten kennt ihren Betrieb und lokalen Gradienten. Tensorflow verwendet Backpropagation (Kettenregel), um den Gradienten mithilfe des Graphen zu berechnen.

+0

Warum sind alle Graphen so klein? Ich kann keine von ihnen lesen, einschließlich dieser. Kann ich eine SVG oder etwas herunterladen? –

+0

@BSeven Ich wollte nur zeigen, "Kosten" ist ein Knoten in der Grafik. Sie können TensorBoard ausführen, um bessere Graphen zu erhalten. –

+0

Sie können auch Graphen in IPython-Notizbuch als getan [hier] (http://nbviewer.jupyter.org/github/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/deepdream/deepdream.ipynb) (suchen Sie nach show_graph) –