0

我已经成功地从头开始在自定义 200 个类上训练了 inception v3 模型。现在我的输出目录中有 ckpt 文件。如何使用这些模型进行推理?

最好将模型加载到 GPU 上,并在模型保留在 GPU 上时随时传递图像。使用 TensorFlow 服务对我来说不是一个选项。

注意:我尝试冻结这些模型,但在冻结时未能正确放置 output_nodes。已使用ImagenetV3/Predictions/Softmax但不能与 feed_dict 一起使用,因为我无法从冻结模型中获得所需的张量。

TF 站点和 repo 上关于此推理部分的文档很差。

4

1 回答 1

0

听起来您走在正确的轨道上,您在推理时并没有真正做任何与训练时不同的事情,只是您不要求它计算optimizer推理时的时间,并且不这样做,不会权重会不断更新。

tensorflow 文档中的保存和恢复指南解释了如何从检查点恢复模型:

https://www.tensorflow.org/programmers_guide/saved_model

恢复模型时有两个选择,要么从代码(通常是build_graph()方法)再次构建 OPS,然后从检查点加载变量,我最常使用这种方法。或者,如果图形定义与检查点一起保存,您可以从检查点加载图形定义和变量。

加载图表后,您将创建一个会话并要求图表仅计算输出。张量ImagenetV3/Predictions/Softmax对我来说很合适(我对您正在使用的特定模型并不立即熟悉)。您将需要传入适当的输入、您的图像,可能还有图形需要的任何参数,有时需要一个is_train布尔值,以及其他此类详细信息。

由于您没有要求 tensorflow 计算优化器操作,因此不会更新权重。除了您请求图形计算的操作之外,训练和推理之间实际上没有区别。

默认情况下,Tensorflow 将使用 GPU,就像它在训练中所做的那样,所以所有这些几乎都是在幕后为您处理的。

于 2017-11-26T17:37:32.000 回答