NOTA: Hice estos cálculos de manera especulativa, por lo que algunos errores podrían haber aparecido. Informe de dichos errores para que pueda corregirlos.
En general, en cualquier CNN, el tiempo máximo de entrenamiento va en la retropropagación de errores en la capa totalmente conectada (depende del tamaño de la imagen). También la memoria máxima también está ocupada por ellos. Aquí hay una diapositiva de Stanford sobre los parámetros de la red VGG:
Claramente, puede ver que las capas completamente conectadas contribuyen a aproximadamente el 90% de los parámetros. Entonces la memoria máxima está ocupada por ellos.
( 3 ∗ 3 ∗ 3 )( 3 ∗ 3 ∗3 )224 ∗ 224224 ∗ 224 ∗ ( 3 ∗ 3 ∗ 3 )64224 ∗ 22464 ∗ 224 ∗ 224 ∗ ( 3 ∗ 3 ∗ 3 ) ≈ 87 ∗ 106 6
56 ∗ 56 ∗ 25656 ∗ 56( 3 ∗ 3 ∗ 256 )56 ∗ 56256 ∗ 56 ∗ 56 ∗ ( 3 ∗ 3 ∗ 256 ) ≈ 1850 ∗ 106 6
s t r i dmi = 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)
Gracias a las GPU rápidas, podemos manejar fácilmente estos enormes cálculos. Pero en las capas FC, se debe cargar toda la matriz, lo que causa problemas de memoria, que generalmente no es el caso de las capas convolucionales, por lo que la capacitación de las capas convolucionales aún es fácil. Además, todos estos deben cargarse en la memoria de la GPU y no en la RAM de la CPU.
También aquí está la tabla de parámetros de AlexNet:
Y aquí hay una comparación de rendimiento de varias arquitecturas de CNN:
Le sugiero que consulte la CS231n Lecture 9 de la Universidad de Stanford para comprender mejor los rincones y grietas de las arquitecturas de CNN.