UWAGA: Wykonałem te obliczenia spekulacyjnie, więc niektóre błędy mogły się wkraść. Poinformuj o wszelkich takich błędach, aby móc je poprawić.
Ogólnie w każdym CNN maksymalny czas szkolenia przypada na propagację wsteczną błędów w warstwie w pełni połączonej (zależy od wielkości obrazu). Zajmują także maksymalną pamięć. Oto slajd ze Stanford na temat parametrów sieci VGG:
Wyraźnie widać, że w pełni połączone warstwy przyczyniają się do około 90% parametrów. Zajmują więc maksymalną pamięć.
( 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 godz)∗ ( fi l t e rh e i gh t∗ fi l t e rw i dt godz∗ c h a n n e l si n p u t)
Dzięki szybkim procesorom graficznym jesteśmy w stanie łatwo poradzić sobie z tymi ogromnymi obliczeniami. Ale w warstwach FC należy załadować całą macierz, co powoduje problemy z pamięcią, co na ogół nie ma miejsca w przypadku warstw splotowych, więc trening warstw splotowych jest nadal łatwy. Wszystkie te muszą zostać załadowane do samej pamięci GPU, a nie do pamięci RAM procesora.
Oto także tabela parametrów AlexNet:
A oto porównanie wydajności różnych architektur CNN:
Proponuję zapoznać się z wykładem CS231n Wykład 9 Uniwersytetu Stanforda, aby lepiej zrozumieć zakamarki architektury CNN.