Keras预测不适用于多个GPU

时间:2017-04-25 20:35:56

标签: python tensorflow gpu keras

我最近实现了这个make_parallel代码(https://github.com/kuza55/keras-extras/blob/master/utils/multi_gpu.py),用于在多个GPU上进行测试。实现之后,predict_classes()函数不适用于新的模型结构,经过一些阅读后我转而使用预测函数。此功能仅适用于某些批量大小,例如批量大小为750的作品,而500,100和350则失败,并出现以下错误:

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

培训完成时,批量调整大小为75.任何想法为什么会发生这种情况或如何解决?

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)

1 个答案:

答案 0 :(得分:0)

如果您使用的是make_parallel函数,则需要确保样本数可以被batch_size * N整除,其中N是您正在使用的GPU数。例如:

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

只要样本数可以被batch_size * N整除,就可以使用不同的batch_size进行训练和测试。