MNNの設定

1、githubのリンク:https://github.com/alibaba/MNN/tree/master/tools/converter

2、チュートリアル

(1)チュートリアル:https://www.bookstack.cn/read/MNN-zh/tools-converter-README_CN.md

(2)参考ブログ:https://blog.csdn.net/qq_37643960/article/details/97028743

READMEセクション(3)githubのプロジェクトにも説明しています。

インストールプロセス:

コンパイルおよびMNNの動的なライブラリと変換ツールをインストールするには、次のようにコマンドは変換します。

CD / MNN /
mkdirビルド
CDのビルド
cmakeの.. -DMNN_BUILD_CONVERTER = 真の
メイク -j4

ビルドフォルダの後benchmark.outとMNNConvert実行可能ファイルを表示します。

テストbenchmark.out:

。/基準。アウト ../benchmark/models/ 10  0

 

第10の伝播を10回、最終結果が平均を表し、0は、CPUを示し、(推論コンピューティングデバイス、0(浮動小数点CPUの実効値)、1(金属)、3(浮動小数点のOpenCL)、6 (OpenGLの)、7(バルカン))

テストMNNConvert:

./MNNConvert -h

 

テスト:

最初のステップ:変換pytorchモデルonnxモデル

輸入トーチ
 輸入torchvision

dummy_input = torch.randn(10、3、224、224、デバイス= ' CUDA ' 
モデル = torchvision.models.alexnet(pretrained = 真).cuda()

入力と出力の名前を提供することは、値の表示名セットモデルのグラフ内。これらのセマンティクスを変更しない設定グラフのを。それだけで読みやすくするためです。ネットワークへの入力は(すなわち、入力のフラットリストで構成されてあなたが前方()メソッドに渡す値)に続いてパラメータのフラットなリスト。あなたは、部分的につまりが提供する、名前を指定することができる
位にこちらのモデルへの入力の数よりも短いリストを、私たちはします
。#名前だけのサブセットは、最初から始まることを設定します。
input_names = [ " actual_input_1 " ] + [ " learned_%のD "%iはのために範囲(16 )]
output_names = [ " OUTPUT1 " ]

torch.onnx.export(モデル、dummy_input、" alexnet.onnx "、冗長=真、input_names = input_names、output_names = output_names)

 

ステップ2:モデルMNNへonnxモデル

./MNNConvert -f ONNX --modelFile alexnet.onnx --MNNModel alexnet.mnn --bizCode MNN

 

第三段階:伝搬時間benchmark.outにテストを使用する前に

。/基準。アウト ./models/ 10  0

 PS:で/MNN/source/shape/ShapeSqueeze.cpp 80L中:NanAssert()関数の新しいバージョンでは、それはコメントアウトされていることをコメントし;(または他のリシェイプエラーが報告されます)

おすすめ

転載: www.cnblogs.com/zf-blog/p/11890537.html