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

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()

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ElegantCodingWH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值