使用keras和tensorflow保存為可部署的pb格式
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 # 模型保存的版本
# 從網絡的輸入輸出創(chuàng)建預測的簽名
model_signature = tf.saved_model.signature_def_utils.predict_signature_def(
inputs={'input': model.input}, outputs={'output': model.output})
# 使用utf-8編碼將 字節(jié)或Unicode 轉換為字節(jié)
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"協(xié)議緩沖區(qū)并保存變量和模型
builder.add_meta_graph_and_variables( # 將當前元圖添加到savedmodel并保存變量
sess=K.get_session(), # 返回一個 session 默認返回tf的sess,否則返回keras的sess,兩者都沒有將創(chuàng)建一個全新的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 # 網絡的輸入輸出策創(chuàng)建預測的簽名
})
builder.save() # 將"savedmodel"協(xié)議緩沖區(qū)寫入磁盤.
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依據(jù)英特爾官方手冊《Model Optimizer Developer Guide》 翻譯編寫,經博主測試可用
intel NCS & OpenVINO
英特爾官方的NCS開發(fā)環(huán)境“OpenVINO”使用了名為Intermediate Representation(IR)的網絡模型,其中.xml文件保存了網絡的拓撲結構,而.bin文件以二進制方式保存了模型的權重w與偏差b。
首先我們需要配置Model Optimizer
如果是安裝適用于所有框架的Model Optimizer:
在安裝完OpenVINO后,我們找到以下位置:
<INSTALL_DIR>/deployment_tools/model_optimizer/install_prerequisites
運行以下命令:
對于Linux系統(tǒng):
install_prerequisites.sh
對于Windows系統(tǒng):
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的Django框架中的數(shù)據(jù)庫配置指南
這篇文章主要介紹了Python的Django框架中的數(shù)據(jù)庫配置指南,文中舉了Python內置的SQLite的示例,需要的朋友可以參考下2015-07-07
python一行代碼就能實現(xiàn)數(shù)據(jù)分析的pandas-profiling庫
這篇文章主要為大家介紹了python一行代碼就能實現(xiàn)數(shù)據(jù)分析的pandas-profiling庫,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01
簡單且有用的Python數(shù)據(jù)分析和機器學習代碼
Python編程是一種通用的編程語言,開源、靈活、功能強大且易于使用,python最重要的特性之一是其用于數(shù)據(jù)處理和分析任務的豐富實用程序和庫集,這篇文章主要給大家介紹了一些簡單且有用的Python數(shù)據(jù)分析和機器學習代碼,需要的朋友可以參考下2021-07-07
Python Dict 到 Dataclass實現(xiàn)高效數(shù)據(jù)訪問與管理的兩種方式(推薦)
本文介紹了Python中的字典和DataClass兩種數(shù)據(jù)結構,并探討了如何將字典轉換為DataClass,字典適用于鍵值對存儲,感興趣的朋友一起看看吧2024-12-12

