4082|5

59

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

#AI挑战营第一站#MNIST手写数字识别的成功复现没有优化 [复制链接]

本帖最后由 crimsonsnow 于 2024-4-25 22:55 编辑

 

首先说下配置,因为我N卡的电脑内存爆了...CUDA安装不上。最后我使用的电脑是A卡,没有GPU,直接使用CPU进行训练的类型。

然后python环境管理工具是anaconda,代码环境是pycharm。

不像大神们轻轻松松,我在配置环境的时候遭遇了数不胜数...的问题,光是成功复现实例都用尽全力了...辛酸泪尽在不言中,非常抱歉我懂是我菜。在这里只能着重给大家分享下踩坑经历了。

首先是经典matlabplot问题,没有深入去搜索,按照CSDN上找到的随便一篇帖子,是在设置中关闭在pycharm直接显示图像的功能,然后在下方加plt.show()函数。没解决。第二个问题是matlib和qt包版本可能不兼容,卸载重下。但问题依然没有解决。所以我就搁置了,换方法。

哦对了还有装包的时候注意去anaconda的命令行而不是主机的命令行(虽然好像也可以?)的问题,虽然大家的水平应该都不会犯我这么菜的错误了吧,哈哈...

然后我一开始是用VS的,后来发现还是pycharm才是python亲妈,插件也会主动提示帮你装,所以还是用pycharm开发python环境更好。不过这都不是我弃用vscode的直接原因,因为我又双叒叕在vs上遇到问题了。我用VS复现一个实例的时候,虽然能跑通,但是模型无法进行自动保存,白跑了。是换了pycharm的时候才解决的,这问题就比较诡异了我理解不了,只能建议大家都去用pycharm。

总而言之,大部分的问题装好包和配置好环境就能解决,然后复现就是比较简单的事情了。

然后代码部分我基本全是参考的优秀坛友教程,非常感谢前人探路,后人乘凉,大家都非常的优秀!

 

环境配置就不再说了,anaconda基本就是打开官网下载然后安装就结束了,只要你的电脑内存够,基本啥事没有,老生常谈的问题就是注意配置环境变量path。而在安装的时候有个选项是可以直接勾选的,虽然勾选会给你飘红,但反正我是勾了,目前还没啥问题。

如果不进行官方勾选写入路径,就需要自己搜索找到路径文件然后写入几条了,具体内容网上教程很多,不再赘述。

 

模型训练就不是很困难的部分了,我在这里也是给大家读优秀源码罢了。

 第二个尝试也是参考(你们都懂得这是说话的艺术)坛友的模型设计,包含三个卷积层和两个全连接层。每个卷积层后面都跟着一个批量归一化(Batch Normalization)层和ReLU激活函数,然后是一个最大池化层。在全连接层之间,还有一个Dropout层用于防止过拟合。话说我是不是要@一下原作者比较好,但我不知道论坛怎么@人,只能先感谢所有的坛友了。。

  • class OptimizedConvNet(nn.Module):
  • def __init__(self, num_classes=10):
  • super(OptimizedConvNet, self).__init__()
  • self.layer1 = nn.Sequential(
  • nn.Conv2d(1, 16, kernel_size=5, stride=1, padding=2),
  • nn.BatchNorm2d(16),
  • nn.ReLU(),
  • nn.MaxPool2d(kernel_size=2, stride=2))
  • self.layer2 = nn.Sequential(
  • nn.Conv2d(16, 32, kernel_size=5, stride=1, padding=2),
  • nn.BatchNorm2d(32),
  • nn.ReLU(),
  • nn.MaxPool2d(kernel_size=2, stride=2))
  • self.layer3 = nn.Sequential(
  • nn.Conv2d(32, 64, kernel_size=5, stride=1, padding=2),
  • nn.BatchNorm2d(64),
  • nn.ReLU(),
  • nn.MaxPool2d(kernel_size=2, stride=2))
  • self.fc1 = nn.Linear(3 * 3 * 64, 500)
  • self.dropout = nn.Dropout(0.5)
  • self.fc2 = nn.Linear(500, num_classes)
  • def forward(self, x):
  • out = self.layer1(x)
  • out = self.layer2(out)
  • out = self.layer3(out)
  • out = out.reshape(out.size(0), -1)
  • out = self.fc1(out)
  • out = self.dropout(out)
  • out = self.fc2(out)
  • return out

