NOTA: ho fatto questi calcoli in modo speculativo, quindi alcuni errori potrebbero essersi insinuati. Si prega di informare di tali errori in modo da poterlo correggere.
In generale, in qualsiasi CNN il tempo massimo di addestramento va nella Back-Propagation degli errori nel Livello completamente connesso (dipende dalla dimensione dell'immagine). Anche la memoria massima è occupata da loro. Ecco una slide di Stanford sui parametri di VGG Net:
Chiaramente puoi vedere che i livelli completamente collegati contribuiscono a circa il 90% dei parametri. Quindi la memoria massima è occupata da loro.
( 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)
Grazie alle GPU veloci siamo in grado di gestire facilmente questi enormi calcoli. Ma negli strati FC deve essere caricata l'intera matrice che causa problemi di memoria che generalmente non è il caso degli strati convoluzionali, quindi l'addestramento degli strati convoluzionali è ancora facile. Inoltre, tutti questi devono essere caricati nella memoria della GPU stessa e non nella RAM della CPU.
Anche qui è la tabella dei parametri di AlexNet:
Ed ecco un confronto delle prestazioni di varie architetture della CNN:
Ti suggerisco di dare un'occhiata alla CS231n Lecture 9 della Stanford University per una migliore comprensione degli angoli e delle fessure delle architetture della CNN.