2016-03-28 19 views
2

Ich versuche, den SummaryWriter von Tensorflow zu verwenden, aber es scheint keine Ereignisse, Bilder oder Histogramme in die Datei zu schreiben. Allerdings schreibt es das Diagramm in eine Datei (die ich dann im Tensorboard sehen kann), was zumindest anzeigt, dass Tensorboard und SummaryWriter wissen, wo sich mein Logdir befindet.SummaryWriter schreibt keine Zusammenfassungen in Datei

Hier ist meine (vereinfacht) Code, durch weggelassen Codeblöcke aufgeteilt:

sess = tf.Session() 
W_conv1 = tf.Variable(tf.truncated_normal([5,5,3, hidden1_size], stddev = 0.01), name = 'W_conv1') 
b_conv1 = tf.Variable(tf.constant(0.01, shape=[hidden1_size]), name = 'b_conv1') 

#to visualize the weights of the first layer... 
sum2 = tf.image_summary('first layer weights', tf.transpose(W_conv1, perm = [3, 0, 1, 2]), max_images = 16) 

h_conv1 = tf.nn.relu(b_conv1 + conv(x, W_conv1)) 

#to visualize how many dead relu's we have 
sum1 = tf.scalar_summary('conv1', tf.nn.zero_fraction(h_conv1)) 

.... Mehr Schichten

softmax = {} 
cross_entropy = tf.Variable(0.0) 
softmax[0] = tf.nn.softmax(fc_out) 
cross_entropy += -tf.reduce_sum(y_*tf.log(softmax[0])) 

.... Reccurrent Teil

sum3 = tf.histogram_summary('cross entropy', cross_entropy) 


lr = tf.Variable(tf.constant(1e-3)) 
lr_change = tf.assign(lr, tf.mul(.1, lr)) 

train_step = tf.train.AdamOptimizer(lr).minimize(cross_entropy) 

merged=tf.merge_all_summaries() 
writer = tf.train.SummaryWriter("./logs", sess.graph_def, flush_secs = 5) 

sess.run(tf.initialize_all_variables()) 

.... und dann der Trainingscode:

for i in range(train_iter): 
    batch_i = np.random.randint(0, len(X_t), [batch_size]) 
    X_batch = X_t[batch_i] 
    y_batch = y_t[batch_i] 

    summary_str, _, loss = sess.run([merged, train_step, cross_entropy], feed_dict = {x: X_batch, y_: y_batch}) 

    writer.add_summary(summary_str, i) 
    writer.flush() 
    saver.save(sess, 'RNN_model.ckpt', global_step = i) 

Dann, wenn ich tensorboard laden, und Blick auf den Registerkarte Ereignisse, sehe ich die folgenden Fehler:

No scalar summary tags were found.

Maybe data hasn't loaded yet, or maybe you need to add some >tf.scalar_summary ops to your graph, and serialize them using the >tf.training.summary_io.SummaryWriter.

Ich habe die writer.flush() Aussage, denn nach auf Github auf beide Stapelaustausch suchen, das ist ein allgemeiner Vorschlag. Problem nicht behoben.

In meiner Protokolldatei wird nur der Graph_def geschrieben, während des Trainings werden keine anderen Dateien geschrieben.

Ich verwende Tensorflow '0.7.1' auf Mac 0SX el-Capitan.

Danke!

+0

Ihre TensorBoard/Zusammenfassung Nutzung sieht richtig. Sind Sie sicher, dass nur der Graph_def in die Ereignisdatei geschrieben wird? Kannst du es hochladen? Dann kann ich überprüfen, ob es die Histogrammzusammenfassungen usw. geschrieben hat und feststellen, ob das Problem mit TensorBoard oder dem Ereignisschreibcode vorliegt. – dandelion

+0

Sicher, vielen Dank! https://drive.google.com/file/d/0B5GqMWTiEZZAR2gyU3RiWDFzMVE/view?usp=sharing p.s. Ich denke, es ist nur der Graph bc. es schreibt die Datei nur einmal, wenn ich das Netzwerk definiere, aber niemals während des Trainings. –

+0

Ich habe das gleiche bemerkt, indem ich das Beispiel Docker Experiment von [openai/InfoGAN] (https://github.com/openai/InfoGAN#running-experiment) ausgeführt habe. Es wird nur am Anfang ein Protokoll ausgegeben, aber nach dem Training nichts ausgegeben. – NHDaly

Antwort

0

Ich weiß, das ist ein alter Post, aber ich erlebte das gleiche in einer virtuellen Umgebung mit TensorFlow 1.1.0. Laufende Version 1.2.1 Ich habe dieses Problem anscheinend nicht. Sie können die folgenden in der Befehlszeile ausführen, welche Version von TensorFlow bestimmen Sie laufen:

python -c "import tensorflow as tf; print(tf.__version__)" 

Hoffe, dass es jemand da draußen hilft!

Cheers,

-Maashu

Verwandte Themen