Keras重量误差

时间:2018-06-10 02:45:29

标签: python keras lstm

目前,我正在研究基于爱丽丝梦游仙境故事生成文本的lstm。我有两个脚本,training scripttesting script。对于每个时代,我决定使用权重创建自己的文件,您可以看到创建的所有文件here。训练脚本完美地运行,它创建所有文件并且在执行期间没有错误。当我运行我的测试脚本时,它会编译,但在执行期间,给我一个错误

ValueError: You are trying to load a weight file containing 2 layers into a model with 3 layers.

我为两个网络创建了完全相同的架构,但我找不到问题。 我用Google搜索,发现它有效。我将我的keras版本更改为2.0.2并且它可以工作,但是如何更改我的代码,以便它可以在最新版本的keras上运行?

1 个答案:

答案 0 :(得分:0)

这是因为您以调用ModelCheckpoint的方式保存整个模型(架构+权重+等)。根据{{​​3}},ModelCheckpoint采用名为save_weights_only的参数,其默认值为False,以便:

  

如果为True,则仅保存模型的权重   (model.save_weights(filepath)),否则保存完整模型   (model.save(filepath))。

因此,在您的代码中,您要保存整个模型,因为您没有设置save_weights_only=True。您可以使用Keras documentation加载模型,也可以设置save_weights_only=True并再次运行训练脚本(如果您只想保存权重而不是整个模型。或者,仍然存在实现这一目标的更好方法:您可以使用load_model加载模型,然后使用save_weights保存权重,最后删除模型文件)。