代码获取请单击此处 HIT_AI_Intro_Exp
快速开始
1. 数据集准备
我们从网络上下载 MNIST_data 数据集,解压后放在文件夹下,可以看到分为训练集和测试集两部分

2. 训练模型 首先,你需要在电脑上安装 uv 工具(如果你熟悉 conda 也可以)。uv 安装随便去网上搜搜教程就行
拥有 uv 后,请你运行
uv --version
如果显示了版本则说明 uv 正常安装了
然后运行以下命令,安装所需要的 Python 包(如果你用过 conda 就是安装 requirenments.txt 里面的包,请使用 python 3.10)
uv sync
我们安装的是以下包,最重要的是 mindspore 训练框架
然后训练我们的模型。命令为
uv run train.py --ckpt_path ./ckpt
可以看到训练开始了,显示每一轮以及损失
最终我们看到ckpt/下有一系列检查点,这些也就是我们训练得到的模。,最后一个 4-10 也就是第 10 个 epoch 得到的模型,最完整的模型

3. 评估模型 我们使用最后一个 checkpoint 得到的模型来使用 test 数据集进行评估
uv run eval.py --ckpt_path ckpt/checkpoint_lenet_4-10_1875.ckpt
运行如下图
可以看到精度 98.88%,还是很不错的。接下来我们将使用图片真实的从使用角度测试该模型
3. PNG 推理(Streamlit) 想用真实 PNG 图片快速体验模型效果,可以启动 Streamlit 小应用:
uv run streamlit run streamlit_infer.py --server.port 8501
启动后在页面左侧填写 .ckpt 模型路径(默认会尝试 ckpt/ 目录下最新的文件),上传 PNG 手写数字,即可看到缩放后的输入图像与预测结果。

在这个页面拖拽上传一个 test_images/下的文件即可预测

主要文件讲解
实验总目录框架
主要为checkpoint,数据集,网络定义,训练和验证脚本

train.py
这个是主要采用mindspore框架训练一个 LeNet 网络的模型来进行手写预测。首先需要设定执行上下文
然后设定损失函数和优化器。使用 mean 作为损失函数

lenet.py
这里是我们重中之重。定义了我们该模型所采用的神经网络的形式。主要是采用卷积的形式来进行图像预测。此外还需要在输入层使用 ReLU 进行激活,并链接各个隐藏层

test.py
这是通过 mindspore 框架,使用测试集,得到一个模型精度
同样需要设置我们需要的 LeNet 网络形式,设定损失函数和优化器,然后加载 checkpoint,进行eval 验证
streamlit_infer.py
我们主要使用 mindspore 将模型转化为 tensor 推理的形式,并利用 softmax 函数计算出最终的前 n 个数字可能性。比如 3 的可能性是 98%,2 的可能性为 2% 这种结果,排名最高的就是模型预测的结果

全部预测结果
以下是全部的预测结果
