解决过拟合的最好办法增大数据集
dropout:随机丢且一些神经元--》只有在训练数据是有效
1. 取平均的作用
2. 减少两个神经元之间复杂的共适应关系:因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现(随机森林)
关于nn.module里面内置的dropout 有三种方法:dropout,dropout
2d,dropout3d。一维数据就使用dropout,图片数据使用dropout2d,三维疏浚就使用dropout3d
dropout层一般都放在模型的厚后面
注意在测试时,dropout层时不会起作用的
model.train()训练模式
model.eval() 预测模式
这两种模式主要影响dropout和BN层
######BN层##########
解决的事梯度消失和梯度爆炸问题
传统机器学习中的表准化也叫归一化
一般是将数据映射到指定范围,用于除去不同维度的数据的量纲以及量纲单位
#批标准化:不仅在讲数据输入模型之前对数据做标准化,在网络的每一次变换之后都应该考虑数据标准化。
好处:具有正则化的效果
提高模型的泛化能力
允许更高的学习速率从而加速收敛
BN层通常应用于卷积层或者Linear(全链接层)之后:
nn.BatchNorm1d()--》linear层
nn.BatchNorm2d() ---〉卷积层
实现过层:
1. 求每一个训练批次数据的均值
2. 求每一个训练批次的数据方差
3. 数据进行标准化
4. 训练参数Y,B
5. 输出y 通过Y,B的线性变换得到原来的数值,在训练的正向传播中不会改变当前输出
CNN中讲用在激活函数之前,但是用在激活函数之后可能会效果更好