我最近实现了这个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)
答案 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进行训练和测试。