Auf meinem Dell Core i7 - 16 GB RAM - 4 GB 960 m GPU-Laptop arbeite ich an einem Projekt zur Klassifizierung von Lungen-CT-Bildern mithilfe von 3D-CNN. Ich verwende die CPU-Version von Tensorflow. Die Bilder werden als Numpy-Array-Größe (25,50,50) vorbereitet.
Mein CNN-Modell hatte 2 Conv-Schichten, zwei Maxpool-Schichten, eine FC-Schicht und eine Ausgangsschicht. Mit dieser Architektur konnte ich das Modell mit ungefähr (5000 bis 6000) Beispielen trainieren. Nach dem Hinzufügen weiterer Ebenen verfügt mein Modell nun über 6 Conv-Ebenen, 3 Max-Pool-Ebenen, FC und Ausgabeebene. Mein Problem ist, dass nach dem Ändern der Architektur mit nur mehr als 1000 Samples mein Speicher gefüllt wird und ich einen Speicherfehler erhalte. Ich habe versucht, kleinere Chargen zu erstellen, aber jedes Mal wurde der gleiche Fehler angezeigt. Ich habe zwei Fragen:
Warum benötigt das Modell durch Hinzufügen weiterer Ebenen mehr Speicher?
Gibt es eine Möglichkeit, mit dieser Art von Problem umzugehen?
quelle
Antworten:
Mehr Schichten bedeuten mehr Parameter für Ihr Netzwerk, was wiederum mehr Speicherplatz zum Speichern dieser Parameter bedeutet.
Die einzige Lösung (neben der Erhöhung des Arbeitsspeichers Ihres Computers) ist die Reduzierung der Größe Ihres Netzwerks. Ein paar Hinweise dazu: Erstens benötigen 3D-CNNs viel mehr Platz als 2D-CNNs. Eine Idee könnte sein, zu einer 2-D zu wechseln. Davon abgesehen sind die Schichten mit den meisten Parametern die FC-Schichten. Diese sind manchmal überflüssig. Ich würde vorschlagen, zuerst die Größe dieser zu reduzieren.
quelle
Zusätzlich zu dem Punkt gemacht durch
MzdR
, könnten Sie auch versuchen , stattdessen Generatoren verwenden. Da Ihr Model während des Trainings nicht unbedingt alle Ihre Bilder im Speicher haben muss, sollte ein Generator meiner Meinung nach gut funktionieren.Überprüfen Sie diese Frage aus dem Stackoverflow. Generatoren sind ziemlich cool, wenn Sie ein Schnäppchen machen. Wenn dies ebenfalls fehlschlägt, versuchen Sie, die Größe Ihrer FC-Ebenen zu verringern.
quelle