【问题标题】:How to save a seq2seq model in TensorFlow 2.x?如何在 TensorFlow 2.x 中保存 seq2seq 模型?
【发布时间】:2020-11-06 02:46:45
【问题描述】:

我正在关注 TensorFlow 文档中的“Neural machine translation with attention”教程,但不知道如何将模型保存为 SavedModel 文件。

如文档中所见,我可以相当轻松地保存检查点,但是在与其他应用程序集成时,这并不是很有用。有谁知道保存整个“模型”,即使他们没有使用tf.keras.Model

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

【问题讨论】:

    标签: tensorflow seq2seq


    【解决方案1】:

    正如here 解释的那样,tensorflow Checkpoints 和 SavedModel 有两种保存机制。

    如果代码(训练或此处,教程)始终可用,那么您可以恢复并使用带有检查点的模型。

    为了拥有 SavedModel,您需要将代码重写为 class CustomModule(tf.Module) 小心点

    当你保存一个 tf.Module 时,任何 tf.Variable 属性、tf.function 修饰的方法和通过递归遍历找到的 tf.Modules 都会被保存。 (有关此递归遍历的更多信息,请参阅检查点教程。)但是,任何 Python 属性、函数和数据都会丢失。这意味着当保存 tf.function 时,不会保存 Python 代码。 如果没有保存 Python 代码,SavedModel 怎么知道如何恢复函数呢? 简而言之,tf.function 通过跟踪 Python 代码来生成 ConcreteFunction(围绕 tf.Graph 的可调用包装器)。保存 tf.function 时,实际上是在保存 tf.function 的 ConcreteFunctions 缓存。 要详细了解 tf.function 和 ConcreteFunctions 之间的关系,请参阅 tf.function 指南。

    更多信息here

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 2017-04-11
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      相关资源
      最近更新 更多