Tensorflow:如何从检查点仅恢复特定的隐藏层,并使用它们构建不同的计算图进行推理?

Tensorflow:如何从检查点仅恢复特定的隐藏层,并使用它们构建不同的计算图进行推理?,tensorflow,restore,production,Tensorflow,Restore,Production,比如说,我训练了一个模型,其中有一个非常复杂的计算图,是为训练量身定做的。经过大量培训后,最佳模型被保存到检查点文件中。现在,我想使用这个最佳模型的学习参数进行推理。然而,用于训练的计算图与我打算用于推理的计算图并不完全相同。具体地说,图中有一个模块,它有几个层,负责输出项目的嵌入向量(推荐系统上下文)。然而,为了计算性能,在推理期间,我希望预先计算所有项目嵌入向量,以便每个请求所需的唯一计算只涉及两个隐藏层 因此,我想知道的是: 如何仅恢复输出项目嵌入向量的网络部分,以便为所有项目预计算这些向

比如说,我训练了一个模型,其中有一个非常复杂的计算图,是为训练量身定做的。经过大量培训后,最佳模型被保存到检查点文件中。现在,我想使用这个最佳模型的学习参数进行推理。然而,用于训练的计算图与我打算用于推理的计算图并不完全相同。具体地说,图中有一个模块,它有几个层,负责输出项目的嵌入向量(推荐系统上下文)。然而,为了计算性能,在推理期间,我希望预先计算所有项目嵌入向量,以便每个请求所需的唯一计算只涉及两个隐藏层

因此,我想知道的是:

  • 如何仅恢复输出项目嵌入向量的网络部分,以便为所有项目预计算这些向量(这将在一些离线预处理脚本中发生)

  • 一旦预先计算了所有项目嵌入向量,在在线推理期间,如何仅恢复网络后期的隐藏层,并使其接收预先计算的项目嵌入向量

  • 如何实现上述几点?我认为这是第一点。更容易完成。但我最担心的是第二点。在用于训练的计算图中,为了评估任何层,我必须为输入占位符提供值。然而,在在线推断过程中,这些占位符将是过时的,因为许多内容将被预计算,我不知道如何告诉网络后期的隐藏层,他们不应该再依赖这些过时的占位符,而是依赖预计算的内容