如何从模块加载keras模型结构?

时间:2019-12-27 14:42:10

标签: python tensorflow keras

我使用的是一种keras模型,我在一个python脚本中训练该模型,然后在另一个python脚本中使用它。我将权重保存为检查点,但是由于有时我决定更改模型的结构,因此我在实用程序文件中编写了一个函数,该函数返回了keras模型,因此不必定义两次:

# foo_utils.py
from tensorflow import keras

def get_keras_model():
    """Returns a predefined keras model."""
    return keras.models.Sequential([
                keras.layers.Dense(42, activation='softmax'),
                keras.layers.Dense(8, activation='softmax'),
                keras.layers.Dense(8, activation='softmax'),
                keras.layers.Dense(8, activation='softmax'),
            ])

训练模型时,我可以使用此功能来获得模型,并且可以使用model.fit()。我的计划是然后使用以下代码加载该模型和检查点:

import foo_utils

model = foo_utils.get_keras_model()
model.load_weights('<path-to-checkpoint>')

但是,出现以下错误:

tensorflow.python.framework.errors_impl.AlreadyExistsError: Another metric with the same name already exists.

完整的追溯很长,但是如果有必要,我也将其发布。

当我在实际应用程序中定义模型时,我没有收到此错误。我在这里缺少什么东西吗,或者正在加载这样的模型不是一个好主意?

我还注意到,即使我仅导入foo_utils而不使用get_keras_model(),也会出现此错误。

0 个答案:

没有答案