TensorBoard可视化在机器学习中的应用

释放双眼,带上耳机,听听看~!
本文介绍如何使用TensorBoard在机器学习中进行变量显示、损失函数可视化和模型保存等功能,加速机器学习模型的开发和优化。掌握这些技巧可以帮助你更好地理解模型的训练过程和效果,并提升模型的性能。

持续创作,加速成长!这是我参与「掘金日新计划 · 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轮训练得到的结果如下图所示:

TensorBoard可视化在机器学习中的应用

步骤3:TensorBoard可视化

同时,我们还在当前目录下建立了新的目录,File/linear。在这个目录下记录了变量的变化过程,我们可以使用Tensorboard将其打开,查看可视化训练过程。

TensorBoard可视化在机器学习中的应用

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

TensorBoard可视化在机器学习中的应用

需要我们打开anaconda promp,然后在其中进入到安装tensorflow的虚拟环境中。进入到事件所在上级目录。

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

可视化图结果如下所示:

TensorBoard可视化在机器学习中的应用

模型损失变化图如下所示:

TensorBoard可视化在机器学习中的应用

权重weight与偏置bias项变化过程如下所示:

TensorBoard可视化在机器学习中的应用

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

TensorBoard可视化在机器学习中的应用

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

掘金日新计划·10月更文挑战第15天|加速成长!

2023-12-21 17:44:14

AI教程

机器学习模型训练与预测实践

2023-12-21 17:58:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索