直接说结论:

1、实验室环境下,直接saver和restore即可。

2、生产环境:

(1)部署在移动终端上的(例如ios、android),场景:图像识别等。用freeze_graph合成pb和ckpt文件,然后用optimize_for_inference、quantize_graph进行优化。再用TensorFlowInferenceInterface调用(这个,不知道ios和android是否相同)。

(2)部署在服务端提供服务使用的,场景:推荐系统等。使用tensorflow serving进行模型服务化。

------------------------------------------------------------

下边是基于部署在服务端提供服务的方式,查阅资料时tensorflow和tensorflow serving都是1.3版本。

推荐本tensorflow实践的工具书,douban评分9.6。上手学习比guide更系统一些,不过工程化方面还是需要多实践、优化。

在读goooole的paper的时候经常看到下边这张图。三个虚框已经把google的系统典型流程描述得很清楚。Data Generation这步,有非常多的学问这里木有经验,略过。我们来看Model Training和Model Serving两部分。也正是题主的问题的核心。

注:整个系统流程都为线上生产流程非实验室环境。

前面几位答友的知识点已经都提到了,这里也就总结整理了下,没有新知识:

1、Previous Models为训练好的模型,即Model Trainer的训练结果。通常在实验室环境中完成一个模型并验证其能发布到线上使用后,通过模型保存扔到生产环境的这里提供给线上系统使用。对应的代码实现:

# Export inference model.

output_path = os.path.join(

tf.compat.as_bytes(FLAGS.output_dir),

tf.compat.as_bytes(str(FLAGS.model_version)))

print 'Exporting trained model to', output_path

...

builder = tf.saved_model.builder.SavedModelBuilder(output_path)

...

builder.save()

目录里是类似这样的文件:(没什么神秘的,看save的手册即可)

2、Model Trainer,模型训练。只要训练集准备好,就可以对模型进行训练。通常需要有个触发的条件,例如晚上1点,或者数据集抽样完成等,只要能把你的模型运行起来就可以。那这里就涉及两点1)加载Previous Model,2)验证模型,如果满足你的要跟则保存模型。加载模型的代码实现:

# Restore variables from training checkpoint.

variable_averages = tf.train.ExponentialMovingAverage(inception_model.MOVING_AVERAGE_DECAY)

variables_to_restore = variable_averages.variables_to_restore()

saver = tf.train.Saver(variables_to_restore)

ckpt = tf.train.get_checkpoint_state(FLAGS.checkpoint_dir)

if ckpt and ckpt.model_checkpoint_path:

saver.restore(sess, ckpt.model_checkpoint_path)

3、Model Verifier,不多说,每个模型都要实现的。即accuracy,通常只有accuracy达到我们预计的值为才执行。对应的代码类似:

train_accuracy = accuracy.eval(feed_dict={

x:batch[0], y_: batch[1], keep_prob: 1.0})

print "step%d, training accuracy%g"%(i, train_accuracy)

4、关键一步,Model verfierg到Model Servers。模型保存训练并达到我们的要求后,把它保存了下来。因为是生产环境,为了保障线上实时运行的稳定性,需要让训练中的模型和线上系统进行隔离,需要使用model_version+AB分流来解决这个问题。这里就开始用到Tensorflow Serving这个家伙了,即把你的模型给服务化,通过gRPC方式的HTTP提供实时调用。当然,移动端本地化的不需要这样,需要合成pb文件后直接本地调用。

模型服务化的命令:

下载完Tensorflow Serving,编译的命令,具体看官网。

bazel build -c opt //tensorflow_serving/model_servers:tensorflow_model_server

模型服务化,后边那个“/models/mnist_mode”为前边保存模型的目录

bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server --port=9000 --model_name=mnist --model_base_path=/models/mnist_model/

如果能顺利到这步,剩下的事情就是通过9000端口调用你的模型了。

(这步有很多坑,tensorflow serving变化很快,建议能docker的尽量docker否则,嘿嘿嘿...)

5、Apps Rec Engine线上系统,即调用Model Servers的Clients端,做个gRPC发请求调用就可以了。

