使用Tensorflow检查点在C ++中还原模型

皮罗

我已经训练了一个使用Python使用Tensorflow实现的网络。最后,我使用tf.train.Saver()保存了模型。现在,我想使用C ++通过这个经过预先训练的网络进行预测。

我怎样才能做到这一点 ?有没有一种方法可以转换检查点,以便可以与tiny-dnn或Tensorflow C ++一起使用?

任何想法都欢迎:)谢谢!

您可能应该以SavedModel格式导出模型,该格式封装了计算图和保存的变量(tf.train.Saver仅保存变量,因此无论如何都必须保存图)。

然后,您可以使用加载C ++中保存的模型LoadSavedModel

确切的调用将取决于模型的输入和输出。但是Python代码看起来像这样:

# You'd adjust the arguments here according to your model
signature = tf.saved_model.signature_def_utils.predict_signature_def(                                                                        
  inputs={'image': input_tensor}, outputs={'scores': output_tensor})                                                                         


builder = tf.saved_model.builder.SavedModelBuilder('/tmp/my_saved_model')                                                                    

builder.add_meta_graph_and_variables(                                                                                                        
   sess=sess,                                                                                                                    
   tags=[tf.saved_model.tag_constants.SERVING],                                                                                             
   signature_def_map={                                                                                                       
 tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:                                                                
        signature                                                                                                                        
})                                                                                                                                       

builder.save()

然后在C ++中,您将执行以下操作:

tensorflow::SavedModelBundle model;
auto status = tensorflow::LoadSavedModel(session_options, run_options, "/tmp/my_saved_model", {tensorflow::kSavedModelTagServe}, &model);
if (!status.ok()) {
   std::cerr << "Failed: " << status;
   return;
}
// At this point you can use model.session

(请注意,使用SavedModel格式还将允许您使用TensorFlow Serving服务模型,如果这对您的应用程序有意义)

希望能有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TensorFlow急切模式:如何从检查点还原模型?

TensorFlow:从多个检查点还原变量

在tensorflow中,当图形被修改时,如何使用“ MonitoredTrainingSession”仅还原部分检查点?

Tensorflow检查点模型被删除

在TensorFlow中还原模型

Tensorflow saver.restore()不还原我的模型检查点

Windows Tensorflow无法还原检查点。“访问被拒绝。”

tensorflow:从检查点还原以继续训练

尝试使用Cloud TPU还原更新的BERT模型检查点时出现InfeedEnqueueTuple问题

tensorflow对象检测从现有检查点微调模型

Tensorflow失败,并显示“无法从提要中获取元素作为字节”。尝试还原检查点时

检查点在Ray tune中进行试验的最佳模型

如何保存使用来自Tensorflow 1.xx的.meta检查点模型的Tensorflow 2.0模型?

仅当模型在TensorFlow中显示改进时才保存模型检查点

Tensorflow:如何在Tensorboard中查看检查点?

将TensorFlow检查点保存在Google Colab中

如何在perforce中设置要还原的检查点?

使用模型检查点是个好主意吗?

从Tensorflow中的模型检查点将损失值加载到numpy.array中

从检查点还原Apache Flink作业

如何在Tensorflow中实施预训练?如何部分使用检查点文件中保存的权重?

TensorFlow,将两个检查点值合并为一个并还原

在特定的迭代或检查点将模型加载/恢复到tensorflow

如何在Tensorflow Object Detection API中存储最佳模型检查点(不仅是最新的5个)?

在同一模型检查点的两次评估中,Tensorflow对象检测得到的结果不同

在Tensorflow中恢复检查点时如何获取global_step?

如何读取保存在tensorflow检查点文件中的权重?

如何在Tensorflow中的检查点中保存张量?

在XNA中创建检查点