Multi Skalierung CNN Netzwerk Python Keras

8

Ich erstelle ein multi-scale CNN in Python Keras. Die Netzwerkarchitektur ähnelt dem Diagramm. Hier wird das gleiche Bild 3 CNNs mit unterschiedlichen Architekturen zugeführt. Die Gewichte werden NICHT geteilt.

Der Code, den ich geschrieben habe, ist unten verfügbar. Das Problem ist, dass, wenn ich dies sogar mit 10 Bildern in train_dir durchführe, das Netzwerk etwa 40 GB RAM benötigt und schließlich vom Betriebssystem zerstört wird. Dies ist "Nicht genügend Speicher ERROR" . Ich betreibe das auf CPU. Irgendeine Idee, warum das in Keras passiert?

Ich benutze Theano-0.9.0.dev5 | Keras-1.2.1 | Python 2.7.12 | OSX Sierra 10.12.3 (16D32)

%Vor%

    
Srikar Appalaraju 24.01.2017, 08:41
quelle

1 Antwort

6

Die Anzahl der Knoten in lower_model1 und lower_model2 nach dem Reduzieren ist %Code%. Gefolgt von einer vollständig verbundenen Schicht mit 64 Knoten ergibt dies 32 * 112 * 112 = 401 408 -Parameter, was eine ziemlich große Zahl ist. Ich würde vorschlagen, die Größe der Bilder zu überdenken, die Ihren "unteren" Modellen zugeführt werden. Brauchst du wirklich 401 408 * 2 * 64 = 51 380 224 size? Sehen Sie sich das Diagramm an, das Sie angehängt haben. Dort sehen Sie, dass der erste Schritt im zweiten und dritten Modell das Subsampling ist: 224 x 224 und 8:1 . Dies ist der Schritt, den Sie in Ihrer Implementierung verpasst haben.

Ihr 4:1 ist in Ordnung, weil Sie dort genügend maximale Pooling-Layer haben, die die Anzahl der Parameter reduzieren.

    
Sergii Gryshkevych 24.01.2017, 12:19
quelle