dropout
训练样本量少的时候,确实有效果;
勤劳的神经元们事无巨细地干活,花大量时间把不重要的特征都学到了(过拟合),按这种方式去做其他事效率就很低(模型泛化能力差)
训练的时候需要dropout,测试的时候直接去掉。
如果测试时的时候添加了dropout层,测试的时候直接把前一层的特征结果传到下一层:
dropout层相当于组合了N个网络,测试的时候去掉dropout,相当于N个网络的组合;
加了之后,收敛会变慢,但是验证集精度和训练集精度差距会减小。
2.2 Dropout在神经网络中的使用
Dropout的具体工作流程上面已经详细的介绍过了,但是具体怎么让某些神经元以一定的概率停止工作(就是被删除掉)?代码层面如何实现呢?
下面,我们具体讲解一下Dropout代码层面的一些公式推导及代码实现思路。
(1)在训练模型阶段
无可避免的,在训练网络的每个单元都要添加一道概率流程。
图4:标准网络和带有Dropout网络的比较
对应的公式变化如下:
. 没有Dropout的网络计算公式:
. 采用Dropout的网络计算公式:
上面公式中Bernoulli函数是为了生成概率r向量,也就是随机生成一个0、1的向量。
代码层面实现让某个神经元以概率p停止工作,其实就是让它的激活函数值以概率p变为0。比如我们某一层网络神经元的个数为1000个,其激活函
文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jacke121/article/details/107477954
- 点赞
- 收藏
- 关注作者
评论(0)