使用多GPU训练的Keras模型无法在非GPU机器上加载

时间:2020-02-12 13:18:48

标签: python tensorflow keras

在加载生成的h5文件时,出现以下错误:

ValueError:在配置文件中找不到模型。

我已阅读有关内容,发现我需要重新加载模型并将其保存为0 gpu机器,如下所示: https://github.com/keras-team/keras/issues/11253#issuecomment-482467792

按照此处的说明进行操作并添加了以下部分:

x , y = build_resnet(x_train.shape[1:], 64, nb_classes)
model = keras.models.Model(inputs=x, outputs=y)
p_model = multi_gpu_model(model)
old_model = p_model.layers[-2]
old_model.save(save_path)

我遇到以下错误:

ValueError:为使多GPU使用有效,请用multi_gpu_model调用gpus >= 2。收到:gpus=0

当我尝试以下代码时:

model = keras.models.Model(inputs=x, outputs=y)
model.load_weights('resNet_trained_on_multi.h5')

我遇到以下错误:

ValueError:您正在尝试将包含0层的权重文件加载到具有26层的模型中。

我该怎么做才能恢复已保存的多GPU权重/模型? 我有以下文件(全部同时生成):

  • resNet_trained_on_multi.h5-大小6KB
  • resNet_trained_on_multi.ckpt.data-00000-of-00001-大小12M​​B
  • resNet_trained_on_multi.ckpt.index-大小23KB
  • resNet_trained_on_multi.ckpt.meta-大小4MB

使用以下保存代码生成:

def saveModel(model):
    saver = tf.train.Saver()
    h5_file = 'resNet_trained_on_multi.h5'
    ckpt_file = 'resNet_trained_on_multi.ckpt'

    saver.save(kerasBackend.get_session(), ckpt_file)
    print("[OUTPUT] Checkpoint saved to: " + ckpt_file)

    model.save(h5_file)
    print("[OUTPUT] H5 Model saved to: " + h5_file)

0 个答案:

没有答案