如何对初始v3训练模型进行推理?

时间:2017-11-26 16:35:09

标签: tensorflow imagenet

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

最好在GPU上加载模型并在模型持续存在于GPU时随时传递图像。使用TensorFlow服务对我来说不是一个选择。

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

TF网站上的文档很差。这个推理部分的回购。

1 个答案:

答案 0 :(得分:0)

听起来你走在正确的轨道上,你在推理时没有像在训练时那样做任何不同的事情,除非你没有要求它在推理时计算optimizer ,如果不这样做,就不会更新任何权重。

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

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

恢复模型时有两个选项,要么从代码中再次构建OPS(通常是build_graph()方法),然后从检查点加载变量,我最常使用此方法。或者您可以加载图形定义&如果使用检查点保存图形定义,则从检查点输入变量。

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

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

Tensorflow默认情况下会像使用训练一样使用GPU,所以所有这些都是在幕后为您处理的。