tensorflow轉(zhuǎn)onnx的實(shí)現(xiàn)方法
安裝tf2onnx以及onnxruntime
pip install onnxruntime pip install tf2onnx
tf 轉(zhuǎn)為onnx步驟為如下:
- 將tf動(dòng)態(tài)圖凍結(jié),生成凍結(jié)后的pb文件
- 使用tf2onnx 將pb文件轉(zhuǎn)為onnx文件
將tf動(dòng)態(tài)圖凍結(jié)使用如下代碼:
def export_frozen_graph(model, model_dir, name_pb) :
?? ?f = tf.function(lambda x: model(inputs=x))
?? ?f = f.get_concrete_function(x=(tf.TensorSpec(model.inputs[0].shape, model.inputs[0].dtype)))
?? ?frozen_func = convert_variables_to_constants_v2(f)
?? ?frozen_func.graph.as_graph_def()
?? ?print("-" * 50)
?? ?print("Frozen model inputs: ")
?? ?print(frozen_func.inputs)
?? ?print("Frozen model outputs: ")
?? ?print(frozen_func.outputs)
?? ?tf.io.write_graph(graph_or_graph_def=frozen_func.graph,
?? ??? ??? ??? ??? ? ?logdir=model_dir,
?? ??? ??? ??? ??? ? ?name=name_pb,
?? ??? ??? ??? ??? ? ?as_text=False)使用tf2onnx 將pb文件轉(zhuǎn)為onnx文件時(shí)需要在終端執(zhí)行,需要指出的是大部分tf模型的輸入layout都是NHWC,而ONNX模型的輸入layout為NCHW,因此建議在轉(zhuǎn)換的時(shí)候加上--inputs-as-nchw這個(gè)選項(xiàng),其他選項(xiàng)可以參考文檔,非常詳細(xì),具體運(yùn)行命令如下:
python -m tf2onnx.convert --input yolo.pb --output model.onnx --outputs Identity:0,Identity_1:0,Identity_2:0 --inputs x:0 --inputs-as-nchw x:0 --opset 10
參數(shù)說(shuō)明:
- input 輸入的pb模型
- output 輸出的onnx文件名
- inputs 輸入層名字,有多個(gè)輸入時(shí),中間用逗號(hào)隔開(kāi)
- outputs 輸出層名字,有多個(gè)輸出時(shí),中間用逗號(hào)隔開(kāi)
- –inputs-as-nchw 將輸入作為nchw格式,注意加上輸入層名字
- –opset onnx 版本號(hào)
通過(guò)程序直接轉(zhuǎn):
tf2onnx.convert.from_keras(model, inputs_as_nchw=[model.inputs[0].name], output_path=model_filepath + 'yolo.onnx') --opset 10
到此這篇關(guān)于tensorflow轉(zhuǎn)onnx的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)tensorflow轉(zhuǎn)onnx內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python關(guān)于實(shí)參隨形參改變而改變的問(wèn)題
Python接口測(cè)試結(jié)果集實(shí)現(xiàn)封裝比較
Tensorflow 1.0之后模型文件、權(quán)重?cái)?shù)值的讀取方式
python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5 MDI(多文檔窗口)QMidArea詳細(xì)使用方法與實(shí)例
Python3開(kāi)發(fā)實(shí)例之非關(guān)系型圖數(shù)據(jù)庫(kù)Neo4j安裝方法及Python3連接操作Neo4j方法實(shí)例
Python實(shí)現(xiàn)多條件篩選Excel數(shù)據(jù)并批量繪制直方圖

