深度学习
第九章 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. 为操作添加可视化
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")
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)
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()
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
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))
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)
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
"""