深度学习——训练过程实时可视化损失函数走势(附代码)

本文主要是介绍深度学习——训练过程实时可视化损失函数走势(附代码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

深度学习训练过程实时可视化损失函数可以帮助我们更好地了解模型的训练情况,从而做出更合理的训练决策。

目录

  • 一、可视化损失函数好处
  • 二、可视化损失函数代码
    • 2.1 边训练边可视化
      • 2.1.1 代码
      • 2.1.2 实时可视化效果
    • 2.2 训练完后绘画损失函数
      • 2.2.1 代码
      • 2.2.2 训练完绘制效果
  • 三、总结

一、可视化损失函数好处

帮助我们判断模型是否在正确的方向上训练。如果损失函数一直在下降,说明模型正在逐渐拟合训练数据。如果损失函数一直在上升,说明模型可能存在过拟合或欠拟合的问题。

帮助我们确定训练是否已经收敛。如果损失函数的下降趋势已经平缓,说明模型已经收敛。如果损失函数仍然在下降,说明模型还可以继续训练。

帮助我们调整训练参数。如果损失函数的下降趋势不理想,我们可以调整训练参数,例如学习率、批处理尺寸等,以提高模型的训练效果。

二、可视化损失函数代码

2.1 边训练边可视化

2.1.1 代码

下面给出了一个完整的的训练过程代码,并在中间加了试试可视化代码,学者参考代码架构,在自己代码中将损失函数添加到列表loss_list中,再自定义调整多少个epoch绘画一个损失函数点。具体代码见下:

import torch
import torch.optim as optim  # 导入优化器模块
import matplotlib.pyplot as plt# 定义损失函数
def loss_fn(y_true, y_pred):return torch.mean((y_true - y_pred)**2)# 定义模型
model = torch.nn.Linear(10, 1)# 定义训练数据
x_train = torch.randn(1000, 10)
y_train = torch.randn(1000, 1)# 定义优化器
optimizer = optim.Adam(model.parameters(), lr=0.001)  # 使用 Adam 优化器,学习率为 0.001# 定义损失函数
loss_list = []# 开始训练
for epoch in range(10000):# 前向传播y_pred = model(x_train)# 计算损失loss = loss_fn(y_train, y_pred)loss_list.append(loss.item())# 反向传播loss.backward()# 更新参数optimizer.step()# 展示损失if epoch % 10 == 0:    # 10 个epoch绘画一个损失函数点,可以自定义print(f"epoch {epoch}: loss {loss.item()}")# 更新损失曲线plt.cla()plt.plot(loss_list)plt.xlabel("epoch")plt.ylabel("loss")plt.pause(0.01)# 绘制损失曲线
plt.show()

2.1.2 实时可视化效果

运行上面代码后,会弹出一个窗口,实时绘制损失函数的走势,如下:

在这里插入图片描述

2.2 训练完后绘画损失函数

2.2.1 代码

具体代码见下:

import matplotlib.pyplot as plt
import torch
import torch.optim as optim  # 导入优化器模块# 定义损失函数
def loss_fn(y_true, y_pred):return torch.mean((y_true - y_pred)**2)# 定义模型
model = torch.nn.Linear(10, 1)# 定义训练数据
x_train = torch.randn(1000, 10)
y_train = torch.randn(1000, 1)# 定义优化器
optimizer = optim.Adam(model.parameters(), lr=0.001)  # 使用 Adam 优化器,学习率为 0.001# 定义损失函数
loss_list = []# 开始训练
for epoch in range(10000):# 前向传播y_pred = model(x_train)# 计算损失loss = loss_fn(y_train, y_pred)loss_list.append(loss.item())# 反向传播loss.backward()# 更新参数optimizer.step()# 展示损失if epoch % 10 == 0:print(f"epoch {epoch}: loss {loss.item()}")# 绘制损失曲线
plt.plot(loss_list)
plt.xlabel("epoch")
plt.ylabel("loss")
plt.show()

2.2.2 训练完绘制效果

该模式下,要训练完窗口才会弹出来。

在这里插入图片描述

三、总结

以上就是深度学习训练过程实时可视化损失函数走势的方法,当然还可以通过其它方法实时可视化损失函数走势,比如:

(1)使用图表工具绘制损失函数的曲线。这种方法直观易懂,可以帮助我们快速了解损失函数的变化趋势。

(2)使用日志文件记录损失函数的值。这种方法可以让我们在训练结束后再进行分析,但不如图表工具实时性强。

(3)使用可视化工具直接在训练过程中显示损失函数的值。这种方法最直观,但需要使用特定的工具。

上面方法希望能帮到你,学者灵活使用代码。

总结不易,扫下方二维码关注 视觉研坊,学习更多最新开源资源,多多支持,谢谢!

这篇关于深度学习——训练过程实时可视化损失函数走势(附代码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642138

相关文章

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

PLsql Oracle 下载安装图文过程详解

《PLsqlOracle下载安装图文过程详解》PL/SQLDeveloper是一款用于开发Oracle数据库的集成开发环境,可以通过官网下载安装配置,并通过配置tnsnames.ora文件及环境变... 目录一、PL/SQL Developer 简介二、PL/SQL Developer 安装及配置详解1.下

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE