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.
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)]))