繁体   English   中英

保存完整的 tf.keras model 没有自定义对象?

[英]Save complete tf.keras model without custom objects?

假设我们有一些 model 包括在训练期间很重要的自定义损失和指标。 是否可以保存完整的 model,所以 weights + graphdef / pb 文件,没有自定义对象?

在推理过程中,不需要自定义损失和指标,因此......

tf.keras.models.load_model("some_model", custom_objects={...})

...只会使推理代码更加复杂,因为需要包含自定义 object 代码进行推理(尽管未使用)。

但是, tf.keras.callbacks.ModelCheckpoint (即使使用include_optimizer=False )以及调用model.save()始终保存Z20F35E630DAF44DBFA4C3F68F5399D8的自定义定义

因此,只需将 model 加载...

tf.keras.models.load_model("some_model")

...总是会失败并抱怨缺少自定义对象。

是否可以在没有自定义损失/指标的情况下以某种方式保存整个 model? 要获得易于加载的网络“推理”版本?

或者是将所有内容冻结到 TFLite model 的唯一解决方案?

当然,可以简单地使用model.save_weights() ,但随后需要包含实际代码以便稍后进行推理,这是不希望的。

如果目的是防止加载损失和指标,可以使用load_model中的参数compile

model = tf.keras.models.load_model("some_model", compile=False)

这应该跳过损失和指标/优化器的要求,因为 model 未编译。 当然,您现在无法训练 model,但使用model.predict()进行推理应该可以正常工作

我也有同样的需求。 在我的例子中,自定义对象是构建 model 架构所必需的。

有没有办法将 de savedmodel 文件转换为不需要加载 custom_objects 的某种格式?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM