CNN中密集层的数量和大小


11

我见过的大多数网络在最后的softmax层之前都有一两个密集层。

  • 有没有选择密集层的数量和大小的原则方法?
  • 对于相同数量的参数,两个密集层是否比一层更具代表性?
  • 应该在每个致密层之前还是仅一次施加压降?

Answers:


15

首先:

仅凭输入和输出的数量就无法确定好的网络拓扑。它主要取决于训练示例的数量和您要学习的分类的复杂性。[1]

Yoshua Bengio提出了一个非常简单的规则:

只需不断添加层,直到测试错误不再改善。[2]

此外:

ConvNet的较早功能包含更多的通用功能(例如边缘检测器或色斑检测器),这些功能应该对许多任务有用,但是ConvNet的后续层将逐渐变得更加特定于原始数据集中包含的类的细节。[ 3]

例如,在学习特征检测器的方法中:

第一层学习边缘检测器,随后的层学习更复杂的特征,而更高层的层则编码更多的抽象特征。[4]

因此,建议使用两个密集层而不是一层。

最后:

有关Dropout的原始论文提供了许多在实践中使用Dropout时需要考虑的启发式方法。其中之一是: 对传入的(可见的)以及隐藏的单元使用辍学。在网络的每一层应用dropout显示出良好的效果。[5]

在CNN中,通常在每个池化层之后以及密集层之后都应用一个Dropout层。一个很好的教程在这里[6]

参考文献:

[1] https://www.cs.cmu.edu/Groups/AI/util/html/faqs/ai/neural/faq.html

[2] Bengio,Yoshua。“基于梯度的深度架构培训的实用建议。” 神经网络:交易技巧。Springer Berlin Heidelberg,2012年。437-478。

[3] http://cs231n.github.io/transfer-learning/

[4] http://learning.eng.cam.ac.uk/pub/Public/Turner/Teaching/ml-lecture-3-slides.pdf

[5] https://machinelearningmastery.com/dropout-regularization-deep-learning-models-keras/

[6] https://cambridgespark.com/content/tutorials/convolutional-neural-networks-with-keras/index.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.