tensorflow转换ckpt为savermodel模型的实现


Posted in Python onMay 25, 2020

ckpt转换成SavedModel

convert_ckpt_to_savermodel.py

import tensorflow as tf
import sys
 
trained_checkpoint_prefix = sys.argv[1]
export_dir = sys.argv[2]
graph = tf.Graph()
config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)
with tf.compat.v1.Session(graph=graph, config=config) as sess:
  # Restore from checkpoint
  loader = tf.compat.v1.train.import_meta_graph(trained_checkpoint_prefix + '.meta')
  loader.restore(sess, trained_checkpoint_prefix)
 
  # Export checkpoint to SavedModel
  builder = tf.compat.v1.saved_model.builder.SavedModelBuilder(export_dir)
  builder.add_meta_graph_and_variables(sess, [tf.saved_model.TRAINING, tf.saved_model.SERVING], strip_default_attrs=True)
  builder.save()

假设已经生成了ckpt模型

checkpoint hello_model.data-00000-of-00001 hello_model.index hello_model.meta

python ./convert_ckpt_to_savermodel.py hello_model ./save

会在save目录下生成

save
├── saved_model.pb
└── variables
├── variables.data-00000-of-00001
└── variables.index

补充知识:tensorflow serving模型转换

tf serving是一款灵活的高性能机器学习服务系统,专为生产环境而设计。通过它可以轻松部署新算法和实验,同时保持服务框架和API不变。它提供了与tensorflow模型的即是可用集成,但很容易扩展以便服务其他类型的模型和数据。

tf serving的安装过程这里不多说,大家可以百度。

此处主要介绍tensorflow模型在docker中转换时的修改内容。

修改inception_saved_model.py文件中的内容,主要包括:image_size,NUM_CLASSES,SYNSET_FILE,METADATA_FILE变量的内容,必要时修改model_version,NUM_TOP_CLASSES。

修改inception_model.py文件中的内容,包括从nets文件夹中导入所需网络的信息,修改inference函数中对应的网络名称。

from nets.inception_v1 import inception_v1, inception_v1_arg_scope

with slim.arg_scope(inception_v1_arg_scope()):
  logits, endpoints = inception_v1(
     images,
     dropout_keep_prob=0.8,
     num_classes=num_classes,
     is_training=for_training,
     scope=scope)

另,使用CUDA环境时,需要添加环境及bazel编译的配置项

export TF_NEED_CUDA=1
bazel build -c opt --config=cuda tf_models/slim:inception_saved_model

ps,关于gpu的设置如下:

export CUDA_VISIBLE_DEVICES='0,1'  #shell环境
 
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0,1" #python环境

以上这篇tensorflow转换ckpt为savermodel模型的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python入门篇之字符串
Oct 17 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
Python中多个数组行合并及列合并的方法总结
Apr 12 Python
Python实现去除列表中重复元素的方法小结【4种方法】
Apr 27 Python
Django REST framework 视图和路由详解
Jul 19 Python
对django2.0 关联表的必填on_delete参数的含义解析
Aug 09 Python
Django中自定义admin Xadmin的实现代码
Aug 09 Python
Django如何实现网站注册用户邮箱验证功能
Aug 14 Python
python 命令行传入参数实现解析
Aug 30 Python
python对一个数向上取整的实例方法
Jun 18 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
Jun 05 Python
基于Python把网站域名解析成ip地址
May 25 #Python
使用keras和tensorflow保存为可部署的pb格式
May 25 #Python
Python使用configparser读取ini配置文件
May 25 #Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 #Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
May 25 #Python
keras模型保存为tensorflow的二进制模型方式
May 25 #Python
keras 如何保存最佳的训练模型
May 25 #Python
You might like
如何分别全角和半角以避免乱码
2006/10/09 PHP
php实现的二分查找算法示例
2017/06/20 PHP
PHP Class SoapClient not found解决方法
2018/01/20 PHP
tagName的使用,留一笔
2006/06/26 Javascript
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
基于JavaScript实现弹出框效果
2016/02/19 Javascript
基于JavaScript实现无缝滚动效果
2017/07/21 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
深入了解响应式React Native Echarts组件
2019/05/29 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
python实现多线程的两种方式
2016/05/22 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
Win10 安装PyCharm2019.1.1(图文教程)
2019/09/29 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
我的大学生活职业生涯规划
2014/01/02 职场文书
大二学习计划书范文
2014/04/27 职场文书
经济国贸专业求职信
2014/06/18 职场文书
纪律教育学习心得体会
2014/09/02 职场文书