Tensorflow的可视化工具Tensorboard的使用——配置与数据显示

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wgj99991111/article/details/83755545

tensorflow运行过程的可视化有助于我们对网络进行调优。比如迭代的过程中每一层参数是如何变化与分布的,比如每次循环参数更新后模型在训练集上的准确率是如何的,比如损失值的变化情况,等等。tensorflow提供了可视化工具Tensorboard,今天把学习该工具的过程记录如下:

一、Tensorboard的配置与初步使用

  1. 在tensorflow构建图的过程中放入记录变量
    在使用tensorflow构建图的过程中,在需要记录变量值的地方放入summary operations。
    使用tf.summary.scalar记录标量
    使用tf.summary.histogram记录数据的直方图
    使用tf.summary.distribution记录数据的分布图
    使用tf.summary.image记录图像数据
    ….
    例如:
cross_entropy = -tf.reduce_sum(y * tf.log(y_fc2))
tf.summary.scalar('loss', cross_entropy)
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
tf.summary.scalar('accuracy', accuracy)
  1. 合并summary operation
    在变量tensorflow变量初始化之前合并采集点变量,并且将它们写到之前定义的log_dir路径。
# summaries合并
merged = tf.summary.merge_all()
# 写到指定的磁盘路径中
train_writer = tf.summary.FileWriter(log_dir + '/train', session.graph)
tf.global_variables_initializer().run()

注意这里的train_writer变量,这里是定义一个信息的存储位置,后面在训练过程中采集到的数据都要通过这个变量写入文件。

  1. 在网络训练的过程中采集数据
    下面就是在网络的训练过程中将该记录的数据记录下来。
    for i in range(1000):
        batch = mnist.train.next_batch(50)
        summary,_ = session.run([merged,train], feed_dict = {x:batch[0], y:batch[1], keep_prob:0.5})
        train_writer.add_summary(summary,i)
        if i % 100 == 0:
            print("step %4d: " % i)
            print(session.run(accuracy, feed_dict = {x:batch[0], y:batch[1], keep_prob:1}))

    print(session.run(accuracy, feed_dict = {x:mnist.test.images, y:mnist.test.labels, keep_prob:1}))
    train_writer.close()

注意:
1)这段代码的第三句,summary就是用来记录训练过程中信息的变量,summary后面的“,-”是与session.run([merged,train],相对应的,表示将训练过程中合并的信息merged存储到变量summary中,后面的train结果不存出,也就是用“,-”表示。
2)train_writer.add_summary(summary,i)将这次迭代的信息存储到上面确定的文件中。
通过上面三个步骤,就可以完成可视化数据的记录了,下面就是数据的展示问题。

  1. 初始化可视化服务器
    在程序中所确定的:
 log_dir = './MNIST_LOG'

注意,一定要在包含log_dir文件夹的外层目录打开终端,输入下面这个命令进入tensorflow的虚拟环境

source activate tensorflow-1

运行以下代码,等号后面加上summary日志保存的路径(就是log_dir定义的路径)

tensorboard --logdir=

会出现如下提示,说明这个可视化服务器已经准备好了。可以在浏览器上输入127.0.0.1:6006,进行数据查看了。注意这个端口号就是下面提示信息中的端口号。
在这里插入图片描述注意:在采集数据之前,也就是运行神经网络进行训练之前,最好把log_dir中的数据删除掉,否则在初始化服务器时就会出现有多个信息的问题。

  1. 在浏览器中显示
    在浏览器中输入127.0.0.1:6006,就可以显示所需的信息了,如下图所示。
    在这里插入图片描述二、数据分析
    未完待续

猜你喜欢

转载自blog.csdn.net/wgj99991111/article/details/83755545