NOTA: Fiz esses cálculos especulativamente, portanto, alguns erros podem ter surgido. Informe esses erros para que eu possa corrigi-lo.
Em geral, em qualquer CNN, o tempo máximo de treinamento vai para a propagação posterior de erros na camada totalmente conectada (depende do tamanho da imagem). Além disso, a memória máxima também é ocupada por eles. Aqui está um slide de Stanford sobre os parâmetros da VGG Net:
É claro que você pode ver que as camadas totalmente conectadas contribuem com cerca de 90% dos parâmetros. Portanto, a memória máxima é ocupada por eles.
( 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 um 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 S 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 uma n n e l si n p u t)
Graças às GPUs rápidas, somos capazes de lidar facilmente com esses cálculos enormes. Porém, nas camadas FC, toda a matriz precisa ser carregada, o que causa problemas de memória, o que geralmente não é o caso das camadas convolucionais; portanto, o treinamento das camadas convolucionais ainda é fácil. Além disso, todos esses itens devem ser carregados na própria memória da GPU e não na RAM da CPU.
Também aqui está o gráfico de parâmetros do AlexNet:
E aqui está uma comparação de desempenho de várias arquiteturas da CNN:
Sugiro que você verifique a CS231n Lecture 9 da Universidade de Stanford para entender melhor os cantos e recantos das arquiteturas da CNN.