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

本文介绍了如何使用TensorBoard在深度学习训练中实时可视化损失函数,包括边训练边可视化和训练完成后绘制。通过可视化,可以评估模型性能,调整参数并检测收敛。
摘要由CSDN通过智能技术生成

更好用且专业的曲线绘制借助工具TensorBoard,关于TensorBoard的使用教程,推荐看博文:模型训练添加TensorBoard实时分析可视化训练过程

如果使用TensorBoard显示多损失函数曲线时,多条曲线颜色自定义修改,推荐看博文:TensorBoard自定义修改单条及多条曲线颜色

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

一、可视化损失函数好处

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

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

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

二、可视化损失函数代码

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)使用可视化工具直接在训练过程中显示损失函数的值。这种方法最直观,但需要使用特定的工具。

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

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

  • 12
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
深度学习是一种利用神经网络进行学习和预测的技术,可以适用于各种领域的应用。在Matlab中,可以使用很多开源的深度学习库,如TensorFlow、Keras、MXNet等。在本文中,我主要介绍使用Matlab自带的深度学习库——Deep Learning Toolbox进行编程的方法。 首先,需要准备好训练数据和标签数据,并对数据进行初步处理,如归一化、划分训练集和验证集等操作。然后,可以选择合适的神经网络模型,如卷积神经网络(Convolutional Neural Network, CNN)、循环神经网络(Recurrent Neural Network, RNN)等,并根据实际情况配置网络结构和参数。可以通过以下代码实现: model = <选择合适的神经网络模型>; layers = <配置网络层>; options = trainingOptions(<设置训练选项>); 接下来,可以调用Matlab中的trainNetwork函数对模型进行训练和优化,如下所示: net = trainNetwork(<训练数据>,<标签数据>,<网络结构>,<训练选项>); 在训练过程中,可以利用Matlab的插件工具箱进行监控和可视化,如Network Analyzer、Classification Learner等。 当模型训练完成后,可以使用evaluate和classify函数进行测试和预测,如下所示: result = evaluate(<测试数据>,<测试标签>,<网络结构>); [label, score] = classify(<测试数据>,<网络结构>); 最后,可以利用Matlab的一些图形界面工具箱(如UIFigure、GUIDE等)将代码封装成一个完整的应用程序,以方便用户进行调用和使用。 总而言之,使用Matlab进行深度学习编程是一种简单快捷、易于掌握的方式,有助于开发出高效、准确的深度学习模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

视觉研坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值