2017-04-25 1 views
0

최근 여러 GPU에서 테스트 할 때이 make_parallel 코드 (https://github.com/kuza55/keras-extras/blob/master/utils/multi_gpu.py)를 구현했습니다. predict_classes() 함수를 구현 한 후에는 새로운 모델 구조에서 작동하지 않았습니다. 일부 읽기 후에 대신 predict 함수를 사용하여 전환했습니다. 훈련은 75 어떤 생각 이유에 BATCH_SIZE으로 완료여러 GPU에서 Keras가 작동하지 않을 것이라고 예측했습니다.

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

: 500, 100 및 350는 다음과 같은 오류와 함께 실패하면서이 기능은 예를 들어, 특정 배치 크기를 사용하여 750 개 작품의 배치 크기를 작동 이런 일이 일어나거나 어떻게 해결할 수 있습니까?

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 기능을 사용하는 경우, 당신은 샘플을 잘 수가 N 사용중인 GPU의 숫자가 BATCH_SIZE * N,로 나누어 확인해야합니다. 예를 들어 :

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

당신은 한 샘플의 수는 BATCH_SIZE * N로 나누어으로 교육 및 테스트를 위해 다른 BATCH_SIZE를 사용할 수 있습니다.

관련 문제