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格式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
更新日志
- 群星2013-青春缤纷辑压箱宝大公开3CD2[新加坡限量版][WAV整轨]
- 林育群.2013-BalladShow(日本版)【环球】【WAV+CUE】
- 陈加洛.1992-痛到感觉不到【宝丽金】【WAV+CUE】
- 群星.2023-宿命之敌电视剧原声带【韶愔音乐】【FLAC分轨】
- 東京事変-大発見[FLAC+CUE]
- 椎名林檎-三文ゴシップ[FLAC+CUE]
- 2024年08月04日
- 裘德《裘德「最后的水族馆」演唱会LIVE》[320K/MP3][228.89MB]
- 裘德《裘德「最后的水族馆」演唱会LIVE》[24bit 48kHz][FLAC/分轨][2.08G]
- 基因三重奏《如果你什么都不说 音乐会现场录音》[320K/MP3][145.37MB]
- 孟庭苇.1996-月亮说话(2020环球24KGOLD限量版)【上华】【WAV+CUE】
- 群星.1997-新艺宝优质音响系列·国语精选监听版【新艺宝】【WAV+CUE】
- 阿桑.2005-寂寞在唱歌(星外星引进版)【华研国际】【WAV+CUE】
- 基因三重奏《如果你什么都不说 音乐会现场录音》[FLAC/分轨][287.43MB]
- 蔡题谦《我爱你,却依然要看你走》[320K/MP3][88.65MB]