CNN调参技巧

目录

一 更多优化算法

回顾

1.AdaGrad算法

2.RMSProp

3.Adam

4.自定义优化算法

二.激活函数

1.Sigmoid

2.Tanh

3.ReLu

4.Leaky-ReLU

5.ELU

6.maxout

三.网络初始化

四 批归一化

五 数据增强

六 其他调参技巧


配套视频教程

https://www.bilibili.com/video/BV1TG4y1273c/?vd_source=61ce5faa12d7097e34d6373d9f1d2e6a

0_Pytorch实战前言_哔哩哔哩_bilibili 

一 更多优化算法

回顾

随机梯度下降

  • 局部极值
  • 鞍点问题

动量梯度下降

问题

  • 受学习率影响很大(如果学习率设置过大,收敛很慢)
  • 每一个维度得学习率一样(a是针对全局设置得)

1.AdaGrad算法

为了解决AdaGrad分母越变越大太大导致学习率没有更新的问题,引入了RMSProp

2.RMSProp

结合上述两个算法引入了Adam算法

3.Adam

或者用自定义的优化算法

4.自定义优化算法

问题:如何选择优化算法?

答:

  • 对于稀疏数据,使用学习率自适应方法(AdaGrid,RMSProp,Adam)
  • SGD通常训练时间更长,最终效果更好,但需要好的初始化和learning rate(手工设置)
  • 需要训练较深较复杂的网络且需要快速收敛时,推荐使用Adam
  • AdaGrad,RMSProp,Adam是比较相近的算法,在相似情况下,表现差不多

二.激活函数

下面分别说明几种激活函数的性质

1.Sigmoid

2.Tanh

3.ReLu

4.Leaky-ReLU

5.ELU

6.maxout

问:使用这些激活函数时的技巧

答:

  • Relu 要小心设置learning rate
  • 不要使用sigmoid
  • 使用Leaky Relu, maxout ELU
  • 可以试试tanh, 但是计算量较大,估计也难以适用

三.网络初始化

1.全不设置成固定的数,比如全部设置为0(不适用于多层网络)

2.如何分析初始化结果好不好?

查看初始化后各层的激活值分布(分布均匀则比较好,不均匀则不好)

3.均值为0,方差为0.02的正太分布初始化-tanh

4.哪种初始化方法最好?

  从输入的通道数和输出通道数中随机选择一个数,然后除以输入通道数的开方。

四 批归一化

为了让每一层激活之后的分布比较统一,在每一层得到激活值之后做归一化处理,控制分布在均值为0 ,方差为1 的分布上

批归一化存在的问题:当样本数量特别大的时候,在一批数据上做归一化之后的分布并不能反映总体上的分布。

为了解决这一问题,引入了另外参数(gamma-方差,byte均值)来逆归一化

五 数据增强

六 其他调参技巧

(1)获取更多的数据

(2)先用一个简单的网络模型,然后逐步给神经网络添加层次,这样可以避免出错

(3)紧跟最新进展,使用新方法

(4)增大训练的迭代次数(跟其他手段并行使用)

(5)尝试增加正则化项(避免过拟合)

(6)使用更多的GPU来加速训练

(7)使用可视化工具来检查中间状态

  •       损失函数的值
  •       梯度分布
  •       准确率
  •        学习率

(8)可以在标准数据集上训练,用于确认自己的网络是否错误

(9)可以先在小数据集上测试一下,达到过拟合的效果,可以验证自己的网络没问题。

(10)注意数据集要平衡分布(比如分类中正负类数量要均匀)

(11)使用预调整好的稳定模型结构

(12)Fine-tuning 基于经典网络的参数初始化参数,然后再新的网络结构上微调

  • 3
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值