几个层的先后顺序:
python - Ordering of batch normalization and dropout in TensorFlow? - Stack Overflow https://stackoverflow.com/questions/39691902/ordering-of-batch-normalization-and-dropout-in-tensorflow
(1)conv/fc->relu->dropout->batch norm->conv/fc
(2)conv/fc->batch norm->relu->dropout->conv/fc
Dropout是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了
参考:Deep learning:四十一(Dropout简单理解) - tornadomeet - 博客园 https://www.cnblogs.com/tornadomeet/p/3258122.html
(3)conv->relu->dropout->maxpool
dropout 和 bn不共存:对神经响应 X,当网络从训练转为测试时,Dropout 可以通过其随机失活保留率(即 p)来缩放响应,并在学习中改变神经元的方差,而 BN 仍然维持 X 的统计滑动方差。这种方差不匹配可能导致数值不稳定。而随着网络越来越深,最终预测的数值偏差可能会累计,从而降低系统的性能。
学界 | 如何通过方差偏移理解批归一化与Dropout之间的冲突 https://www.sohu.com/a/218382470_465975