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% 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.
Tags und Links python neural-network deep-learning keras conv-neural-network