2017-04-25 12 views
0

最近、このmake_parallelコード(https://github.com/kuza55/keras-extras/blob/master/utils/multi_gpu.py)を複数のGPUで実装しました。 predict_classes()関数を実装した後、新しいモデル構造では機能しませんでしたが、いくつかの読み込みの後、代わりにpredict関数を使用しました。 500、100および350は、次のエラーで失敗しながら、この機能は、例えば、750点の作品のバッチサイズを特定のバッチサイズを使用して動作します:Kerasは複数のGPUで動作しないと予測します

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

トレーニングは75のBATCH_SIZEと、なぜすべてのアイデアを完了しましたこれが起こっているか、私はどのように修正することができますか?

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) 

答えて

0

あなたがmake_parallel機能を使用している場合は、サンプル数がBATCH_SIZEで割り切れることを確認する必要があります* Nは、使用しているGPUの数であるN、。たとえば:

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

あなたは限りサンプル数がBATCH_SIZE * Nで割り切れるようトレーニングとテストのために異なるBATCH_SIZEを使用することができます。

関連する問題