我使用的是一种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()
,也会出现此错误。