tensorboard是tensorflow训练网络的可视化工具。这篇博客主要论述tf.summary怎样记录训练过程中的标量信息。
tf.summary.scalar(tags, values, collections=None, name=None)
用来记录标量信息
- tags:tensorboard中的名字
- values:要记录的标量信息
但是该函数并不会立刻执行,只有当sess.run调用这个操作的时候,该函数才会被执行。这个函数相当于定义了一个操作,定义了一个节点。当程序中定义了多个写日志操作时,一一调用函数比较麻烦,运行tf.merge_all_summaries()函数可以把代码中定义的所以写日志操作执行一遍,从而将所有日志写入文件。
sess.run(tf.merge_all_summaries())运行写日记操作
writer.add_summary()把日志写入文件
在训练神经网络的时候,tf.summary的代码如下:(为了方便观看,我把训练函数的代码贴在下面)
def train():
global_steps = tf.Variable(0, trainable=False)
train_op = tf.train.AdamOptimizer(1e-3).minimize(cnn_model.loss, global_step=global_steps)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
loss_summary = tf.summary.scalar('loss', cnn_model.loss)
accuracy_summary = tf.summary.scalar('acc', cnn_model.accuracy)
train_summary_op = tf.summary.merge([loss_summary, accuracy_summary])
writer = tf.summary.FileWriter('D:\\CNN_and_RNN\\tensorboard', sess.graph)
for i in range(0, num_epoch):
batch_train = batch_iter(train_data, train_label)
for x, y in batch_train:
feed_dict = {cnn_model.input_x: x, cnn_model.input_y: y, cnn_model.keep_pro: 0.5}
current_step = sess.run(global_steps)
if current_step % 100 == 0:
s = sess.run(train_summary_op, feed_dict=feed_dict)
writer.add_summary(s, current_step)
print(current_step)
sess.run(train_op, feed_dict=feed_dict)
打开tensorboard的方法:
- 进入日志文件的上级目录,在本例中是“D:\CNN_and_RNN”
- 打开cmd,输入tensorboard --logdir=tensorboard即可,cmd中会跳出一个网址,打开网址即可