CNN按钮报告

本文探讨了ReLU、Sigmoid、Tanh等激活函数在简单和复杂网络模型中的表现,强调了ReLU的优势。学习率对GoogleNet的影响,发现适当的学习率对于收敛至关重要。同时,比较了SGD、Adam、RMSprop在不同模型中的效果,以及BN层对精度提升的作用。最后,分析了不同模型结构对MNIST数据集性能的影响,指出复杂模型如GoogleNet优于简单模型,但需兼顾模型复杂度与优化。
摘要由CSDN通过智能技术生成

CNN按钮报告

一、 不同激活函数对精度和Loss的影响

  1. 两层卷积一层池化一层全连接
    (1)Relu:最终Loss为1.389

(2)Sigmoid:最终Loss为4.851

(3)Tanh:最终Loss为4.046

(4)总结:
Loss Acc
Relu 1.389 0.581
Sigmoid 4.851 0.050
Tanh 4.046 0.069

可以看出在较为简单的网络模型中,使用relu作为激活函数,其效果与其他两个激活函数比起来是非常好的,而其他两种函数可能由于问题复杂且模型简单,效果都非常差。这也就说明了为什么在大多数情况下,都会选择relu函数作为激活函数,因为其可以避免很多情形下梯度消失的情况。

  1. GoogleNet
    (1) Relu:最终Loss为0.036

(2) Sigmoid:最终Loss为0.094

(3)Tanh:最终Loss为0.042

(4)总结:
Loss Acc
Relu 0.036 0.987
Sigmoid 0.094 0.953
Tanh 0.042 0.984

可以看出在较为复杂的网络模型中,使用relu作为激活函数与使用tanh作为激活函数都比sigmoid激活函数效果好,而sigmoid因为有太多可以使得梯度消失的情况,所以效果最差。由于模型比较复杂的原因,显示的效果都比较好,但是还是可以明显看出来relu与tanh的效果更好。

二、 不同学习率对精度和Loss的影响

  1. 两层卷积一层池化一层全连接
    (1)lr=0.02 最终Loss为1.389

(2)lr=0.1 最终Loss为1.395

(3)lr=0.01 最终Loss为1.456

(4)总结:
Loss Acc
lr=0.02 1.389 0.581
lr=0.1 1.395 0.584
lr=0.01 1.456 0.537

可以看出,在学习率为0.01的时候准确率曲线基本上是平滑上升的,而当学习率为0.02时,会出现准确率跳跃的情况,可能是因为步长太大,出现了跳过最优解又跳回来的情况。当学习率为0.1的时候,达到了比较好的情况以后又出现准确率下降的情况,步长太大了。

2.GoogleNet
(1)lr=0.02 最终Loss为0.023

(2)lr=0.1 最终Loss为nan

(3)lr=0.01 最终Loss为0.094

(4)总结:
Loss Acc
lr=0.02 0.023 0.996
lr=0.1 nan nan
lr=0.01 0.094 0.987

可以看出,在复杂模型情况下,处理简单数据集问题,学习率为0.02或者0.01的差距不大,都是逐步向最优解前进。而当学习率过大为0.1时,会直接造成梯度爆炸,导致无法继续深度学习。

三、 不同损失函数对精度和Loss的影响

1.两层卷积一层池化一层全连接
(1)SGD:最终Loss为1.389

(2)Adam:最终Loss为1.385

(3)RMSprop:最终Loss为1.454

(4)总结:
Loss Acc
SGD 1.389 0.581
Adam 1.385 0.556
RMSprop 1.454 0.533

可以看出,在对应简单模型时,SGD、Adam、RMSprop的效果基本一样,没有什么区别,但是按曲线过程来看,Adam拟合的很快,其次是RMSprop,但是其比较不稳定,虽然拟合比较慢,但总的来说SGD算法好些。

2.GoogleNet
(1)SGD:最终Loss为0.094

(2)Adam:最终Loss为2.322

(3)RMSprop:最终Loss为2.347

