使用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 相关文章推荐
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 Python
python装饰器常见使用方法分析
Jun 26 Python
Python3操作Excel文件(读写)的简单实例
Sep 02 Python
python 3.7.4 安装 opencv的教程
Oct 10 Python
pytorch载入预训练模型后,实现训练指定层
Jan 06 Python
python 伯努利分布详解
Feb 25 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
Mar 09 Python
PyCharm2019 安装和配置教程详解附激活码
Jul 31 Python
Python实现石头剪刀布游戏
Jan 20 Python
python百行代码实现汉服圈图片爬取
Nov 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
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
淘宝搜索框效果实现分析
2011/03/05 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
jQuery获取table行数并输出单元格内容的实现方法
2016/06/30 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
python计算时间差的方法
2015/05/20 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
2018/05/15 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
python反编译学习之字节码详解
2019/05/19 Python
python如何通过twisted搭建socket服务
2020/02/03 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
Python while true实现爬虫定时任务
2020/06/08 Python
Madewell美德威尔美国官网:美国休闲服饰品牌
2016/11/25 全球购物
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
销售辞职报告范文
2014/01/12 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
校园活动策划方案
2014/06/13 职场文书
小学推普周活动总结
2015/05/07 职场文书
工作简报格式范文
2015/07/21 职场文书
婚礼答谢词范文
2015/09/29 职场文书
Python趣味挑战之实现简易版音乐播放器
2021/05/28 Python
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android
mysql 子查询的使用
2022/04/28 MySQL