gpt4 book ai didi

python - 在没有自定义对象的情况下保存完整的 tf.keras 模型?

转载 作者:行者123 更新时间:2023-12-04 12:37:05 35 4
gpt4 key购买 nike

假设我们有一些模型,包括在训练期间很重要的自定义损失和指标。是否可以在没有自定义对象的情况下保存完整的模型,即权重 + graphdef/pb 文件?
在推理过程中,自定义损失和指标是 不需要 , 因此...

tf.keras.models.load_model("some_model", custom_objects={...})
...只会使推理代码变得更加复杂,因为需要包含自定义对象代码以进行推理(尽管未使用它)。
然而, tf.keras.callbacks.ModelCheckpoint (即使使用 include_optimizer=False )以及拨打 model.save()始终保存模型定义,包括自定义对象。
因此,只需加载模型...
tf.keras.models.load_model("some_model")
...总是会失败并提示缺少自定义对象。
是否可以在没有自定义损失/指标的情况下以某种方式保存整个模型?获得易于加载的网络的“推理”版本?
或者是将所有内容卡住到 TFLite 模型的唯一解决方案?
当然,可以简单地使用 model.save_weights() ,但随后需要包含实际代码以进行推理,这是不希望的。

最佳答案

如果目的是防止loss和metrics的加载,可以使用参数compileload_model :

model = tf.keras.models.load_model("some_model", compile=False)
这应该跳过损失和指标/优化器的要求,因为模型未编译。当然你现在不能训练模型,但它应该可以很好地使用 model.predict() 进行推理。

关于python - 在没有自定义对象的情况下保存完整的 tf.keras 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63513390/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com