2016-09-01 2 views
1

Ich verwende einfaches Tutorial Code von hier https://www.oreilly.com/learning/hello-tensorflowTensorflow SummaryWriter verloren Iterationen

Hier ist meine Version ist:

import tensorflow as tf 

x = tf.constant(1.0, name='input') 
w = tf.Variable(0.8, name='weight') 
y = tf.mul(w, x, name='output') 
y_ = tf.constant(0.0, name='correct_value') 
loss = tf.pow(y - y_, 2, name='loss') 
train_step = tf.train.GradientDescentOptimizer(0.025).minimize(loss) 
summary_y = tf.scalar_summary('output', loss) 

sess = tf.Session() 
sess.run(tf.initialize_all_variables()) 

summary_writer = tf.train.SummaryWriter('outs') 
for i in range(1000): 
    summary_writer.add_summary(sess.run(summary_y), i) 
    sess.run(train_step) 

Nach, ich habe nur 914 von 1000 Schritten in tensorboard. Hier eine Inspektion:

tensorboard --inspect --logdir=outs 

====================================================================== 
Processing event files... (this can take a few minutes) 
====================================================================== 

Found event files in: 
outs 

These tags are in outs: 
audio - 
histograms - 
images - 
scalars 
    output 
====================================================================== 

Event statistics for outs: 
audio - 
graph - 
histograms - 
images - 
scalars 
    first_step   0 
    last_step   913 
    max_step    913 
    min_step    0 
    num_steps   914 
    outoforder_steps  [] 
sessionlog:checkpoint - 
sessionlog:start - 
sessionlog:stop - 
====================================================================== 

Wenn ich öffne tensorboard, ich sehe richtigen Plots für 914 Schritte (0-913). Dies geschieht unabhängig von der Anzahl der Schritte. Wenn ich zum Beispiel 100 Schritte mache, werden nur 93 als Zusammenfassung gespeichert.

Ich benutze Fedora 23 (4.6.5-200.fc23.x86_64 GNU/Linux). Tensorflow wird neueste neue Installation in virtuellen env

pip list | grep tensorflow 
tensorflow (0.10.0rc0) 

Irgendwelche Ideen, wo letzten Iterationen sind verloren?

Antwort

1

Ein tf.train.SummaryWriter Objekt puffert interne Zusammenfassungen, daher ist es wichtig, vor dem Beenden summary_writer.close() aufzurufen. Sie können auch summary_writer.flush() aufrufen, um sicherzustellen, dass die zuletzt geschriebene Zusammenfassung in das Ereignisprotokoll geschrieben wurde. Die folgende einfache Änderung an Ihrer Trainingsschleife sollte funktionieren:

summary_writer = tf.train.SummaryWriter('outs') 
for i in range(1000): 
    summary_writer.add_summary(sess.run(summary_y), i) 
    sess.run(train_step) 
summary_writer.close()