type
status
date
slug
summary
tags
category
icon
password
😀
CV 领域的 Hello world
 

📝 主旨内容

MNIST数据集

MNIST数据集是机器学习领域中最著名的数据集之一,主要用于手写数字识别。它包含了70,000张大小为28x28像素的灰度图像,这些图像代表了0到9的数字。数据集被分为两部分:60,000张图像用于训练模型,而剩余的10,000张用于测试模型的性能。MNIST数据集因其规模适中且难度适中,常被用作计算机视觉和机器学习算法的入门级测试平台。
notion image

开始训练噜!

下面是训练步骤,请一步一步来操作,如有问题参照参考链接或者评论区评论

Datasets 准备

2.对测试数据进行分析

2.1

2.2
notion image

3.搭建网络

4.模型训练函数

notion image
state_dict()
在PyTorch中,state_dict()是一个函数,用于返回包含模型或优化器参数的Python字典。对于模型,这个字典包含每一层的参数和持久状态。对于优化器,它包含关于优化器状态以及所使用的超参数的信息。使用state_dict()的主要目的是方便模型的保存和加载,因此你可以在训练过程中保存当前模型的状态,并在之后的时间点加载模型继续训练或进行推理。

5.模型测试函数

需要将之前的train(1)给注释掉,让networkd state_dict中没有模型参数,这样对原始测试集合的准确率才是10%,否则得到的是训练一个epoch后的模型测试结果,大概为94%;请注意区分
notion image
notion image
 

6.正式模型训练

notion image
 
可以看到,n_epoch设置为3时准确率就达到了97%(实际上epoch为1的时候准确率就为94%)

7.从检查点处持续训练

从第一次训练运行保存的state_dicts中继续进行训练,需要重新初始化一组新的网络和优化器

8.利用swanlab可视化训练过程

(建议首先阅读swanlab文档,非常详细!我奶奶都能看懂)

一、安装swanlab

swanlab是一个用于可视化机器学习过程的开源库,首先使用以下命令安装

二、进行初始化

swanlab.init 注意,因为train和test函数中进行了一点测试,如果你未对测试代码进行注释,需要将初始化函数提前,下一步为记录权重,根据swanlab的文档,需要先进行初始化,才能记录参数

三、记录参数(train_loss, test_loss, test_acc)

swanlab.log 添加以下三行代码,位置在函数之中,分别记录三个权重
notion image
notion image

四、打开实验看板

终端中使用以下命令打开实验看板,进行图像观察

9.结果展示

notion image
在每一个epoch中,test_loss都是逐渐增加,test_acc逐渐增加,可以看到,其实在前几个batch中,test_acc已经相当高了,
train_loss都是逐渐减小,这也是符合规律的

10.使用gpu加速训练 optional

这些修改应该在定义网络和优化器之后、训练和测试循环开始之前完成,这样可以确保你的模型训练和评估过程充分利用了gpu资源
你只需要操作以下简洁的几步即可完成
1.设置device
2.绑定device至网络实例上
3.将数据移动到GPU上
notion image
notion image

🤗 总结归纳

第一次写这么大篇幅的文章,收获是满满的,大家放心,给你们的代码我手写了3遍,绝对是能走通的,而且代码仓库我已经放底下咯

📎 参考文章

 
💡
有关这篇博客的任何问题,欢迎您在底部评论区留言,我会在github邮箱中第一时间收到邮件,让我们一起交流~
Docker 多阶段构建从MVC架构理解后端设计
  • Giscus
Zachary_Yang
Zachary_Yang
一个普通的干饭人🍚
Announcement
🎉欢迎来到我的博客🎉
-- 亲爱的读者们,你们好! ---
👏在这里,我希望能够和你们一起分享我对生活的观察、对技术的理解和热爱,暂将博客分为以下几个栏目👏
🌿 心绪漫卷边:一些小随笔
🌌 智绘非遇路:AI领域
😊 浅笑编程边:前后端开发
🛠 技术汇流石下:零散技术分享

祝好,
Zachary_Yang