您的位置:

tensorboard--logdir的使用指南

一、基本介绍

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进行日志记录。