使用keras和tensorflow保存为可部署的pb格式


Posted in Python onMay 25, 2020

Keras保存为可部署的pb格式

加载已训练好的.h5格式的keras模型

传入如下定义好的export_savedmodel()方法内即可成功保存

import keras
import os
import tensorflow as tf
from tensorflow.python.util import compat
from keras import backend as K

def export_savedmodel(model):
 '''
 传入keras model会自动保存为pb格式
 '''
  model_path = "model/" # 模型保存的路径
  model_version = 0 # 模型保存的版本
  # 从网络的输入输出创建预测的签名
  model_signature = tf.saved_model.signature_def_utils.predict_signature_def(
    inputs={'input': model.input}, outputs={'output': model.output})
  # 使用utf-8编码将 字节或Unicode 转换为字节
  export_path = os.path.join(compat.as_bytes(model_path), compat.as_bytes(str(model_version))) # 将保存路径和版本号join
  builder = tf.saved_model.builder.SavedModelBuilder(export_path) # 生成"savedmodel"协议缓冲区并保存变量和模型
  builder.add_meta_graph_and_variables( # 将当前元图添加到savedmodel并保存变量
    sess=K.get_session(), # 返回一个 session 默认返回tf的sess,否则返回keras的sess,两者都没有将创建一个全新的sess返回
    tags=[tf.saved_model.tag_constants.SERVING], # 导出模型tag为SERVING(其他可选TRAINING,EVAL,GPU,TPU)
    clear_devices=True, # 清除设备信息
    signature_def_map={ # 签名定义映射
      tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: # 默认服务签名定义密钥
        model_signature # 网络的输入输出策创建预测的签名
    })
  builder.save() # 将"savedmodel"协议缓冲区写入磁盘.
  print("save model pb success ...")

model = keras.models.load_model('model_data/weight.h5') # 加载已训练好的.h5格式的keras模型
export_savedmodel(model) # 将模型传入保存模型的方法内,模型保存成功.

Tensorflow保存为可部署的pb格式

1、在tensorflow绘图的情况下,使用tf.saved_model.simple_save()方法保存模型

2、传入session

3、传入保存路径

4、传入输入占位符在inputs={“input_name”: 网络输入占位符变量}

5、传入输出变量在outputs={“output_name1”: 网络输出变量, “output_name2”: 网络输出变量}

即可成功保存为可部署的pb格式

tf.saved_model.simple_save(sess,
      "./model",
      inputs={"myInput": x}, # input_name可自定义,编码客户端时对应即可
      outputs={"myOutput": y})

保存好模型后会得到这样格式文件证明你保存没有问题了

variables/
  variables.data-*****-of-*****
  variables.index
saved_model.pb
print_r('点个赞吧');
var_dump('点个赞吧');
NSLog(@"点个赞吧!")
System.out.println("点个赞吧!");
console.log("点个赞吧!");
print("点个赞吧!");
printf("点个赞吧!\n");
cout << "点个赞吧!" << endl;
Console.WriteLine("点个赞吧!");
fmt.Println("点个赞吧!")
Response.Write("点个赞吧");
alert('点个赞吧')

补充知识:将Keras保存的HDF5或TensorFlow保存的PB模型文件转化为Inter Openvino使用的IR(.xml & .bin)文件

本blog依据英特尔官方手册《Model Optimizer Developer Guide》 翻译编写,经博主测试可用

intel NCS & OpenVINO

英特尔官方的NCS开发环境“OpenVINO”使用了名为Intermediate Representation(IR)的网络模型,其中.xml文件保存了网络的拓扑结构,而.bin文件以二进制方式保存了模型的权重w与偏差b。

首先我们需要配置Model Optimizer

如果是安装适用于所有框架的Model Optimizer:

在安装完OpenVINO后,我们找到以下位置:

<INSTALL_DIR>/deployment_tools/model_optimizer/install_prerequisites

运行以下命令:

对于Linux系统:

install_prerequisites.sh

对于Windows系统:

install_prerequisites.bat

如果只安装适用于特定框架的Model Optimizer:

在安装完OpenVINO后,我们找到以下位置:

<INSTALL_DIR>/model_optimizer/install_prerequisites

运行以下命令:

对于Caffe (Linux):

install_prerequisites_caffe.sh

对于Caffe (Windows):

install_prerequisites_caffe.bat

对于TensorFlow (Linux):

install_prerequisites_tf.sh

对于TensorFlow (Windows):

install_prerequisites_tf.bat

对于MXNet (Linux):

install_prerequisites_mxnet.sh

对于MXNet (Windows):

install_prerequisites_mxnet.bat

对于Kaldi (Linux):

install_prerequisites_kaldi.sh

对于Kaldi (Windows):

install_prerequisites_kaldi.bat

对于ONNX (Linux):

install_prerequisites_onnx.sh

对于ONNX (Windows):

install_prerequisites_onnx.bat

如果我们要将TensorFlow保存的PB模型转换为IR……

如果我们要将Keras保存的HDF5模型转换为IR……

博主电脑在英特尔返厂维修中 待更新……

以上这篇使用keras和tensorflow保存为可部署的pb格式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础教程之lambda表达式使用方法
Feb 12 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
Jun 14 Python
python中安装Scrapy模块依赖包汇总
Jul 02 Python
Python切片操作去除字符串首尾的空格
Apr 22 Python
pandas 选取行和列数据的方法详解
Aug 08 Python
django自带调试服务器的使用详解
Aug 29 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
pycharm 激活码及使用方式的详细教程
May 12 Python
关于Theano和Tensorflow多GPU使用问题
Jun 19 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
Nov 28 Python
Keras多线程机制与flask多线程冲突的解决方案
May 28 Python
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 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
keras处理欠拟合和过拟合的实例讲解
May 25 #Python
python如何调用字典的key
May 25 #Python
You might like
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
PHP sprintf()函数用例解析
2011/05/18 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
php准确计算复活节日期的方法
2015/04/18 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
浅谈下拉菜单中的Option对象
2015/05/10 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
javascript中this关键字详解
2016/12/12 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
Python基础知识_浅谈用户交互
2017/05/31 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
Python基于locals返回作用域字典
2020/10/17 Python
塔吉特百货公司官网:Target
2017/04/27 全球购物
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
初中高效课堂实施方案
2014/02/26 职场文书
优秀学生评语大全
2014/04/25 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书