Keras ValueError:尝试将模型加载到另一个平台时,未知的图层:名称

时间:2018-11-06 21:51:15

标签: python tensorflow keras keras-layer nvidia-jetson

我已经在Nvidia Quadro板上使用Keras 2.2.4训练了卷积神经网络。我已经将训练好的模型保存在两个单独的文件中:一个描述架构的文件(model.json),另一个具有所有权重的文件(model.h5)。

我想将保存的模型加载到运行Keras 2.2.2的Nvidia Jetson TX2板上,我正在尝试按以下方式进行操作:

# load json and create model
    json_file = open(prefix+'final_model.json', 'r')
    loaded_model_json = json_file.read()
    json_file.close()
    loaded_model = model_from_json(loaded_model_json)
# load weights into new model
    loaded_model.load_weights(prefix+"model.h5")
    model = loaded_model

但是,当我尝试加载时,出现以下错误:

loaded_model = model_from_json(loaded_model_json)

model_from_json中的文件“ /home/nvidia/.local/lib/python3.5/site-packages/keras/engine/saving.py”,行368     返回反序列化(config,custom_objects = custom_objects)   反序列化文件“ /home/nvidia/.local/lib/python3.5/site-packages/keras/layers/init.py”,第55行     printable_module_name ='图层')   在deserialize_keras_object中的文件“ /home/nvidia/.local/lib/python3.5/site-packages/keras/utils/generic_utils.py”,第145行     列表(custom_objects.items()))   在from_config中的文件“ /home/nvidia/.local/lib/python3.5/site-packages/keras/engine/sequential.py”中,第292行     custom_objects = custom_objects)   反序列化文件“ /home/nvidia/.local/lib/python3.5/site-packages/keras/layers/init.py”,第55行     printable_module_name ='图层')   在deserialize_keras_object中的第165行,文件“ /home/nvidia/.local/lib/python3.5/site-packages/keras/utils/generic_utils.py”     ':'+ function_name) ValueError:未知图层:名称

我也试图将整个模型保存在一个文件中,但是出现了相同的错误。

我尝试了here的解决方案,但无法解决。

有人以前见过此错误吗?有什么建议吗?

3 个答案:

答案 0 :(得分:3)

昨天我遇到了同样的问题,我刚刚通过conda更新了keras,一切正常。

答案 1 :(得分:0)

只需使用以下命令将keras软件包更新为最新版本

conda update keras

答案 2 :(得分:0)

对我来说,它的版本不同tensorflow。该模型是用tensorflow v2.1.0创建的,而我试图用tensorflow v1.10.0加载它。只需确保 tensorflow版本一致即可。