我已经从头开始成功地在自定义的200个类中训练了初始v3模型。现在我的输出目录中有ckpt文件。如何使用这些模型进行推理?
最好在GPU上加载模型并在模型持续存在于GPU时随时传递图像。使用TensorFlow服务对我来说不是一个选择。
注意:我试图冻结这些模型但是在冻结时无法正确放置output_nodes。已使用ImagenetV3/Predictions/Softmax
但无法将其与feed_dict一起使用,因为我无法从冻结模型中获取所需的张量。
TF网站上的文档很差。这个推理部分的回购。
答案 0 :(得分:0)
听起来你走在正确的轨道上,你在推理时没有像在训练时那样做任何不同的事情,除非你没有要求它在推理时计算optimizer
,如果不这样做,就不会更新任何权重。
tensorflow文档中的保存和恢复指南介绍了如何从检查点恢复模型:
https://www.tensorflow.org/programmers_guide/saved_model
恢复模型时有两个选项,要么从代码中再次构建OPS(通常是build_graph()
方法),然后从检查点加载变量,我最常使用此方法。或者您可以加载图形定义&如果使用检查点保存图形定义,则从检查点输入变量。
加载图表后,您将创建一个会话并要求图表仅计算输出。张量ImagenetV3/Predictions/Softmax
对我来说是正确的(我不会立即熟悉您正在使用的特定模型)。您需要传入适当的输入,图像以及图形所需的任何参数,有时需要is_train
布尔值,以及其他此类细节。
由于您没有要求tensorflow来计算优化器操作,因此不会更新权重。除了您请求图表计算的操作之外,训练和推理之间确实没有区别。
Tensorflow默认情况下会像使用训练一样使用GPU,所以所有这些都是在幕后为您处理的。