2016-12-27 12 views
0

チェックポイントを生成HDF5スニペット:Keras:チェックポイントの重みを負荷は複数のGPUで

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機械モデルにロードできるファイルです。

関連する問題