持续创作,加快成长!这是我参与「日新方案 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目录下创立了事情文件,用来保存变量中间成果
  • 需求在练习时的每一次循环后将变量写入事情
  • 本事例演示中,首要用到搜集变量与变量合并写入事情,最终得到可视化成果
  • 首要流程为:
    1. 创立事情
    2. 搜集变量
    3. 合并变量
    4. 写入变量
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轮练习得到的成果如下图所示:

【深度学习】TensorFlow线性回归案例演示(3)

进程3:TensorBoard可视化

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

【深度学习】TensorFlow线性回归案例演示(3)

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

【深度学习】TensorFlow线性回归案例演示(3)

需求咱们打开anaconda promp,然后在其中进入到安装tensorflow的虚拟环境中。进入到事情地点上级目录。

cd 文件保存上级目录path
tensorboard --logdir=./File/linear/

可视化图成果如下所示:

【深度学习】TensorFlow线性回归案例演示(3)

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

【深度学习】TensorFlow线性回归案例演示(3)

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

【深度学习】TensorFlow线性回归案例演示(3)

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

【深度学习】TensorFlow线性回归案例演示(3)

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