使用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 相关文章推荐
使用Nginx+uWsgi实现Python的Django框架站点动静分离
Mar 21 Python
python实现稀疏矩阵示例代码
Jun 09 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
Python使用修饰器执行函数的参数检查功能示例
Sep 26 Python
Python使用正则表达式获取网页中所需要的信息
Jan 29 Python
python开发游戏的前期准备
May 05 Python
对python3中的RE(正则表达式)-详细总结
Jul 23 Python
在tensorflow中实现屏蔽输出的log信息
Feb 04 Python
pandas中ix的使用详细讲解
Mar 09 Python
python开发前景如何
Jun 11 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 Python
Python如何用re模块实现简易tokenizer
May 02 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 calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
php获取开始与结束日期之间所有日期的方法
2016/11/29 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
如何在PHP中使用数组
2020/06/09 PHP
window.name代替cookie的实现代码
2010/11/28 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
javascript实现控制div颜色
2015/07/07 Javascript
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
jQuery中extend函数简单用法示例
2017/10/11 jQuery
vue实现前进刷新后退不刷新效果
2018/01/26 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
Python3.7实现中控考勤机自动连接
2018/08/28 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
优秀大学生的自我评价
2014/01/16 职场文书
酒店开业庆典主持词
2014/03/21 职场文书
合作经营协议书范本
2014/04/17 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
小学安全工作总结2015
2015/05/18 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
光荣之路观后感
2015/06/12 职场文书
关于幸福的感言
2015/08/03 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript