一、基本介绍
TensorBoard是TensorFlow的一个可视化工具,可以用来展示训练的模型结构、训练过程中的参数和网络参数的分布等等。而tensorboard--logdir则是TensorBoard中最常用的命令之一,它指定了TensorBoard要加载哪个目录下的日志文件。
二、常用场景
1、训练一个模型
python train.py --logdir=path/to/logdir
2、从已经存在的日志文件中恢复模型
python train.py --logdir=path/to/logdir --restore=true
3、使用TensorBoard可视化模型训练过程
tensorboard --logdir=path/to/logdir
三、使用方法
1、训练模型并创建日志文件
如下所示,使用TensorFlow训练一个模型,并在指定的目录下创建日志记录文件:
import tensorflow as tf
# ...
# Create a summary writer
writer = tf.summary.FileWriter(logdir)
# ...
2、使用tensorboard--logdir加载日志文件
在终端中使用以下命令,启动TensorBoard,使用tensorboard--logdir加载所需目录下的日志文件:
tensorboard --logdir=path/to/logdir
3、在浏览器中查看可视化图表
在浏览器中打开http://localhost:6006/,即可查看TensorBoard可视化展示的模型训练情况。
四、高级用法
1、同时记录多个日志文件
在训练多个模型或者在不同的时间段内训练同一个模型时,可以使用如下所示的代码,同时记录多个日志文件:
writer1 = tf.summary.FileWriter(logdir1)
writer2 = tf.summary.FileWriter(logdir2)
# ...
2、使用命名空间
可以使用命名空间对TensorBoard中的可视化数据进行分组、分类。代码如下:
import tensorflow as tf
with tf.name_scope('summaries'):
tf.summary.scalar('loss', loss)
tf.summary.scalar('accuracy', accuracy)
tf.summary.histogram('histogram_loss', loss)
summary_op = tf.summary.merge_all()
# ...
merged_summary = sess.run(summary_op, feed_dict=feed_dict_for_batch)
writer.add_summary(merged_summary, global_step=step)
3、使用协程
可以使用协程并行地训练多个模型,并将日志记录文件合并到同一个目录中,以供TensorBoard可视化工具处理。代码如下:
import tensorflow as tf
import os
# ...
def train(logdir):
# ...
writer = tf.summary.FileWriter(logdir)
# ...
def parallel_train():
logdir_base = "/tmp/demo"
for i in range(4):
logdir = os.path.join(logdir_base, "model%d" % i)
pid = os.fork()
if pid == 0:
train(logdir)
exit()
else:
print("Started process %d" % pid)
os.wait()
# ...
五、注意事项
1、tensorboard--logdir需要指定TensorBoard要加载哪个目录下的日志文件。
2、多步骤训练时,需在TensorFlow的Graph中使用不同的命名空间,并将每个步骤的输出对TensorFlow的Summary操作,然后将结果输出到指定目录下的日志文件中。
3、定义完TensorFlow Graph之后,需要在Session的上下文中打开一个Summary Writer,并在每个步骤结束时调用Writer进行日志记录。