千家信息网

pytorch中如何使用迁移学习resnet18训练mnist数据集

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,pytorch中如何使用迁移学习resnet18训练mnist数据集,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。预备知识自己搭建cnn
千家信息网最后更新 2026年11月03日pytorch中如何使用迁移学习resnet18训练mnist数据集

pytorch中如何使用迁移学习resnet18训练mnist数据集,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

预备知识

  • 自己搭建cnn模型训练mnist(不使用迁移学习)

https://blog.csdn.net/qq_42951560/article/details/109565625

  • pytorch官方的迁移学习教程(蚂蚁、蜜蜂分类)

https://blog.csdn.net/qq_42951560/article/details/109950786

学习目标

今天我们尝试在pytorch中使用迁移学习来训练mnist数据集。

如何迁移

预训练模型

迁移学习需要选择一个预训练模型,我们这个任务也不是特别大,选择resnet18就行了。

数据预处理

resnet18输入的CHW是(3, 224, 224)

mnist数据集中单张图片CHW是(1, 28, 28)

所以我们需要对mnist数据集做一下预处理:

# 预处理my_transform = transforms.Compose([transforms.Resize((224, 224)),transforms.Grayscale(3),transforms.ToTensor(),transforms.Normalize((0.1307,0.1307,0.1307), (0.3081,0.3081,0.3081)),])# 训练集train_file = datasets.MNIST(root='./dataset/',train=True,transform=my_transform)# 测试集test_file = datasets.MNIST(root='./dataset/',train=False,transform=my_transform)

pytorch中数据增强和图像处理的教程(torchvision.transforms)可以看我的这篇文章

改全连接层

resnet18是在imagenet上训练的,输出特征数是1000;而对于mnist来说,需要分10类,因此要改一下全连接层的输出。

model = models.resnet18(pretrained=True)in_features = model.fc.in_featuresmodel.fc = nn.Linear(in_features, 10)

调整学习率

之前设置的Adam的学习率是1e-3,现在使用了迁移学习,所以学习率调小一点,改为1e-4。

训练结果

resnet18相较于普通的一两层卷积网络来说已经比较深了,并且mnsit数据集还是挺大的,总共有7万张图片。为了节省时间,我们使用7张GeForce GTX 1080 Ti来训练:

  • 数据并行(DataParallel)

EPOCH: 01/10 STEP: 67/67 LOSS: 0.0266 ACC: 0.9940 VAL-LOSS: 0.0246 VAL-ACC: 0.9938 TOTAL-TIME: 102EPOCH: 02/10 STEP: 67/67 LOSS: 0.0141 ACC: 0.9973 VAL-LOSS: 0.0177 VAL-ACC: 0.9948 TOTAL-TIME: 80EPOCH: 03/10 STEP: 67/67 LOSS: 0.0067 ACC: 0.9990 VAL-LOSS: 0.0147 VAL-ACC: 0.9958 TOTAL-TIME: 80EPOCH: 04/10 STEP: 67/67 LOSS: 0.0042 ACC: 0.9995 VAL-LOSS: 0.0151 VAL-ACC: 0.9948 TOTAL-TIME: 80EPOCH: 05/10 STEP: 67/67 LOSS: 0.0029 ACC: 0.9997 VAL-LOSS: 0.0143 VAL-ACC: 0.9955 TOTAL-TIME: 80EPOCH: 06/10 STEP: 67/67 LOSS: 0.0019 ACC: 0.9999 VAL-LOSS: 0.0133 VAL-ACC: 0.9962 TOTAL-TIME: 80EPOCH: 07/10 STEP: 67/67 LOSS: 0.0013 ACC: 1.0000 VAL-LOSS: 0.0132 VAL-ACC: 0.9963 TOTAL-TIME: 80EPOCH: 08/10 STEP: 67/67 LOSS: 0.0008 ACC: 1.0000 VAL-LOSS: 0.0132 VAL-ACC: 0.9963 TOTAL-TIME: 79EPOCH: 09/10 STEP: 67/67 LOSS: 0.0006 ACC: 1.0000 VAL-LOSS: 0.0122 VAL-ACC: 0.9962 TOTAL-TIME: 79EPOCH: 10/10 STEP: 67/67 LOSS: 0.0005 ACC: 1.0000 VAL-LOSS: 0.0131 VAL-ACC: 0.9959 TOTAL-TIME: 79| BEST-MODEL | EPOCH: 07/10 STEP: 67/67 LOSS: 0.0013 ACC: 1.0000 VAL-LOSS: 0.0132 VAL-ACC: 0.9963

训练10轮,最佳的模型出现在第7轮,最大准确率是0.9963。在这篇文章中,我们自己搭了两层的卷积,也训练了10轮,最大准确率是0.9923。准确率提高了0.0040,我们要知道测试集共有1万张图片,也就是多预测对了40张图片,已经提升很高。当然,因为网络变深了,所以训练花费的时间也就增加了。

看完上述内容,你们掌握pytorch中如何使用迁移学习resnet18训练mnist数据集的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

训练 学习 数据 图片 模型 准确率 篇文章 预处理 最大 全连 内容 卷积 教程 方法 时间 更多 网络 问题 测试 输出 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 美国互联网保险保险科技 互联网科技公司税收优惠 网络科技有限互联网 互联网科技公司发展 善班互联网科技 顺玮阁互联网科技 人人互联网科技是培训 互联网科技素材视频竖屏 互联网和高科技公司 青岛中康互联网医疗科技有限公司 汽车互联网创新科技园 江阴互联网智能科技产品进口 米聚互联网科技南京有限公司排面 如何创新互联网科技 互联网科技和法律行业 智帮互联网科技公司最近动向 风投北京互联网科技 互联网与数字科技关系 九思连强互联网电子科技有限公司 湖北辰鑫科技互联网 互联网科技海报 壕鑫互联网络科技 广州凡科互联网科技 菲比寻常互联网科技 广州紫鲸互联网科技 成都仁贤领冠互联网科技有限公司 深圳育鹏互联网科技有限公司招聘 萌小萌互联网科技河南有限公司 科技互联网行业投资研究 银川新华互联网科技学校是国营吗
0