2016-07-01 6 views
0

Ich habe das einfachste 1D-Beispiel für TensorBoard gemacht (verfolgt die Minimierung eines Quadratischen), aber ich bekomme Diagramme, die für mich keinen Sinn ergeben und ich kann nicht verstehen warum. Ist es meine eigene Implementierung oder ist TensorBoard Buggy?Wie liest man TensorBoard Histogramme für ein 1D Beispiel in TensorFlow?

Hier sind die Stellplätze:

HISTOGRAMM:

enter image description here

Normalerweise denke ich von Histogrammen als Balkendiagramme, die Wahrscheinlichkeitsverteilungen (oder Frequenzzählungen) kodieren. Ich nehme an, dass die y-Achse die Werte und die x-Achse die Zählung angeben. Da meine Anzahl von Schritten 120 ist, schien das vernünftig zu sein.

und Scalar Grundstück:

enter image description here

warum gibt es eine seltsame Linie meine Plots durchlaufen?

Der Code, der es produziert (Sie sollten in der Lage, es zu kopieren und einfügen und ausführen):

## run cmd to collect model: python playground.py --logdir=/tmp/playground_tmp 
## show board on browser run cmd: tensorboard --logdir=/tmp/playground_tmp 
## browser: http://localhost:6006/ 

import tensorflow as tf 

# x variable 
x = tf.Variable(10.0,name='x') 
# b placeholder (simualtes the "data" part of the training) 
b = tf.placeholder(tf.float32) 
# make model (1/2)(x-b)^2 
xx_b = 0.5*tf.pow(x-b,2) 
y=xx_b 

learning_rate = 1.0 
# get optimizer 
opt = tf.train.GradientDescentOptimizer(learning_rate) 
# gradient variable list = [ (gradient,variable) ] 
gv = opt.compute_gradients(y,[x]) 
# transformed gradient variable list = [ (T(gradient),variable) ] 
decay = 0.9 # decay the gradient for the sake of the example 
# apply transformed gradients 
tgv = [ (decay*g, v) for (g,v) in gv] #list [(grad,var)] 
apply_transform_op = opt.apply_gradients(tgv) 

# track value of x 
x_scalar_summary = tf.scalar_summary("x", x) 
x_histogram_sumarry = tf.histogram_summary('x_his', x) 
with tf.Session() as sess: 
    merged = tf.merge_all_summaries() 
    tensorboard_data_dump = '/tmp/playground_tmp' 
    writer = tf.train.SummaryWriter(tensorboard_data_dump, sess.graph) 

    sess.run(tf.initialize_all_variables()) 
    epochs = 120 
    for i in range(epochs): 
     b_val = 1.0 #fake data (in SGD it would be different on every epoch) 

     # applies the gradients 
     [summary_str_apply_transform,_] = sess.run([merged,apply_transform_op], feed_dict={b: b_val}) 
     writer.add_summary(summary_str_apply_transform, i) 
+0

Ich habe eine ähnliche aromatisierte Frage auf den Überlauf von Statistiken gefragt: http://stats.stackexchange.com/questions/220491/how-does-one-interpret-histograys-given-by-tensorflow-in-tensionboard I don ' Ich glaube, ich habe irgendwelche Fehler gemacht, aber die Graphen sehen komisch aus. – Pinocchio

+1

Scheint wie Sie mehrere Ereignisdateien haben, löschen Sie alle mit Ausnahme der letzten –

+0

@OlivierMoindrot interessant. Scheint, dass das funktioniert hat, weißt du warum? – Pinocchio

Antwort

0

Ich traf auch das gleiche Problem, wenn mehrere Zeilen in der Registerkarte Instanz in Tensor Bord aufgetreten ist (auch ich versucht, Ihre Codes und Boardservice zeigt die dupliziert Warnung und Gegenwart einer Kurve nur, besser als ich)

WARNING:tensorflow:Found more than one graph event per run. Overwriting the graph with the newest event. 

dennoch halten die Lösung die gleiche wie @Olivier Moindrot erwähnt, die alten Protokolle löschen, während manchmal kann der Vorstand Cache einige Ergebnisse, so dass Sie möchten, r Starten Sie die Borddienste.

Die Art und Weise sicherzustellen, dass wir die neueste Zusammenfassung präsentieren, wie das MINIST Beispiel gezeigt, ist in einem neuen Ordner zu protokollieren:

if tf.gfile.Exists(FLAGS.summaries_dir): 
    tf.gfile.DeleteRecursively(FLAGS.summaries_dir) 
tf.gfile.MakeDirs(FLAGS.summaries_dir) 

Link zur vollständigen Quelle, mit TF-Version r0.10: https://github.com/tensorflow/tensorflow/blob/r0.10/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py

Verwandte Themen