CIFAR-10训练笔记

The CIFAR-10 dataset Training records

这篇博文主要记录我对CIFAR-10这个数据集的训练过程及相关的思考

官网介绍

image-20210810143756437

搭建模型

image-20210810145235826

CamScanner 08-09-2021 09.45_3

优化器采用 AdaGRad,learining=0.01 这个模型没有加激活函数

最终在验证集上的准确率是 66.58%,并且没有很明显的过拟合现象,并且在epoch=30之后,就停止了学习

png

相关代码请查看https://github.com/

基于VGG16的训练

刚开始的小坑

开始我用的是VGG16

image-20210810153653628

训练过程截图:

image-20210810155854759

但是最终效果不太好,在验证集上最好也只有 72%的准确率.然后我就去查阅了VGG16的源码:

image-20210810172356633

我猜测:VGG16原先是用于1000分类,神经网络的层级太深,10分类(小规模)不适合用VGG16

简化VGG16--VGG16_simplified

所以我基于VGG16的源码将模型简化为VGG16_simplified:

VGG16_simplified结构

image-20210810182205724

VGG16_simplified过拟合了

下载

在验证集上的表现是76%的准确率

抑制VGG16_simplified的过拟合

  • 添加L2正则化

下载 (1)

模型的表现张力收到了抑制,测试集上的准确率甚至降为了: 70.7%,还不如过拟合的时候...

  • 寻求前辈的指导

我把网络结构和遇到的问题发给了师哥,他说我的网络参数太多了,改的更少一些,128,256这样,我按照这个修改了

首先是网络的学习变快了(参数变少),其次准确率是 71.6%.但还是没有使准确率有一个更高的提升.我想突破80%.

进一步简化后的模型是这样的:

image-20210811164716980

下载 (2)

但这个参数简化后的模型到了最后已经停止了学习.

转用Resnet

image-20210811140112553

image-20210811140327112

跟着网课学习了一下ResNet的大体结构,但是网络实现源码还没太看明白

image-20210811164716980

最终模型在验证集上的最高准确率达到了 82.32%,何凯明yyds!!

image-20210811175719874

总结

  1. 各模型对比
模型 验证集准确率 参数数量(运算速度)
Cir 66.58% 90,080
Vgg16 72% 138,357,544
Vgg16_simplified 76% 573,888
Resnet18 82.32% 33,161,024

​ 备注:cir是最开始自己搭建的极简模型

  • 模型越深,但是效果不用好,更加大了计算量.

  • Resnet18是表现最好的模型

  1. 加深了对调参的认识,比如当loss变化不明显时可以缩小学习率,过拟合时添加正则化.学习率的选取等等
  2. 我一开始用我笔记本的电脑跑了一会Resnet,epoch=3的时候,温度就要命了,电脑烫手,后来赶紧去用Colaboratory

image-20210811152811671

相关代码请查看:github

posted @ 2021-08-11 18:22  CuriosityWang  阅读(496)  评论(2编辑  收藏  举报