使用mmdnn將MXNET轉成Tensorflow模型
參考:https://www.twblogs.net/a/5ca4cadbbd9eee5b1a0713af
寫這篇筆記的初衷是因為需要將Insightface的MXNET模型轉成Tensorflow,而mmdnn上提供的mmconvert命令卻沒有成功(估計是哪裡用錯了),故而找其他的文章來實現相同的功能。
準備mmdnn環境
因為需要將mxnet轉成tensorflow,所以,需要在python的虛擬環境中安裝這兩個框架,另外,建議使用最新的mmdnn,修復了一下bug。
pip install -U git+https://github.com/Microsoft/MMdnn.git@master
pip install mmdnn
pip install tensorflow==1.13.1
將mxnet模型轉成IR模型
下面的引數中–inputShape很重要,insightface的輸入影像的shape就是[3,112,112]
python -m mmdnn.conversion._script.convertToIR -f mxnet -n model-symbol.json -w model-0000.params -d r100 --inputShape 3,112,112
下面就是生成的IR模型
由IR模型生成code
python -m mmdnn.conversion._script.IRToCode -f tensorflow --IRModelPath r100.pb --IRWeightPath r100.npy --dstModelPath tf_r100.py
使用上面的命令,可以生成一個tf_r100.py
,其中,KitModel函式載入npy權重引數重新生成原網路框架。
生成PB檔案
基於r100.npy和tf_r100.py文件,固化引數,生成PB檔案。
import argparse
import tensorflow as tf
import tf_r100 as tf_fun # modify by yourself
def Network(ir_model_file):
model = tf_fun.KitModel(ir_model_file)
return model
def freeze_graph(ir_model_file, pb_file):
output_node_names = "output"
_,fc1 = Network(ir_model_file)
fc1 = tf.identity(fc1, name="output")
graph = tf.get_default_graph()
input_graph_def = graph.as_graph_def()
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
output_graph_def = tf.graph_util.convert_variables_to_constants(
sess=sess,
input_graph_def=input_graph_def,
output_node_names=output_node_names.split(","))
with tf.gfile.GFile(pb_file, "wb") as f:
f.write(output_graph_def.SerializeToString())
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='freeze model')
parser.add_argument('ir_model_file', help='path to ir model, which is *.npy')
parser.add_argument('pb_file', help='path to pb file')
args = parser.parse_args()
freeze_graph(args.ir_model_file, args.pb_file)
print("finish!")
顯示模型的網路
import argparse
import tensorflow as tf
def display_network(pb_file):
# after load model from file
with tf.gfile.GFile(pb_file, "rb") as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
tf.import_graph_def(graph_def, input_map=None, return_elements=None, name="")
# print out operations information
ops = tf.get_default_graph().get_operations()
for op in ops:
print(op.name) # print operation name
print('> ', op.values()) # print a list of tensors it produces
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='display network')
parser.add_argument('pb_file', help='path to pb file')
args = parser.parse_args()
display_network(args.pb_file)
相關文章
- Caffe轉mxnet模型——mmdnn模型DNN
- 如何將keras訓練的模型轉換成tensorflow lite模型Keras模型
- Caffe轉mxnet模型——mxnet工具模型
- Keras 轉換成 Tensorflow 模型格式並使用Keras模型
- Mxnet模型檔案轉換為Pb模型檔案模型
- MxNet預訓練模型到Pytorch模型的轉換模型PyTorch
- Mxnet模型轉化為ncnn模型,並驗證轉化正確性模型CNN
- mxnet資料格式轉換為tensorflow,pytorch資料PyTorch
- 如何將keras訓練好的模型轉換成tensorflow的.pb的檔案並在TensorFlow serving環境呼叫Keras模型
- 將UIView轉成UIImage,將UIImage轉成PNG/JPGUIView
- 【6】TensorFlow光速入門-python模型轉換為tfjs模型並使用Python模型JS
- MXNet的資料格式轉化為tensorflow訓練用的資料格式
- .NET使用DinkToPdf將HTML轉成PDFHTML
- TensorFlow推出模型優化工具包,可將模型壓縮75%模型優化
- 使用Mxnet基於skip-gram模型實現word2vect模型
- TensorFlow推出模型最佳化工具包,可將模型壓縮75%模型
- 將字串轉換成Bitmap型別 或者 將Bitmap轉換成字串字串型別
- 從零基礎入門Tensorflow2.0 ----九、44.3 keras模型轉換成savedmodelKeras模型
- TensorFlow2.0教程-使用keras訓練模型Keras模型
- TensorFlow和Caffe、MXNet、Keras等深度學習框架的對比Keras深度學習框架
- 將 man page 轉成 HTML 格式(轉)HTML
- keras轉tensorflow lite【方法二】直接轉:簡單模型例項Keras模型
- Oracle使用RMAN將普通資料檔案轉成ASMOracleASM
- window下使用sratoolkit將sra檔案轉換成fastqAST
- 編譯 TensorFlow 模型編譯模型
- 使用LSTM模型做股票預測【基於Tensorflow】模型
- 蘋果將使用本地大模型?蘋果大模型
- 深度學習框架跑分測驗(TensorFlow/Caffe/MXNet/Keras/PyTorch)深度學習框架KerasPyTorch
- 伯克利AI分散式框架Ray,相容TensorFlow、PyTorch與MXNetAI分散式框架PyTorch
- java將map轉成bean工具JavaBean
- 將整數轉換成字串字串
- 教程帖:使用TensorFlow服務和Flask部署Keras模型!FlaskKeras模型
- 如何使用TensorFlow和VAE模型生成手寫數字模型
- 【TensorFlow】 TensorFlow-Slim影像分類模型庫模型
- 使用 Haskell 將十進位制數字轉成羅馬數字Haskell
- ubuntu下使用sratoolkit將sra檔案轉換成fastq檔案UbuntuAST
- 如何將圖片轉換成影片?
- python中將xmind轉成excelPythonExcel