tensorflow(七)—可视化工具TensorBoard的使用

导读:本篇文章讲解 tensorflow(七)—可视化工具TensorBoard的使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

tensorflow—可视化工具TensorBoard的使用

一、TensorBoard介绍
1.TensorBoard使用流程

可视化的数据是数据流图和张量,题目需要在会话中加载或执行操作后才能获取。然后用户需要使用FileWriter实例将这些数据写入事件文件。最后,启动TensorBoard加载事件文件中的序列化数据,从而可以在各个面板中展示对应的可视化对象。

TensorBoard使用流程:
在这里插入图片描述
TensorBoard可视化工作流:
在这里插入图片描述

2.抽象结点

如果我们将所有的操作完全的加载到面板上,会显得整个数据流图非常的乱,无法一眼清晰的看出整个结构,这样很不方便。所以,我们将有些操作合并起来,取一个名字,生成一个抽象的结点,这些抽象的结点再在面板上可视化就显得结构清晰,不那么的乱。
在这里插入图片描述
上图左边是所有的结点都加载,右边是加载抽象结点,可以看见,右边明显要比左边好。

那么如何生成抽象结点呢?
with tf.name_scope('抽象结点名称'):来实现, 比如,将X,Y变量的声明抽象为一个input操作:

with tf.name_scope('input'):
    # 输入 X, 形状[47, 3]
    X = tf.placeholder(tf.float32, X_data.shape)
    # 输出 Y, 形状[47, 1]
    Y = tf.placeholder(tf.float32, Y_data.shape)

二、TensorBoard使用
1.生成模型的可视化图

(1)不使用抽象结点的可视化
FileWriter(r"文件路径", sess.graph)函数,使用该函数记得close(),拿之前的房价预测模型的例子:

alpha = 0.01  # 学习率 alpha = 0.01
epoch = 500  # 训练全局变量的轮数

# 创建线性回归模型(数据流图)

# 1.声明变量
# 输入 X, 形状[47, 3]
X = tf.placeholder(tf.float32, X_data.shape)
# 输出 Y, 形状[47, 1]
Y = tf.placeholder(tf.float32, Y_data.shape)
# 权重变量W,形状[3, 1] 就是训练参数
W = tf.get_variable('Www', (3, 1), initializer=tf.constant_initializer())  # 用tf.constant_initializer()设置参数的初始值,为常数,默认为1

# 2.假设函数 h(x) = w0*x0 + w1*x1 + w2*x2
# 推理值 Y_pred 形状[47, 1]
Y_pred = tf.matmul(X, W)

# 3.建立目标函数
# 损失函数为最小二乘法, Y_pred - Y是形如[47, 1]的向量
emp_op = 1 / (2 * len(X_data)) * tf.matmul((Y_pred - Y), (Y_pred - Y), transpose_a=True)

# 4.优化算法
# 采用梯度下降的优化算法
opt = tf.train.GradientDescentOptimizer(learning_rate=alpha)
# 单步训练操作
train_op = opt.minimize(emp_op)

# 5.创建会话(运行环境)
with tf.Session() as sess:
    # 初始化全局变量
    sess.run(tf.global_variables_initializer())
    # 填充数据
    for e in range(1, epoch + 1):
        sess.run(train_op, feed_dict={X: X_data, Y: Y_data})
        loss, w = sess.run([emp_op, W], feed_dict={X: X_data, Y: Y_data})
        if e%10 == 0:
            loss, w = sess.run([emp_op, W], feed_dict={X: X_data, Y: Y_data})
            print('epoch:{} \t loss={} \t Model: y={}*x2 + {}*x1 + {}'.format(e, loss[0][0], w[1][0], w[2][0], w[0][0]))

在anaconda prompt中使用tensorboard --logdir="C:\Users\Dream^hao\tensorflow_study\study\chapter-4\summary\graph-1"查看:
在这里插入图片描述
然后在浏览器中打开:http://localhost:6006/就可以看到可视化的图
生成的可视化图为:
在这里插入图片描述

(2)使用抽象结点后生成的代码:

alpha = 0.01  # 学习率 alpha = 0.01
epoch = 500  # 训练全局变量的轮数

# 创建线性回归模型(数据流图)

with tf.name_scope('input'):
    # 1.声明变量
    # 输入 X, 形状[47, 3]
    X = tf.placeholder(tf.float32, X_data.shape)
    # 输出 Y, 形状[47, 1]
    Y = tf.placeholder(tf.float32, Y_data.shape)

with tf.name_scope('hypotheis'):
    # 权重变量W,形状[3, 1] 就是训练参数
    W = tf.get_variable('Www', (3, 1), initializer=tf.constant_initializer())  # 用tf.constant_initializer()设置参数的初始值,为常数,默认为1

    # 2.假设函数 h(x) = w0*x0 + w1*x1 + w2*x2
    # 推理值 Y_pred 形状[47, 1]
    Y_pred = tf.matmul(X, W)

with tf.name_scope('loss'):
    # 3.建立目标函数
    # 损失函数为最小二乘法, Y_pred - Y是形如[47, 1]的向量
    emp_op = 1 / (2 * len(X_data)) * tf.matmul((Y_pred - Y), (Y_pred - Y), transpose_a=True)

with tf.name_scope('train'):
    # 4.优化算法
    # 采用梯度下降的优化算法
    opt = tf.train.GradientDescentOptimizer(learning_rate=alpha)
    # 单步训练操作
    train_op = opt.minimize(emp_op)

# 5.创建会话(运行环境)
with tf.Session() as sess:
    # 初始化全局变量
    sess.run(tf.global_variables_initializer())
    # 创建 FileWriter 实例
    writer = tf.summary.FileWriter('./summary/graph-1/', sess.graph)
    # 填充数据
    for e in range(1, epoch + 1):
        sess.run(train_op, feed_dict={X: X_data, Y: Y_data})
        loss, w = sess.run([emp_op, W], feed_dict={X: X_data, Y: Y_data})
        if e%10 == 0:
            loss, w = sess.run([emp_op, W], feed_dict={X: X_data, Y: Y_data})
            print('epoch:{} \t loss={} \t Model: y={}*x2 + {}*x1 + {}'.format(e, loss[0][0], w[1][0], w[2][0], w[0][0]))
writer.close()

使用抽象结点后生成的可视化图为:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84736.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!