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

问题描述

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

因此,我想知道该怎么做:

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

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

以上几点如何实现?我认为第 1 点更容易完成。但我最关心的是第 2 点。在用于训练的计算图中,为了评估任何层,我必须为输入占位符提供值。然而,在在线推理期间,这些占位符将被淘汰,因为很多东西会被预先计算,而且我不知道如何告诉网络后面部分的隐藏层它们不应再依赖这些过时的占位符,而是依赖而是在预先计算的东西上。

标签: tensorflowrestoreproduction

解决方案


推荐阅读