【发布时间】:2021-04-14 09:21:15
【问题描述】:
我在 Databricks 环境中使用自定义 keras 模型。
对于自定义 keras 模型,model.save(model.h5) 不起作用,因为自定义模型不可序列化。相反,建议使用model.save_weights(path) 作为替代。
model.save_weights(pathDirectory) 有效。这会在 pathDirectory 中生成 3 个文件 checkpoint,.data-00000-of-00001,.index
对于加载重量,以下机制工作正常。
model = Model()
model.load_weights(path)
但我想在我刚刚保存的预训练权重上训练我的模型。就像我保存了模型权重一样,然后继续对这些保存的权重进行训练。
所以,当我加载模型权重并应用训练循环时,我收到了这个错误,TypeError: 'CheckpointLoadStatus' object is not callable
【问题讨论】:
-
你试过没有“.h5”结尾吗?
-
是的,我尝试了很多变化。 “.h5”,没有扩展名,“.tf”,“.hpy5”等。model.save()在任何情况下都不起作用,除了“.hpy5”,但是model.load(“.hpy5”)不起作用.
-
好的,你是在加载权重后重新编译模型吗?
-
我只是这样做
model = model.load_weights(model_path)然后训练循环照常继续 -
好的,我认为您需要在加载权重后重新编译模型。加载权重仅加载权重,因此您需要重新创建模型结构(您的层)、优化器和损失,然后在拟合之前对其进行编译。
标签: tensorflow keras databricks