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 sys.path详细介绍
Oct 17 Python
python图片验证码生成代码
Jul 02 Python
Python数据结构之翻转链表
Feb 25 Python
python切片及sys.argv[]用法详解
May 25 Python
python selenium 获取标签的属性值、内容、状态方法
Jun 22 Python
Python判断中文字符串是否相等的实例
Jul 06 Python
Python实现打砖块小游戏代码实例
May 18 Python
Python完成毫秒级抢淘宝大单功能
Jun 06 Python
Django 用户认证组件使用详解
Jul 23 Python
python中元组的用法整理
Jun 15 Python
用python删除文件夹中的重复图片(图片去重)
May 12 Python
用Python可视化新冠疫情数据
Jan 18 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
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
Python写的一个简单监控系统
2015/06/19 Python
python中的set实现不重复的排序原理
2018/01/24 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
Python实现最大子序和的方法示例
2019/07/05 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
Python实现Restful API的例子
2019/08/31 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
中专生自荐信
2013/10/12 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
2015年七一建党节慰问信
2015/03/23 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS