2017-04-25 5 views
0

Ich habe diesen make_parallel Code (https://github.com/kuza55/keras-extras/blob/master/utils/multi_gpu.py) vor kurzem zum Testen auf mehreren GPUs implementiert. Nach der Implementierung der Funktion pred_classes() funktionierte nicht mit der neuen Modellstruktur, nach einigem Lesen wechselte ich stattdessen zur Verwendung der Vorhersagefunktion. Diese Funktion steht nur bestimmte Losgrößen beispielsweise unter Verwendung eine Chargengröße von 750 Werken, während 500, 100 und 350 mit dem folgenden Fehler fehl:Keras Vorhersage funktioniert nicht für mehrere GPUs

ValueError: could not broadcast input array from shape (348,15) into shape 
(350,15) 

Das Training mit einem batch_size von 75. abgeschlossen Jede Idee, warum das passiert oder wie kann ich reparieren?

pointFeatures = np.zeros((batchSize,featureSize)) 
libfeatures.getBatchOfFeatures(i,batchSize,pointFeatures) 

pointFeatures = pointFeatures.reshape(batchSize, FeatureShape.img_rows, 
       FeatureShape.img_cols, FeatureShape.img_width, 
       FeatureShape.img_channels) 

pointFeatures = pointFeatures.astype('float32') 

results = model.predict(pointFeatures, verbose=True, 
      batch_size=FeatureShape.mini_batch_size) 

Antwort

0

Wenn Sie make_parallel Funktion verwenden, müssen Sie durch batch_size * N, wobei N die Anzahl von GPUs Sie verwenden sicher Anzahl der Proben ist teilbar zu machen. Zum Beispiel:

nb_samples = X.shape[0] - X.shape[0]%(batch_size*N) 
X = X[:nb_samples] 

können Sie verschiedene batch_size für Ausbildung und Prüfung verwenden, solange die Anzahl der Proben, die durch batch_size * N teilbar ist.

Verwandte Themen