【Python深度学习】Python全栈体系(三十一)

深度学习

第九章 Tensorboard 可视化

Tensorboard 工具

1. 什么是可视化?
  • 可视化是用来查看在 Tensorflow 平台下程序运行的过程,包括:张量/变量,操作,数据流,学习过程等,从而方便 Tensorflow 程序的理解、调试与优化
  • Tensorflow 提供了专门的可视化工具 tensorboard,它将 Tensorflow 执行的数据、模型、过程用图形方式进行显示。Tensorflow 在执行过程中,可以通过某些操作,将模型、数据、graph等信息,保存到磁盘中的 Events 文件中去,从而提供给 Tensorboard 进行可视化
2. 启动 tensorboard
  • 使用以下命令启动 tensorboard
    • tensorboard --logdir=“PycharmProjects/tensorflow_study/summary/”
  • 其中,logdir参数的值为事件文件存储目录,启动成功后可以看到如下信息,使用提示的URL地址和端口进行访问:
    在这里插入图片描述
3. tensorboard 主页

在这里插入图片描述

4. 为操作添加可视化
# 将图中的信息存入事件文件,并在tensorboard中显示示例
import tensorflow as tf

tf.compat.v1.disable_eager_execution()

# 创建一组操作
a = tf.constant([1, 2, 3, 4, 5])  # 普通张量
var = tf.Variable(tf.compat.v1.random_normal([2, 3], mean=0.0, stddev=1.0),
                  name="var")  # 变量
b = tf.constant(3.0, name="a")  # 这里故意将python变量和tf的op名称取的不一致
c = tf.constant(4.0, name="b")
d = tf.add(b, c, name="add")

# 显式初始化
init_op = tf.compat.v1.global_variables_initializer()

with tf.compat.v1.Session() as sess:
    sess.run(init_op)
    # 将当前session的graph信息写入事件文件
    fw = tf.compat.v1.summary.FileWriter("../summary/", graph=sess.graph)
    print(sess.run([a, var, d]))

"""
[array([1, 2, 3, 4, 5]), array([[ 0.3767314 , -1.4588505 ,  0.07674389],
       [ 0.10296078,  1.2612373 , -0.423312  ]], dtype=float32), 7.0]
"""
5. 摘要与事件文件操作
  • 如果需要将变量/张量在tensorboard中显示,需要执行以下两步:
    • 收集变量:
      • tf.summary.scalar(name, tensor) # 收集标量,name为名字,tensor为值
      • tf.summary.histogram(name, tensor) # 收集高维度变量参数
      • tf.summary.image(name, tensor) # 收集图片张量
    • 合并变量并写入事件文件:
      • merged = tf.summary.merge_all() # 合并所有变量
      • summary = sess.run(merged) # 运行合并,每次迭代训练都需要运行
      • FileWriter.add_summary(summary, i) # 添加摘要,i表示第几次的值

第十章 综合案例:实现线性回归

综合案例:实现线性回归

  • 任务描述:
    • 给定一组输入、输出作为样本
    • 定义线性模型,并进行训练
    • 将训练过程可视化
      在这里插入图片描述
# 线性回归示例
import tensorflow as tf

tf.compat.v1.disable_eager_execution()
# 第一步:创建样本数据
# 100行1列
x = tf.compat.v1.random_normal([100, 1], mean=1.75, stddev=0.5, name="x_data")
y_true = tf.matmul(x, [[2.0]]) + 5.0  # 计算 y = 2x + 5

# 第二步:建立线性模型
# 初始化权重(随机数)和偏置(固定设置为0),计算wx+b得到预测值
weight = tf.Variable(tf.compat.v1.random_normal([1, 1], name="w"),
                     trainable=True)  # 训练过程中值是否允许变化
bias = tf.Variable(0.0, name="b", trainable=True)  # 偏置
y_predict = tf.matmul(x, weight) + bias  # 计算预测值
# 第三步:创建损失函数
loss = tf.reduce_mean(tf.square(y_true - y_predict))  # 均方差损失函数
# 第四步:使用梯度下降进行训练
# 0.1 学习率
train_op = tf.compat.v1.train.GradientDescentOptimizer(0.1).minimize(loss)
# 收集损失函数的值
tf.compat.v1.summary.scalar("losses", loss)
merged = tf.compat.v1.summary.merge_all()  # 合并摘要操作

init_op = tf.compat.v1.global_variables_initializer()

with tf.compat.v1.Session() as sess:
    sess.run(init_op)  # 执行初始化op

    # 打印初始权重和偏置
    print("weight: ", weight.eval(), "bias: ", bias.eval())

    # 指定事件文件并记录图的信息
    fw = tf.compat.v1.summary.FileWriter("../summary/", graph=sess.graph)
    # 循环训练
    for i in range(500):
        sess.run(train_op)  # 执行训练
        summary = sess.run(merged)  # 执行摘要合并操作
        fw.add_summary(summary, i)  # 写入事件文件
        print(i, ":", " weight: ", weight.eval(), "bias: ", bias.eval())
"""
weight:  [[0.33808643]] bias:  0.0
0 :  weight:  [[3.290972]] bias:  1.5962065
1 :  weight:  [[3.630976]] bias:  1.8313535
2 :  weight:  [[3.6257746]] bias:  1.8716582
...
497 :  weight:  [[2.0047247]] bias:  4.990969
498 :  weight:  [[2.0046072]] bias:  4.9910398
499 :  weight:  [[2.0047135]] bias:  4.991211
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柠檬小帽

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

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

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

打赏作者

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

抵扣说明:

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

余额充值