加载权重 keras LSTM 不工作

Posted

技术标签:

【中文标题】加载权重 keras LSTM 不工作【英文标题】:loading weights keras LSTM not working 【发布时间】:2018-12-09 04:16:54 【问题描述】:

我正在尝试将权重从 Keras 1.0 模型加载到我创建的 Keras 2.0 模型中。我确信模型架构是完全一样的。我遇到的问题是 load_weights() 函数正在加载所有权重。

当我从原始模型(通过 load_model 加载)和使用 load_weights() 的新模型将权重打印到文本文件时,后者缺少许多条目并且实际上是不同的。这在进行预测时也会显示出来,因为准确性较低。

这个问题只发生在我的 LSTM 层中。嵌入层很好,密集层也很好。

有什么想法吗?我不能使用 load_model(),因为原始保存的模型是在 keras 1.0 中完成的,我需要使用 keras 2.0


编辑更多:

我应该注意,我认为问题在于未加载内部状态。让我解释一下。当我在每一层上使用 get_weights() 并在终端或文件中打印它时,原始模型会输出一个更大的矩阵。

使用 load_weights 然后 get_weights 并打印权重矩阵缺少许多元素。我认为这是内部状态。

【问题讨论】:

您是否使用名称保存模型?这可能会有所帮助。 你能再解释一下吗?每个层都有默认命名。 【参考方案1】:

问题在于已保存已编译图形的参数。如果可以的话,我认为只是转移权重并继续训练以使其赶上(可能是 1-2 epochs)是安全的。

Gl

【讨论】:

以上是关于加载权重 keras LSTM 不工作的主要内容,如果未能解决你的问题,请参考以下文章

在 keras 中保存和加载权重

如何在 Keras 中解释 LSTM 层中的权重 [关闭]

Keras.applications.models权重:存储路径及加载

将keras权重加载到特定图层

加载权重后如何在 keras 中添加和删除新图层?

Keras LSTM - 为啥“相同”模型和相同权重的结果不同?