使用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连接MySQL并使用fetchall()方法过滤特殊字符
Mar 13 Python
Python数据分析之真实IP请求Pandas详解
Nov 18 Python
python利用lxml读写xml格式的文件
Aug 10 Python
python+pyqt5编写md5生成器
Mar 18 Python
浅谈Pandas Series 和 Numpy array中的相同点
Jun 28 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
Python log模块logging记录打印用法解析
Jan 20 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
TensorFlow 读取CSV数据的实例
Feb 05 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
Python Django中间件使用原理及流程分析
Jun 13 Python
Python可视化学习之seaborn调色盘
Feb 24 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
php cookie的操作实现代码(登录)
2010/12/29 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
php限制ip地址范围的方法
2015/03/31 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
Javascript函数的参数
2015/07/16 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
python远程连接MySQL数据库
2019/04/19 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
Jupyter Notebook添加代码自动补全功能的实现
2021/01/07 Python
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
英国外籍人士的在线超市:British Corner Shop
2019/06/03 全球购物
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
区域总监的岗位职责
2013/11/21 职场文书
先进事迹报告会感言
2014/01/24 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