CNN按钮报告

LeNet简介

总体来看,LeNet(LeNet-5)由两个部分组成:

  1. 卷积编码器:由两个卷积层组成;
  2. 全连接层密集块:由三个全连接层组成。

该架构如下图所示:

 

每个卷积层使用卷积核和一个sigmoid激活函数。这些层将输入映射到多个二维特征输出,通常同时增加通道的数量。第一卷积层有6个输出通道,而第二个卷积层有16个输出通道。每个池操作(步骤2)通过空间下采样将维数减少4倍。卷积的输出形状由批量大小、通道数、高度、宽度决定。

介绍

本次实验在Fashion-MNIST数据集上测试,通过微调相关超参数来查看这些参数对模型的影响。

默认情况

俩层卷积+两层池化+三层全连接,优化器采用SGD,batch_size=256,lr=0.1,epochs=10。relu激活函数,loss为交叉熵损失。

以上数据在后续实验中若无说明,不做更改。

 

不同激活函数对acc和loss的影响

Sigmoid:

 

Relu:

loss 0.338, train acc 0.875, test acc 0.866

 

Tanh:

loss 0.327, train acc 0.881, test acc 0.864

 

通过上面一组图可以看出使用sigmoid函数时表现不佳,在批次6之前训练损失基本上不变,即使在epoch=10时训练损失依然等于一个较大的值,准确率上升也比较缓慢,因此在本实验中不适合使用sigmoid函数。

不同学习率

lr=0.01:

 

l=0.1

 

通过分析上面俩图可发现当提高学习率至0.1时,收敛速度会更快,并且十次训练后其损失更低且精准度更高,但是不能将学习率设置的太大,否则会在最佳值附件来回振荡,同样设置过小会增加模型运行成本,找到最佳值变慢,使训练时间更长。

不同优化方法

SGD:

 

Adam:

 

Adam优化器的表现优于SGD,二者的准确率均有提升,但是在训练后期可能会出现过拟合问题。

添加Dropout层:

 

多层网络丢弃恰好改进了过拟合,使得最终准确率有所上升

不同批量大小

batch_size = 256:

 

batch_size = 128:

 

batch_size = 64:

 

通过降低批量大小我们会发现损失率在降低且精确度有一定提高。

不同epoch

epoch=10:

 

epoch=15:

 

提高训练的迭代次数在一定程度上降低了损失率并且提高了准确度,但是迭代次数增加会使计算量大幅增加,提高了成本,所以在对准确度没有很大提升的情况下需要选择合适的迭代次数以免得不偿失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值