当前位置:   article > 正文

VggNet训练cifar-10数据集_cifar10 vgg

cifar10 vgg

一开始实现了vgg网络使用Adam优化器设置的学习率0.1,测试的loss毫无变化,原因是学习率learning rate太搞了后来设置成0.005,并且使用xavier_normal初始化卷积层和全连接层的参数,loss才开始慢慢下降,但是精度达到0.71就开始overfitting了。

def initial(layer):
    if isinstance(layer, nn.Linear) or isinstance(layer, nn.Conv2d):
        nn.init.xavier_normal_(layer.weight.data)
  • 1
  • 2
  • 3

之后改变优化器使用SGD

optimizer = torch.optim.SGD(net.parameters(), lr=lr,
                             momentum=0.9, weight_decay=0.0005)
  • 1
  • 2

同时在这里采用学习率下降的策略,全部训练数据集大概每迭代5轮就进行一次学习的衰退。
这里迭代了26轮就结束,训练的loss,测试的loss和测试精度如下图所示。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到在第8个epoch, 测试loss开始上升,但是训练loss还在不断下降,大概率是过拟合,但是奇怪的测试精度在不断的上升。这里可以看见每次学习率下降时,测试精度会有小幅度提升,调小学习率可以改善过拟合,可以看见在25轮后学习下降了,26轮后的测试精度又开始小幅度上升,大概可以上升到0.77。
所以在我试着把学习率下降频率调高,每隔2个epoch就下降0.1,并且vggnent的全连接层通道太大、参数过多,非常容易过拟合,这里我们把全连接层后的dropout参数改为0.4。结果不太好,大概原因是vgg的全连接层太大了,非常容易过拟合,接下来使用resnet看看。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/957472
推荐阅读
  

闽ICP备14008679号