tensorflow学习笔记3:写一个mnist rpc服务

本篇做一个没有实用价值的mnist rpc服务,重点记录我在调试整合tensorflow和opencv时遇到的问题;

准备模型

mnist的基础模型结构就使用tensorflow tutorial给的例子,卷积-池化-卷积-池化-全连接-dropout-softmax,然后走常规的优化训练,得到一个错误率2.0%的结果;

然后准备一个单张图片的输入,一个(1, 28, 28, 1)的tensor,输入到模型里,得到一个单条的输出,给它们定好名字;

 

tensorflow学习笔记3:写一个mnist rpc服务

将模型保存下来:

tensorflow学习笔记3:写一个mnist rpc服务

 

加载模型

c++写一个thrift rpc server,在handler的实例化阶段加载模型,加载过程与上一篇一致:

bool MNISTRecognizeServletHandler::Init() { // init session Status status = NewSession(SessionOptions(), &session_); if (!status.ok()) { LOG(ERROR) << status.ToString(); return false; } else { session_inited_ = true; } // load graph graph_def_ = new GraphDef(); std::string model_path = FLAGS_model_path; status = ReadBinaryProto(Env::Default(), model_path, graph_def_); if (!status.ok()) { LOG(ERROR) << status.ToString(); return false; } else { graph_loaded_ = true; } // prepare session status = session_->Create(*graph_def_); if (!status.ok()) { LOG(ERROR) << status.ToString(); return false; } else { session_prepared_ = true; } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywywy.html