python怎么使用训练好的模型设计_tensorflow训练好的模型怎么调用?相关推荐

  1. 机器学习 | Python实现GBDT梯度提升树模型设计

    机器学习 | Python实现GBDT梯度提升树模型设计 目录 机器学习 | Python实现GBDT梯度提升树模型设计 基本介绍 模型描述 程序设计 参考资料 基本介绍 GBDT也是集成学习Boos ...

  2. python基于模型对测试集和训练集的预测概率结果文件可视化模型的校准曲线、多个模型的校准曲线(calibration curve)

    python基于模型对测试集和训练集的预测概率结果文件可视化模型的校准曲线.多个模型的校准曲线(calibration curve) 目录

  3. python人脸识别训练模型生产_深度学习-人脸识别DFACE模型pytorch训练(二)

    首先介绍一下MTCNN的网络结构,MTCNN有三种网络,训练网络的时候需要通过三部分分别进行,每一层网络都依赖前一层网络产生训练数据供当前训练网络,这样也推动了两个网络之间的最小损耗. Pnet Rn ...

  4. 如何在Python中建立和训练K最近邻和K-Means集群ML模型

    One of machine learning's most popular applications is in solving classification problems. 机器学习最流行的应 ...

  5. python mobilenetssd android_tensorflow+ssd_mobilenet实现目标检测的训练

    本文在Ubuntu下使用tensorflow的object detection API来训练自己的数据集.所用模型为ssd_mobilenet,也可以使用其他的模型.当然也可以在windows下训练, ...

  6. python ocr中文训练_cnocr: cnocr是用来做中文OCR的Python 3包。cnocr自带了训练好的识别模型,安装后即可直接使用...

    English README. cnocr 使用交流QQ群 欢迎扫码加入QQ交流群: 最近更新 [2020.05.29]:V1.2.2 主要变更: 优化了对数字识别的准确度. 优化了模型结构,进一步降 ...

  7. python基于训练集预测_Python中训练集/测试集的分割和交叉验证

    原标题:Python中训练集/测试集的分割和交叉验证 嗨,大家好!在上一篇关于Python线性回归的文章之后,我认为撰写关于切分训练集/测试集和交叉验证的文章是很自然的,和往常一样,我将对该主题进行简 ...

  8. 玩转Kaggle:Classify Leaves(叶子分类)——模型设计与训练

    文章目录 一.数据加载 二.模型构建与训练 1. resnet 1.1 ResNet-50模型微调+冻结 1.2 五折交叉验证 1.3 模型预测 1.4 利用K-Fold结果投票获取最终提交数据 1. ...

  9. pythonocr训练模型_cnocr: cnocr是用来做中文OCR的Python 3包。cnocr自带了训练好的识别模型,安装后即可直接使用...

    English README. cnocr 使用交流QQ群 欢迎扫码加入QQ交流群: Release Notes Update 2020.04.21: 发布 cnocr V1.1.0 V1.1.0对代 ...

最新文章

  1. jQuery插件备忘
  2. pyecharts 绘制地图
  3. 函数名,函数体,返回值,参数
  4. 查找功能_苹果查找功能怎么查找另一台设备?很简单,只需这样操作
  5. 《软件工程导论第6版》--张海藩 牟永敏 课后答案及其详解 第7章 实现
  6. python win32api教程_Python win32api.GetSystemMetrics方法代码示例
  7. 计算机数字模拟仿真软件,实时数字仿真系统
  8. 渗透之——Nmap+Zenmap+Amap+Zmap
  9. QString中去除空格
  10. C语言计算机二级选择题重点,2014年计算机二级C语言重点选择题笔试复习资料.doc...
  11. Duilib的界面设计工具DuiDesigner的使用说明
  12. Android 反编译利器,jadx 的高级技巧
  13. mybatis-plus在Mapper类中使用@select标签进行多表联合动态条件查询
  14. gb2312简繁转换js兼容各种浏览器
  15. 临床执业助理医师(综合练习)题库【3】
  16. RuoYi-Vue——裁剪区域头像回显的跨域问题
  17. 2015阿里系统工程师面试经验分享(广州站)
  18. 《操作系统导论》第37章课后答案
  19. 外资在华企业对财税本土化(如:金税三期、开票接口、自动开票和批量开票等)了解多少?
  20. 阿里 weex android,Android Weex容器指南

热门文章

  1. bzoj1588[HNOI2002]营业额统计——双向链表
  2. sysctl -p 重新加载文件/etc/sysctl.conf -a 所有参数 -w 临时指定
  3. 基于Android5.0的Camera Framework源码分析 (三)
  4. sharepoint 2007 将%complete作为条件判断时,工作流无法正常工作
  5. [BI基础] ( 商务智能 ) 简介
  6. Exchange Server 2013 DAG高可用部署(四)-服务器配置(上)
  7. Android Service的思考(3)
  8. Kafka那些值得我们学习的优秀设计
  9. 【硬核】秒杀活动技术方案,Redis申请32个G,被技术总监挑战了...
  10. 图解|零拷贝Zero-Copy技术大揭秘