HINWEIS: Ich habe diese Berechnungen spekulativ durchgeführt, sodass sich möglicherweise einige Fehler eingeschlichen haben. Bitte informieren Sie über solche Fehler, damit ich sie korrigieren kann.
Im Allgemeinen wird in jedem CNN die maximale Trainingszeit für die Rückübertragung von Fehlern in der vollständig verbundenen Ebene verwendet (abhängig von der Bildgröße). Auch der maximale Speicher wird von ihnen belegt. Hier ist eine Folie von Stanford über die VGG Net-Parameter:
Sie können deutlich sehen, dass die vollständig verbundenen Schichten zu etwa 90% der Parameter beitragen. Der maximale Speicher wird also von ihnen belegt.
( 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
stride=1
channelsoutput∗(pixelOutputheight∗pixelOutputwidth)∗(filterheight∗filterwidth∗channelsinput)
Dank schneller GPUs sind wir leicht in der Lage, diese riesigen Berechnungen durchzuführen. In FC-Schichten muss jedoch die gesamte Matrix geladen werden, was zu Speicherproblemen führt, was im Allgemeinen bei Faltungsschichten nicht der Fall ist, so dass das Training von Faltungsschichten immer noch einfach ist. Außerdem müssen alle diese in den GPU-Speicher selbst und nicht in den RAM der CPU geladen werden.
Auch hier ist das Parameterdiagramm von AlexNet:
Und hier ist ein Leistungsvergleich verschiedener CNN-Architekturen:
Ich schlage vor, Sie lesen die CS231n-Vorlesung 9 der Stanford University, um die Ecken und Winkel der CNN-Architekturen besser zu verstehen.