【寫在前面】
在深度學習的應用中,我們往往需要將Python中訓練好的模型文件部署到實際的應用測試中,所以自然而然我們就需要進行模型之間的相互轉換,例如本人在Python環(huán)境下訓練好的hdf5文件,現(xiàn)在要加載到C++的Tensorflow部署環(huán)境完成實際的測試工作。
【轉換步驟】
1、獲取keras的hdf5模型
2、選擇樣本完成keras的hdf5模型測試,記錄測試結果
3、通過代碼實現(xiàn)hdf5模型到tensorflow pb模型的轉換
4、再次輸入樣本,完成pb模型測試,并將測試結果和hdf5模型的測試結果進行比較,評價模型轉換是否成功。
【轉換實戰(zhàn)】
1.hdf5模型的生成和測試大家根據(jù)自己的訓練過程和結果完成;
2.hdf5模型的轉化;
from keras
.models
import load_model
import tensorflow
as tf
import os
import os
.path
as osp
from keras
import backend
as K
input_path
= 'E:\\projects\\PycharmProjects\\densenet\\keras\\model\\model1102\\checkpoint-128e-val_acc_0.74.hdf5'from keras
.models
import load_model
import tensorflow
as tf
from keras
import backend
as K
from tensorflow
.python
.framework
import graph_io
def freeze_session(session
, keep_var_names
=None, output_names
=None, clear_devices
=True):from tensorflow
.python
.framework
.graph_util
import convert_variables_to_constantsgraph
= session
.graph
with graph
.as_default
():freeze_var_names
= list(set(v
.op
.name
for v
in tf
.global_variables
()).difference
(keep_var_names
or []))output_names
= output_names
or []output_names
+= [v
.op
.name
for v
in tf
.global_variables
()]input_graph_def
= graph
.as_graph_def
()if clear_devices
:for node
in input_graph_def
.node
:node
.device
= ""frozen_graph
= convert_variables_to_constants
(session
, input_graph_def
,output_names
, freeze_var_names
)return frozen_graph
"""----------------------------------配置路徑-----------------------------------"""
h5_model_path
= 'E:\\projects\\PycharmProjects\\densenet\\keras\\model\\model1102\\checkpoint-128e-val_acc_0.74.hdf5'
output_path
= 'E:\\projects\\PycharmProjects\\densenet\\keras\\model\\/'
pb_model_name
= 'pb_model.pb' """----------------------------------導入keras模型------------------------------"""
K
.set_learning_phase
(0)
net_model
= load_model
(h5_model_path
)"""----------------------------------保存為.pb格式------------------------------"""
sess
= K
.get_session
()
frozen_graph
= freeze_session
(K
.get_session
(), output_names
=[net_model
.output
.op
.name
])
graph_io
.write_graph
(frozen_graph
, output_path
, pb_model_name
, as_text
=False)
【轉換測試】
skimage庫安裝:
conda install scikit-image
總結
以上是生活随笔為你收集整理的DeepLearning:模型之间的相互转化(keras-hdf5→Tensorflow-pb文件)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。