Tensorboard通过读取Tensorflow的事件文件来运行,以图表的形式展示汇总数据(summary data)。
首先,创建想要汇总数据的Tensorflow图,然后选择想在哪个节点进行汇总(summary)操作。
使用tf.summary.scalar记录标量
使用tf.summary.histogram记录数据的直方图,比如展示层中激活的分布,或梯度权重的分布。
使用tf.summary.distribution记录数据的分布图
使用tf.summary.image记录图像数据
为了生成汇总信息,需要运行所有这些节点,可以通过tf.merge_all_summaries方法将他们合并为一个操作,执行合并命令后,会将所有数据生成一个序列化对象,为了将汇总数据写入磁盘,需要将汇总的数据对象传递给tf.summary.FileWriter.
tf.summary.FileWriter的参数包括事件文件的存储目录logdir,和graph来指定存储哪个图的事件。
下面是使用示例:
loss = tf.reduce_mean(cross_entropy,name='loss') grads = tf.gradients(loss, tf.trainable_variables()) grads = list(zip(grads, tf.trainable_variables())) #记录标量loss tf.summary.scalar('loss',loss) #使用直方图记录每一个可训练参数 for var in tf.trainable_variables(): tf.summary.histogram(var.name, var) #使用直方图记录梯度 for grad, var in grads: tf.summary.histogram(var.name + '/gradient', grad) #运行汇总数据 merged_summary_op = tf.summary.merge_all()
#建立session with tf.Session(graph=train_graph) as sess: sess.run(tf.global_variables_initializer()) #构建FileWriter对象,指明事件文件的存储路径和要存储的图 writer = tf.summary.FileWriter('E://Projects//Tensorboard',graph = train_graph) for epoch in range(1,epochs+1): ...... #运行汇总数据op summary = sess.run(merged_summary_op, feed_dict) #将汇总数据写入事件文件 writer.add_summary(summary,global_step=epoch) #结束后,关闭写入流 writer.close()