web-dev-qa-db-fra.com

Comprendre les dimensions d'une couche entièrement connectée qui suit une couche de regroupement maximal

Dans le diagramme (architecture) ci-dessous, comment la couche dense (entièrement connectée) de 4096 unités a-t-elle été dérivée de la dernière couche de max-pool (à droite) de dimensions 256x13x13? Au lieu de 4096, ne devrait-il pas être 256 * 13 * 13 = 43264?

 Convolutional Neural Network

15
xlax

Si je ne me trompe pas, vous demandez pourquoi la couche 4096x1x1 est beaucoup plus petite.

C'est parce que c'est une couche entièrement connectée. Chaque neurone de la dernière couche de regroupement maximal (= 256*13*13=43264 neurones) est connecté au neurone every de la couche entièrement connectée. 

Voici un exemple de réseau neuronal ALL to ALL connecté:  enter image description here .__ Comme vous pouvez le constater, la couche 2 est plus grande que la couche 3. Cela ne signifie pas qu'ils ne peuvent pas se connecter. 

Il n'y a pas de conversion de la dernière couche de regroupement maximal -> tous les neurones de la couche de regroupement maximal sont simplement connectés à tous les 4096 neurones de la couche suivante. 

L'opération 'dense' signifie simplement calculer les poids et les biais de toutes ces connexions (= 4096 * 43264 connexions) et ajouter le biais des neurones pour calculer la prochaine sortie.

Il est connecté le même était un MLP.

Mais pourquoi 4096? Il n'y a pas de raisonnement. C'est juste un choix. Cela aurait pu être 8000, cela aurait pu être 20, cela dépend de ce qui fonctionne le mieux pour le réseau.

17
Thomas W

Non, 4096 est la dimensionnalité de la sortie de cette couche, tandis que la dimensionnalité de l'entrée est 13x13x256. Les deux ne doivent pas être égaux comme vous le voyez dans le diagramme.

5
Matias Valdenegro

Vous avez raison de dire que la dernière couche convolutive contient des neurones 256 x 13 x 13 = 43264. Cependant, il existe une couche de regroupement maximal avec stride = 3 et pool_size = 2. Cela produira une sortie de taille 256 x 6 x 6. Vous connectez ceci à une couche entièrement connectée. Pour ce faire, vous devez d'abord aplatir la sortie, qui prendra la forme - 256 x 6 x 6 = 9216 x 1. Pour mapper des neurones 9216 à des neurones 4096, nous introduisons une matrice de poids 9216 x 4096 comme poids d'une couche dense/entièrement connectée. Par conséquent, w^T * x = [9216 x 4096]^T * [9216 x 1] = [4096 x 1]. En bref, chacun des neurones 9216 sera connecté à tous les neurones 4096. C'est pourquoi la couche est appelée couche dense ou entièrement connectée.

Comme d'autres l'ont déjà dit plus haut, il n'y a pas de règle stricte sur la raison pour laquelle ce devrait être 4096. La couche dense doit simplement avoir un nombre de neurones suffisant pour capturer la variabilité de l'ensemble de données. Le jeu de données considéré - ImageNet 1K - est assez difficile et comprend 1000 catégories. Donc, les neurones 4096 pour commencer ne semblent pas trop. 

4

La taille de sortie de la couche de regroupement est 

output = (input size - window size) / (stride + 1)

dans le cas ci-dessus, la taille en entrée est 13, la plupart des implémentations de la mise en pool ajoutent une couche supplémentaire de remplissage afin de conserver les pixels limites dans les calculs, de sorte que la taille en entrée devienne 14.

la taille et le pas de la fenêtre les plus courants sont W = 2 et S = 2, donc mettez-les dans la formule 

output = (14 - 2) / (2 + 1)
output = 12 / 3
output = 4

maintenant, il y aura 256 cartes de caractéristiques de taille 4x4, aplatissez-les et vous obtiendrez

flatten = 4 x 4 x 256
flatten = 4096

J'espère que ça répond à ta question.

1
saurabh kumar

Je vais le montrer par image, regardez l'image ci-dessous du réseau Alexnet

 enter image description here

La couche 256 * 13 *13 fera l'opérateur max pooling puis ce sera 256 * 6 * 6 = 9216. Puis sera aplatie pour être connecté au réseau 4096 Complètement connecté, les paramètres seront donc 9216 * 4096. Vous pouvez voir tous les paramètres calculés dans Excel ci-dessous.

 enter image description here

 enter image description here

cité:

https://www.learnopencv.com/understanding-alexnet/

https://medium.com/@smallfishbigsea/a-walk-through-of-alexnet-6cbd137a5637

0
Jayhello

Je crois que vous voulez savoir comment se passe la transition d'une couche convolutionnelle à une couche dense ou entièrement connectée. Vous devez comprendre qu’une autre façon de visualiser une couche convolutive est qu’il s’agit d’une couche dense, mais avec des connexions clairsemées. Ceci est expliqué dans le livre de Goodfellow, Deep Learning, chapitre 9.

 Sparse connections

Quelque chose de similaire s'applique à la sortie d'une opération de mise en pool, vous vous retrouvez avec quelque chose qui ressemble à la sortie d'une couche convolutive, mais résumée. Tous les poids de tous les noyaux de convolution peuvent ensuite être connectés à une couche entièrement connectée. Cela implique typiquement une première couche entièrement connectée qui comporte de nombreux neurones. Vous pouvez donc utiliser une deuxième (ou troisième) couche qui effectuera la classification/régression réelle.

En ce qui concerne le choix du nombre de neurones dans une couche dense qui vient après une couche convolutive, il n'y a pas de règle mathématique derrière celle-ci, comme celle avec les couches convolutives. Comme la couche est entièrement connectée, vous pouvez choisir n’importe quelle taille, comme dans votre perceptron multicouche typique.