然后是超参数和损失函数,可以通过改这些参数来优化模型,即使是小白如我也知道(废话中的废话),不过单纯修改参数作用并不大,我是没看出什么来(又是一句废话)

  • # 定义超参数
  • learning_rate = 0.001
  • batch_size = 64
  • num_epochs = 10
  • # 定义损失函数和优化器
  • criterion = nn.CrossEntropyLoss()
  • optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)

还有就是我看到大家选择的引入mnist训练集和测试集的方法基本都是直接引入下载函数,download=True那个,相对来说,我还没有遇到过MNIST下载出现的问题,当然,这个也可以先下载好了然后本地引入。注意到MNIST本地引入的教程大多是20,19年之前的东西了,之后基本直接下载不再出现什么问题了,这说明了什么呢,可能是网变好了(对不起我真的不知道

  • def load_mnist():
  • path = r'C:\Users\Administrator\Desktop\study\mnist.npz' #放置mnist.py的目录。注意斜杠
  • f = np.load(path)
  • x_train, y_train = f['x_train'], f['y_train']
  • x_test, y_test = f['x_test'], f['y_test']
  • f.close()
  • return (x_train, y_train), (x_test, y_test)
  • (train_image,train_label),(test_image,test_label) = load_mnist()

以及我看到很多人都做了GPU和CPU验证,以便在拥有GPU的情况能够挪到GPU上进行训练,当然我这边是一直只有CPU的了。。。

mnist_model.onnx

232.28 KB, 下载次数: 0

mnist_model.pth

234.36 KB, 下载次数: 0

model_test.py

1.55 KB, 下载次数: 0

pytorch_number.py

5.29 KB, 下载次数: 0

best_model.pth

1.38 MB, 下载次数: 0

mnist.py

3.68 KB, 下载次数: 0

model.onnx

1.37 MB, 下载次数: 0

toOnnx.py

1.62 KB, 下载次数: 0

最新回复

好好学习,天天向上,加油每一个人,加油自己,加油!!!   详情 回复 发表于 2024-10-29 21:10
点赞 关注(1)

回复
举报

6947

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

玩这个MNIST手写数字识别,用环境是pycharm对电脑配置要求多高么

点评

MNIST 要求不高,图片本身很小,CPU都能跑下来  详情 回复 发表于 2024-5-11 17:34
我觉得理论来说能装win10的电脑就可以了...说不定从没做过的新机还更好,我的电脑是因为被我玩坏了经常有奇怪的问题  详情 回复 发表于 2024-4-26 09:41
 
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
Jacktang 发表于 2024-4-26 07:31 玩这个MNIST手写数字识别,用环境是pycharm对电脑配置要求多高么

我觉得理论来说能装win10的电脑就可以了...说不定从没做过的新机还更好,我的电脑是因为被我玩坏了经常有奇怪的问题


 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

4
 

不知道为什么找不到帖子编辑的按钮补充最佳测试准确率截图97.04%


mmexport1715240201658.jpg (0 Bytes, 下载次数: 0)

mmexport1715240201658.jpg
 
 
 

回复

7753

帖子

2

TA的资源

五彩晶圆(高级)

5
 
Jacktang 发表于 2024-4-26 07:31 玩这个MNIST手写数字识别,用环境是pycharm对电脑配置要求多高么

MNIST 要求不高,图片本身很小,CPU都能跑下来

 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

419

帖子

0

TA的资源

纯净的硅(中级)

6
 

好好学习,天天向上,加油每一个人,加油自己,加油!!!

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条
电源解决方案和技术 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表