(4)总结:
Loss Acc
SGD 0.094 0.953
Adam 2.322 0.112
RMSprop 2.347 0.099

可以看出,在对应复杂模型时,由于每个损失函数都带有超参数,当超参数定的不合理时,对复杂模型的影响非常大,所以如何找到最优的超参数,也是深度学习需要考虑的一个问题。

四、 不同批量大小对精度和Loss的影响

1.两层卷积一层池化一层全连接
(1)batch_size=64 最终Loss为1.389

(2)batch_size=128 最终Loss为1.456

(3)batch_size=32 最终Loss为1.354

(4)总结:
Loss Acc
batch_size=64 1.389 0.581
batch_size=128 1.456 0.544
batch_size=32 1.354 0.573

通过对不同batch_size下的loss和精确度可视化分析,可以看出当batch_size越大时,虽然准确率和loss没有太大的提升,但是会更平滑的到达顶峰。也就是说,这个简单模型处理MNIST数据集时,在算法允许的情况下,batch_size越大模型的性能越好。
2.GoogleNet
(1)batch_size=64 最终Loss为0.094

(2)batch_size=128 最终Loss为0.027

(3)batch_size=32 最终Loss为0.048

(4)总结:
Loss Acc
batch_size=64 0.094 0.953
batch_size=128 0.027 0.993
batch_size=32 0.048 0.986

通过对不同batch_size下的loss和精确度可视化分析,可以看出当batch_size越大时,虽然准确率和loss没有太大的提升,但是会更平滑的到达顶峰。也就是说,这个复杂模型处理MNIST数据集时,在算法允许的情况下,batch_size越大模型的性能越好。
五、 不同冲量大小对精度和Loss的影响
1.两层卷积一层池化一层全连接
(1)momentum=0.5 最终Loss为0.048

(2)momentum=1 最终Loss为2.773

(3)momentum=0.01 最终Loss为1.425

(4)总结:
Loss Acc
momentum=0.5 1.389 0.581
momentum=1 2.773 0.098
momentum=0.01 1.425 0.548

可以看出,冲量要选取合适才有用,当选取过大时,可能会导致惯性过大,一直到不了最低点,不能收敛。如果取的过小,又有可能冲不出局部最小值。

2.GoogleNet
(1)momentum=0.5 最终Loss为0.094

(2)momentum=1 最终Loss为nan

(3)momentum=0.01 最终Loss为0.048

(4)总结:
Loss Acc
momentum=0.5 0.094 0.953
momentum=1 nan 0.098
momentum=0.01 0.048 0.985

可以看出,冲量要选取合适才有用,当选取过大时,可能会导致惯性过大,一直到不了最低点,不能收敛。如果取的过小,又有可能冲不出局部最小值。

六、 BN层对精度和Loss的影响
1.两层卷积一层池化一层全连接
(1)添加BN层 最终Loss为1.389

(2)不添加BN层 最终Loss为1.400

(3)总结:
Loss Acc
添加BN层 1.389 0.581
不添加BN层 1.400 0.552

可以看出,在简单模型中加入BN层,使数据更规范,不管是拟合速度、loss值和acc值都会比不加BN层的模型好。

2.GoogleNet
(1)添加BN层 最终Loss为0.094

(2)不添加BN层 最终Loss为0.137

(3)总结:
Loss Acc
添加BN层 0.094 0.953
不添加BN层 0.137 0.923

可以看出,在复杂模型中加入BN层,使数据更规范,不管是拟合速度、loss值和acc值都会比不加BN层的模型好。

七、 不同模型对精度和Loss的影响
1.两层卷积一层池化一层全连接

2.GoogleNet

3.总结:
Loss Acc
简单模型 1.389 0.581
复杂模型 0.094 0.953

可以看出,GoogleNet的所有性能指标都优于自己创造的两层卷积一层池化一层全连接的简单模型,但是GoogleNet的运行时间也是简单模型的三倍多,所以也不能只考虑把模型复杂化,还是要从参数优化上多想办法,来使得模型更优秀。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值