近期由於業務需要,需要將訓練好的模型轉為onnx格式,為此頗費了一番功夫,在此總結一下吧。。
1、onnx是一種神經網路模型儲存的中間格式,支援多種格式的模型轉為onnx,也支援使用onnx匯入多種格式的模型,具體見目前其實onnx對於模型的支援還不是太好,主要表現在一些op還不能夠支援;
2、在pytorch下要將模型儲存成onnx格式需要使用torch.onnx.export()函式,使用該函式的時候需要傳入下面引數:
--model:待儲存的model,也就是你在程式中已經訓練好或者初始化好的模型
--input_shape:指定輸入資料的大小,也就是輸入資料的形狀,是乙個包含輸入形狀元組的列表;
--name:模型的名稱,即模型的儲存路徑;
--verbrose:true或者false,用來指定輸出模型時是否將模型的結構列印出來;
--input_names:輸入資料節點的名稱,資料型別為包含字串的列表;一般將這個名稱設為['data'];
--output_names:輸出資料節點的名稱,型別與輸入資料的節點名稱相同;
在成功匯出模型後,可以使用onnx再對模型進行檢查:
importonnx
#load the onnx model
model = onnx.load("
alexnet.onnx")
#check that the ir is well formed
onnx.checker.check_model(model)
#print a human readable representation of the graph
onnx.helper.printable_graph(model.graph)
目前pytorch還不支援匯入onnx格式的模型。
--sym:.json檔案,也就是儲存了網路結構的檔案
--params:引數檔案
--input_shape:輸入資料的形狀,是乙個包含形狀元組的列表
--input_type:輸入資料的型別;
--模型的儲存路徑
4、從mxnet匯入onnx格式模型:需要使用mxnet.contrib.onnx.onnx2mx.import_model.
import_model
(model_file),這裡返回的是sym, arg_arams,aux_params,也就是網路結構symbol物件,儲存引數的字典, 再將其轉為mxnet的module物件(使用mxnet.module.module()),即可將模型恢復到mxnet框架下可執行的模型。
最後,好久沒有記錄日常學習積累的東西了,趁著失眠開個好頭吧,晚安。。。
onnx模型轉tensorflow模型
onnx是開源神經網路交換平台,有了它基本上不用糾結用什麼深度學習框架的問題了。我現在記錄一下怎麼將onnx模型轉換成tensorflow模型。1 安裝tensorflow和onnx 我是通過anaconda安裝的。詳情 這個部落格記載了安裝anaconda和onnx的詳情,安裝好anaconda後...
神經網路模型
神經網路往往不需要人為的構造資料特徵,因為乙個神經元就可以看做是原始資料的不同特徵的組合,在神經元數目足夠大,層數足夠多的情況下,是很容易準確的進行分類的.神經網路是由具有適應性的簡單單元組成的廣泛並行互連的網路,它的組織能夠模擬生物神經系統對真實世界物體所做出的互動反應 神經元模型 m p神經元模...
pt模型訓練,轉onnx
pytorch訓練yolov5s.pt,之後轉onnx。以檢測條形碼為例,1分類問題,訓練yolov5s.pt。2 data資料夾裡,images放入樣本,labels放入對應的txt標籤 labelimg製作,注意選擇yolo模式 新建yaml檔案 上圖中的barcode.yaml 用於指定路徑和...