REMARQUE: J'ai fait ces calculs de manière spéculative, donc certaines erreurs peuvent s'être glissées. Veuillez en informer pour que je puisse les corriger.
En général, dans n'importe quel CNN, la durée maximale de la formation va dans la rétro-propagation des erreurs dans la couche entièrement connectée (dépend de la taille de l'image). De plus, la mémoire maximale est également occupée par eux. Voici une diapositive de Stanford sur les paramètres VGG Net:
De toute évidence, vous pouvez voir que les couches entièrement connectées contribuent à environ 90% des paramètres. Ainsi, la mémoire maximale est occupée par eux.
( 3 × 3 × 3 )( 3 × 3 × 3 )224 ∗ 224224 ∗ 224 ∗ ( 3 ∗ 3 ∗ 3 )64224 ∗ 22464 ∗ 224 ∗ 224 ∗ ( 3 ∗ 3 ∗ 3 ) ≈ 87 ∗ 106
56 × 56 × 25656 ∗ 56( 3 × 3 × 256 )56 ∗ 56256 ∗ 56 ∗ 56 ∗ ( 3 ∗ 3 ∗ 256 ) ≈ 1850 ∗ 106
s t r i de = 1
c h a n n e l so u t p u t∗ ( p i x e l O u t p u th e i gh t∗ p i x e l O u t p u tw i dt h)∗ ( fi l t e rh e i gh t∗ fi l t e rw i dt h∗ c h a n n e l si n p u t)
Grâce aux GPU rapides, nous pouvons facilement gérer ces énormes calculs. Mais dans les couches FC, la matrice entière doit être chargée, ce qui provoque des problèmes de mémoire, ce qui n'est généralement pas le cas des couches convolutionnelles, donc la formation des couches convolutionnelles est toujours facile. De plus, tous ces éléments doivent être chargés dans la mémoire du GPU elle-même et non dans la RAM du CPU.
Voici également le tableau des paramètres d'AlexNet:
Et voici une comparaison des performances de diverses architectures CNN:
Je vous suggère de consulter la conférence 9 CS231n de l'Université de Stanford pour une meilleure compréhension des coins et recoins des architectures CNN.