持续创作,加快成长!这是我参与「日新方案 10 月更文应战」的第20天,点击检查活动概况
1. 事例回忆
上一篇文章咱们搭建了完好线性回归模型并进行1000轮练习,达到了较为不错的作用。本文将首要介绍在完好机器学习中的其他功能与流程,比方将练习丢失可视化,Tensorboard显现变量,自定义添加命名空间,模型保存等等。
2. 添加变量显现
在TensorBoard当中观察模型的参数、丢失值等变量值的改变。不同的数据要用不同的方式去搜集,比方标量数据用.scalar
,高维度数据用.histogram
等。
搜集变量:
-
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表示第几次的值,将summary对象写入到事情文件中
3. 代码演示
进程1:导入所需库
import tensorflow as tf
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
进程2:线性回归并搜集变量
- 咱们在
./File/linear
目录下创立了事情文件,用来保存变量中间成果 - 需求在练习时的每一次循环后将变量写入事情
- 本事例演示中,首要用到搜集变量与变量合并写入事情,最终得到可视化成果
- 首要流程为:
- 创立事情
- 搜集变量
- 合并变量
- 写入变量
def linear_regression():
"""
完成线性回归
"""
# 1.1 预备数据
X = tf.random_normal(shape=[100,1])
y_true = tf.matmul(X, [[0.5]]) + 1 # matmul矩阵运算
# 1.2 模型结构
# 定义模型参数
# 用变量来定义
weights = tf.Variable(initial_value=tf.random_normal(shape=[1,1])) # 需求给一个初始设置:正态散布随机初始值;一行一列
bias = tf.Variable(initial_value=tf.random_normal(shape=[1,1]))
y_predict = tf.matmul(X, weights) + bias
# 1.3 丢失函数
error = tf.reduce_mean(tf.square(y_predict-y_true))
# 1.4 优化丢失
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error)
# 2) 搜集变量
tf.summary.scalar("error", error)
tf.summary.histogram("weights", weights)
tf.summary.histogram("bias", bias)
# 3) 合并变量
merged = tf.summary.merge_all()
# 2. 初始化变量
init = tf.global_variables_initializer()
# 3. 敞开会话
with tf.Session() as sess:
sess.run(init)
# 1) 创立事情文件
file_writer = tf.summary.FileWriter("./File/linear", graph=sess.graph)
# 检查初始化模型参数的值
print("练习前模型参数为:权重%f, 偏置%f, 丢失%f" %(weights.eval(), bias.eval(), error.eval()))
# 4. 开始练习
for i in range(1000):
sess.run(optimizer)
print("第%d次练习后模型参数为:权重%f, 偏置%f, 丢失%f" %(i+1, weights.eval(), bias.eval(),error.eval()))
# 运转合并变量操作
summary = sess.run(merged)
# 将每次迭代后的变量写入事情文件
file_writer.add_summary(summary, i)
return None
linear_regression()
通过1000轮练习得到的成果如下图所示:

进程3:TensorBoard可视化
一起,咱们还在当前目录下建立了新的目录,File/linear。在这个目录下记录了变量的改变进程,咱们能够使用Tensorboard将其打开,检查可视化练习进程。

File文件中是刚才保存变量的事情,需求Tensorboard将其打开检查。

需求咱们打开anaconda promp,然后在其中进入到安装tensorflow的虚拟环境中。进入到事情地点上级目录。
cd 文件保存上级目录path
tensorboard --logdir=./File/linear/
可视化图成果如下所示:

模型丢失改变图如下所示:

权重weight与偏置bias项改变进程如下所示:

权重weight与偏置bias散布直方图如下所示:

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。