Logging training and validation loss in tensorboard Logging training and validation loss in tensorboard python python

Logging training and validation loss in tensorboard


There are several different ways you could achieve this, but you're on the right track with creating different tf.summary.scalar() nodes. Since you must explicitly call SummaryWriter.add_summary() each time you want to log a quantity to the event file, the simplest approach is probably to fetch the appropriate summary node each time you want to get the training or validation accuracy:

accuracy = tf.reduce_mean(correct)training_summary = tf.summary.scalar("training_accuracy", accuracy)validation_summary = tf.summary.scalar("validation_accuracy", accuracy)summary_writer = tf.summary.FileWriter(...)for step in xrange(NUM_STEPS):  # Perform a training step....  if step % LOG_PERIOD == 0:    # To log training accuracy.    train_acc, train_summ = sess.run(        [accuracy, training_summary],         feed_dict={images : training_set.images, labels : training_set.labels})    writer.add_summary(train_summ, step)     # To log validation accuracy.    valid_acc, valid_summ = sess.run(        [accuracy, validation_summary],        feed_dict={images : validation_set.images, labels : validation_set.labels})    writer.add_summary(valid_summ, step)

Alternatively, you could create a single summary op whose tag is a tf.placeholder(tf.string, []) and feed the string "training_accuracy" or "validation_accuracy" as appropriate.


Another way to do it, is to use a second file writer. So you are able to use the merge_summaries command.

train_writer = tf.summary.FileWriter(FLAGS.summaries_dir + '/train',                                      sess.graph)test_writer = tf.summary.FileWriter(FLAGS.summaries_dir + '/test')tf.global_variables_initializer().run()

Here is the complete documentation. This works for me fine : TensorBoard: Visualizing Learning