Wie wird der benötigte Speicher des Keras Modells bestimmt?

10

Ich arbeite mit Keras 2.0.0 und möchte ein tiefes Modell mit einer großen Anzahl von Parametern auf einer GPU trainieren. Wenn ich zu große Bilder verwende, ist der Speicher (OOM) knapp. Bei zu niedrigen Bildern ist die Genauigkeit des Modells schlechter als möglich. Daher würde ich gerne die größtmögliche Eingabegröße von Bildern finden, die zu meiner GPU passen. Gibt es irgendeine Funktionalität, die den Speicher berechnet (z. B. vergleichbar mit model.summary() ), wenn das Modell und die Eingabedaten verwendet werden?

Ich schätze Ihre Hilfe.

    
D.Laupheimer 31.03.2017, 09:32
quelle

2 Antworten

12

Ich habe eine vollständige Funktion basierend auf der Antwort von Fabrício Pereira erstellt.

%Vor%     
ZFTurbo 14.09.2017 09:57
quelle
3

Hoffe, das kann dir helfen ...

  • Hier bestimmen Sie wie viele Formen Ihres Keras-Modells (var model ) und jede Shape-Einheit 4 Bytes im Speicher belegt:

      

    shapes_count = int(numpy.sum([numpy.prod(numpy.array([s if isinstance(s, int) else 1 for s in l.output_shape])) for l in model.layers]))

         

    memory = shapes_count * 4

  • Und hier ist, wie eine Anzahl von Parametern Ihres Keras-Modells (var model ):

      

    from keras import backend as K

         

    trainable_count = int(numpy.sum([K.count_params(p) for p in set(model.trainable_weights)]))

         

    non_trainable_count = int(numpy.sum([K.count_params(p) for p in set(model.non_trainable_weights)]))

Fabrício Pereira 21.07.2017 16:17
quelle

Tags und Links