Tout d'abord:
Il n'y a aucun moyen de déterminer une bonne topologie de réseau uniquement à partir du nombre d'entrées et de sorties. Cela dépend essentiellement du nombre d'exemples de formation et de la complexité de la classification que vous essayez d'apprendre. [1]
et Yoshua Bengio a proposé une règle très simple:
Continuez simplement à ajouter des couches jusqu'à ce que l'erreur de test ne s'améliore plus. [2]
De plus:
Les anciennes fonctionnalités d'un ConvNet contiennent des fonctionnalités plus génériques (par exemple, des détecteurs de bord ou des détecteurs de taches de couleur) qui devraient être utiles pour de nombreuses tâches, mais les couches ultérieures du ConvNet deviennent progressivement plus spécifiques aux détails des classes contenues dans l'ensemble de données d'origine. [ 3]
Par exemple, dans une méthode d'apprentissage des détecteurs d'objets:
la première couche apprend les détecteurs de bord et les couches suivantes apprennent des caractéristiques plus complexes, et les couches de niveau supérieur codent des caractéristiques plus abstraites. [4]
Ainsi, l'utilisation de deux couches denses est plus conseillée qu'une seule couche.
Finalement:
Le document original sur Dropout fournit un certain nombre d'heuristiques utiles à prendre en compte lors de l'utilisation de dropout dans la pratique. L'un d'eux est:
Utilisez le décrochage sur les unités entrantes (visibles) et cachées. L'application du décrochage à chaque couche du réseau a donné de bons résultats. [5]
dans CNN, une couche Dropout est généralement appliquée après chaque couche de regroupement, ainsi qu'après votre couche Dense. Un bon tutoriel est ici [6]
Références:
[1] https://www.cs.cmu.edu/Groups/AI/util/html/faqs/ai/neural/faq.html
[2] Bengio, Yoshua. "Recommandations pratiques pour la formation par gradient des architectures profondes." Réseaux de neurones: astuces du métier. 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