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!
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
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. –
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