首页 > 其他 > 详细

TensorFlow——TensorBoard可视化

时间:2019-05-27 18:05:38      阅读:128      评论:0      收藏:0      [点我收藏+]

TensorFlow提供了一个可视化工具TensorBoard,它能够将训练过程中的各种绘制数据进行展示出来,包括标量,图片,音频,计算图,数据分布,直方图等,通过网页来观察模型的结构和训练过程中各个参数的变化。

Tensorboard通过一个日志展示系统进行数据可视化,在session运行图的时候,将各类的数据汇总并输出到日志文件中。然后启动Tensorboard服务,Tensorboard读取日志文件,并开启6006端口提供web服务。让用户可以在浏览器中查看数据。

相关的API函数如下;

tf.summary.scalar() :标量数据汇总,输出protobuf

tf.summary.histogram() :记录变量var的直方图,输出到直方图汇总的protobuf

tf.summary.image() :图像数据汇总,输出protobuf

tf.summary.merge() :合并所有的汇总日志

tf.summary.FileWriter() :创建SummaryWriter

tf.summary.FileWriter().add_summary()

tf.summary.FileWriter().add_session_log()

tf.summary.FileWriter().add_event()

tf.summary.FileWriter().add_graph() : 将protobuf写入文件的类

代码如下:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

train_x = np.linspace(-5, 3, 50)
train_y = train_x * 5 + 10 + np.random.random(50) * 10 - 5

# plt.plot(train_x, train_y, ‘r.‘)
# plt.grid(True)
# plt.show()

X = tf.placeholder(dtype=tf.float32)
Y = tf.placeholder(dtype=tf.float32)

w = tf.Variable(tf.random.truncated_normal([1]), name=Weight)
b = tf.Variable(tf.random.truncated_normal([1]), name=bias)

z = tf.multiply(X, w) + b

tf.summary.histogram(z, z)

cost = tf.reduce_mean(tf.square(Y - z))

tf.summary.scalar(loss, cost)

learning_rate = 0.01
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

init = tf.global_variables_initializer()

training_epochs = 20
display_step = 2


with tf.Session() as sess:
    sess.run(init)
    loss_list = []

    merged_summary_op = tf.summary.merge_all()  # 合并所有的summary
    summary_wirter = tf.summary.FileWriter(log/linear, sess.graph)

    for epoch in range(training_epochs):
        for (x, y) in zip(train_x, train_y):
            sess.run(optimizer,feed_dict={X:x, Y:y})

        if epoch % display_step == 0:
            loss = sess.run(cost, feed_dict={X:x, Y:y})
            loss_list.append(loss)
            print(Iter: , epoch,  Loss: , loss)
        summary_str = sess.run(merged_summary_op, feed_dict={X:train_x, Y:train_y})
        summary_wirter.add_summary(summary_str, epoch)

    w_, b_ = sess.run([w, b], feed_dict={X: x, Y: y})
    print(" Finished ")
    print("W: ", w_, " b: ", b_, " loss: ", loss)
    plt.plot(train_x, train_x*w_ + b_, g-, train_x, train_y, r.)
    plt.grid(True)
    plt.show()

上述的可视化步骤主要是

  1.将需要可视化的变量加入summary,做好可视化的定义操作

  2.merged_summary_op = tf.summary.merge_all() # 合并所有的summary

  3.创建summary_wirter对象,并将图写入文件

  4.获取可视化的数据,通过summary_writer对象将数据进行写入

 

在程序运行完,将会在指定好的路径中生成日志文件,

技术分享图片

通过命令行工具切换到该目录,

 技术分享图片

执行命令:tensorboard --logdir=生成的日志文件的路径

技术分享图片

打开浏览器进行查看,

 技术分享图片

定义的图的结构:

技术分享图片

 

TensorFlow——TensorBoard可视化

原文:https://www.cnblogs.com/baby-lily/p/10931302.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!