tensorflow轉(zhuǎn)onnx的實現(xiàn)方法
安裝tf2onnx以及onnxruntime
pip install onnxruntime pip install tf2onnx
tf 轉(zhuǎn)為onnx步驟為如下:
- 將tf動態(tài)圖凍結(jié),生成凍結(jié)后的pb文件
- 使用tf2onnx 將pb文件轉(zhuǎn)為onnx文件
將tf動態(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文件時需要在終端執(zhí)行,需要指出的是大部分tf模型的輸入layout都是NHWC,而ONNX模型的輸入layout為NCHW,因此建議在轉(zhuǎn)換的時候加上--inputs-as-nchw這個選項,其他選項可以參考文檔,非常詳細(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 輸入層名字,有多個輸入時,中間用逗號隔開
- outputs 輸出層名字,有多個輸出時,中間用逗號隔開
- –inputs-as-nchw 將輸入作為nchw格式,注意加上輸入層名字
- –opset onnx 版本號
通過程序直接轉(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的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)tensorflow轉(zhuǎn)onnx內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 3.0 模擬用戶登錄功能并實現(xiàn)三次錯誤鎖定
Python的3.0版本,常被稱為Python 3000,或簡稱Py3k。這篇文章主要介紹了python 3.0 模擬用戶登錄功能并實現(xiàn)三次錯誤鎖定,需要的朋友可以參考下2017-11-11Python+Pygame實戰(zhàn)之24點游戲的實現(xiàn)
這篇文章主要為大家詳細(xì)介紹了如何利用Python和Pygame實現(xiàn)24點小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04Python使用描述符實現(xiàn)屬性類型檢查的案例解析
這篇文章主要介紹了Python使用描述符實現(xiàn)屬性類型檢查,實例屬性就是在一個類中將另一個類的實例作為該類的一個數(shù)屬性,本文通過代碼演示給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05關(guān)于Numpy之repeat、tile的用法總結(jié)
這篇文章主要介紹了關(guān)于Numpy之repeat、tile的用法總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06一文詳解NumPy簡單算術(shù)及其他運(yùn)算的實現(xiàn)
你可以直接在 NumPy 數(shù)組之間使用算術(shù)運(yùn)算符 + - * /,但本節(jié)討論了一個擴(kuò)展,其中我們有函數(shù)可以接受任何類似數(shù)組的對象,如列表、元組等,并根據(jù)條件執(zhí)行算術(shù)運(yùn)算,文中通過代碼示例給大家講解的非常詳細(xì),需要的朋友可以參考下2024-06-063個Python?SQLAlchemy數(shù)據(jù)庫操作功能詳解
Python?SQLAlchemy?是一個強(qiáng)大且多功能的?Python?SQL?工具包和對象關(guān)系映射?(ORM)?系統(tǒng),提供了一整套眾所周知的企業(yè)級持久性模式,本文為大家整理了它必須了解的3個數(shù)據(jù)庫操作功能,希望對大家有所幫助2023-09-09python 用pandas實現(xiàn)數(shù)據(jù)透視表功能
這篇文章主要介紹了python 用pandas實現(xiàn)數(shù)據(jù)透視表功能的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12