如何在TensorFlow 2.x中保存seq2seq模型?

时间:2020-11-05 15:53:43

标签: tensorflow seq2seq

我正在遵循TensorFlow文档中的“关注神经机器翻译”教程,但无法弄清楚如何将模型另存为SavedModel文件。

在文档中可以看到,我可以很容易地保存检查点,但是afaik在与其他应用程序集成时不是很有用。即使没有使用tf.keras.Model,有人知道保存整个“模型”吗?

文档:https://www.tensorflow.org/tutorials/text/nmt_with_attention

1 个答案:

答案 0 :(得分:0)

here所述,在tensorflow检查点和SavedModel中有2种保存机制。

如果代码(培训课程或此处的教程)始终可用,那么您只需还原并使用带有检查点的模型即可。

为了拥有SavedModel,您需要将代码重写为 class CustomModule(tf.Module),请注意

保存tf.Module时,将保存通过递归遍历找到的所有tf.Variable属性,tf.function-decorated方法和tf.Module。 (有关此递归遍历的更多信息,请参见Checkpoint教程。)但是,所有Python属性,函数和数据都会丢失。这意味着保存tf.function时,不会保存任何Python代码。 如果没有保存任何Python代码,那么SavedModel如何知道如何还原该函数? 简而言之,tf.function通过跟踪Python代码以生成ConcreteFunction(tf.Graph周围的可调用包装器)来工作。保存tf.function时,实际上是在保存tf.function的ConcreteFunctions缓存。 要了解有关tf.function和ConcreteFunctions之间关系的更多信息,请参阅tf.function指南。

更多信息here