dropout层的进一步理解和实现

为什么使用dropout 以及好处:
https://blog.csdn.net/stdcoutzyx/article/details/49022443

传统化 Dropout 和 现代化 Inverted Dropout

1.在训练阶段,对应用了dropout的层,每个神经元以keep_prob的概率保留(或以1-keep_prob的概率关闭),然后在测试阶段,不执行dropout,也就是所有神经元都不关闭,但是对训练阶段应用了dropout的层上的神经元,其输出激活值要乘以keep_prob。所以很麻烦

2,现代的AlexNet论文发表于2012年,而现在主流的方法是Inverted dropout,和传统的dropout方法有两点不同:
在训练阶段,对执行了dropout操作的层,其输出激活值要除以keep_prob
测试阶段则不执行任何操作,既不执行dropout,也不用对神经元的输出乘keep_prob。

区别就是测试时候要不要做乘以及训练时候要不要除以keep_prob,前者是为了让预测的期望和训练的时候期望一致,你小多少我小多少,后者是为了让期望始终保持不变。你缩小了多少,我就放大了多少。目前都是用了后者的版本,因为测试阶段基本上就不考虑dropout了

知乎的回答原因:
dropout层的进一步理解和实现_第1张图片

dropout层的进一步理解和实现_第2张图片

https://www.zhihu.com/question/61751133/answer/190722593 附带了pytorch的实现

你可能感兴趣的:(人工智能)