2016-12-27 6 views
0

체크 포인트 니펫을 여러 GPU에 의해 생성 HDF5 :Keras : 부하 검사 점의 가중치는

checkpointer = ModelCheckpoint(filepath=os.path.join(savedir, "mid/weights.{epoch:02d}.hd5"), monitor='val_loss', verbose=1, save_best_only=False, save_weights_only=False) 
hist = model.fit_generator(
    gen.generate(batch_size = batch_size, nb_classes=nb_classes), samples_per_epoch=593920, nb_epoch=nb_epoch, verbose=1, callbacks=[checkpointer], validation_data = gen.vld_generate(VLD_PATH, batch_size = 64, nb_classes=nb_classes), nb_val_samples=10000 
) 

내가 HDF5 형식으로 mid 파일을 덤프 다중 GPU 호스트에 내 모델을 훈련했다. 내가 keras.load_weights('mid')으로 단일 GPU 시스템에서 그들을로드 할 때 오류가 발생했습니다 :

Using TensorFlow backend. 
Traceback (most recent call last): 
    File "server.py", line 171, in <module> 
    model = load_model_and_weights('zhch.yml', '7_weights.52.hd5') 
    File "server.py", line 16, in load_model_and_weights 
    model.load_weights(os.path.join('model', weights_name)) 
    File "/home/lz/code/ProjectGo/meta/project/libpolicy-server/.virtualenv/lib/python3.5/site-packages/keras/engine/topology.py", line 2701, in load_weights 
    self.load_weights_from_hdf5_group(f) 
    File "/home/lz/code/ProjectGo/meta/project/libpolicy-server/.virtualenv/lib/python3.5/site-packages/keras/engine/topology.py", line 2753, in load_weights_from_hdf5_group 
    str(len(flattened_layers)) + ' layers.') 
ValueError: You are trying to load a weight file containing 1 layers into a model with 21 layers. 

단일 GPU 시스템에서 다중 GPU에 의해 생성 된 체크 포인트 가중치를로드 할 수있는 방법이 있나요? Keras가이 문제에 대해 논의하지 않아서 도움이된다고 생각됩니다.

+0

동일한 멀티 GPU 시스템에서로드 할 수 있습니까? 오류 메시지는 많은 레이어 불일치가 있음을 나타냅니다. 모델에는 몇 개의 레이어가 있습니까? –

+0

@YaoZhang Weights는 원본 컴퓨터에서'model.load_weights()'와 함께로드 될 수 있습니다. 'model.yml'과 다중 GPU 시스템의 모델에서 21 개의 레이어. – lz96

답변

2

이 같은 단일 GPU에 모델을로드 할 수

from keras.models import load_model 

multi_gpus_model = load_model('mid') 
origin_model = multi_gpus_model.layers[-2] # you can use multi_gpus_model.summary() to see the layer of the original model 
origin_model.save_weights('single_gpu_model.hdf5') 

'single_gpu_model.hdf5'는 단일 GPU 기계 모델에로드 할 수있는 파일입니다.