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ù)說明:
- input 輸入的pb模型
- output 輸出的onnx文件名
- inputs 輸入層名字,有多個(gè)輸入時(shí),中間用逗號(hào)隔開
- outputs 輸出層名字,有多個(gè)輸出時(shí),中間用逗號(hào)隔開
- –inputs-as-nchw 將輸入作為nchw格式,注意加上輸入層名字
- –opset onnx 版本號(hào)
通過程序直接轉(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 3.0 模擬用戶登錄功能并實(shí)現(xiàn)三次錯(cuò)誤鎖定
Python的3.0版本,常被稱為Python 3000,或簡(jiǎn)稱Py3k。這篇文章主要介紹了python 3.0 模擬用戶登錄功能并實(shí)現(xiàn)三次錯(cuò)誤鎖定,需要的朋友可以參考下2017-11-11
Python+Pygame實(shí)戰(zhàn)之24點(diǎn)游戲的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了如何利用Python和Pygame實(shí)現(xiàn)24點(diǎn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Python使用描述符實(shí)現(xiàn)屬性類型檢查的案例解析
這篇文章主要介紹了Python使用描述符實(shí)現(xiàn)屬性類型檢查,實(shí)例屬性就是在一個(gè)類中將另一個(gè)類的實(shí)例作為該類的一個(gè)數(shù)屬性,本文通過代碼演示給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
關(guān)于Numpy之repeat、tile的用法總結(jié)
這篇文章主要介紹了關(guān)于Numpy之repeat、tile的用法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
一文詳解NumPy簡(jiǎn)單算術(shù)及其他運(yùn)算的實(shí)現(xiàn)
你可以直接在 NumPy 數(shù)組之間使用算術(shù)運(yùn)算符 + - * /,但本節(jié)討論了一個(gè)擴(kuò)展,其中我們有函數(shù)可以接受任何類似數(shù)組的對(duì)象,如列表、元組等,并根據(jù)條件執(zhí)行算術(shù)運(yùn)算,文中通過代碼示例給大家講解的非常詳細(xì),需要的朋友可以參考下2024-06-06
基于Python實(shí)現(xiàn)自動(dòng)化文檔整理工具
一個(gè)人可能會(huì)在計(jì)算機(jī)上存儲(chǔ)大量的照片、視頻和文檔文件,這些文件可能散落在不同的文件夾中,難以管理和查找。所以本文就來用Python制作一個(gè)自動(dòng)化文檔整理工具吧2023-04-04
3個(gè)Python?SQLAlchemy數(shù)據(jù)庫(kù)操作功能詳解
Python?SQLAlchemy?是一個(gè)強(qiáng)大且多功能的?Python?SQL?工具包和對(duì)象關(guān)系映射?(ORM)?系統(tǒng),提供了一整套眾所周知的企業(yè)級(jí)持久性模式,本文為大家整理了它必須了解的3個(gè)數(shù)據(jù)庫(kù)操作功能,希望對(duì)大家有所幫助2023-09-09
python 用pandas實(shí)現(xiàn)數(shù)據(jù)透視表功能
這篇文章主要介紹了python 用pandas實(shí)現(xiàn)數(shù)據(jù)透視表功能的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12

