MxNetモデル変換Onnx

MxNetモデルのエクスポートONNXモデル
を開きニューラルネットワーク取引所(ONNX)はAIモデルのためのオープンソースのデータモデルフォーマットを提供します。これは、拡張可能モデル算出マップ、ならびにオペレータを内蔵し、標準データ型定義を定義します。それは、様々なAIモデルとの間のメディア変換として使用することができ、例えば、市場我々はONNXによって、最初MxNet OnnxにOnnxカフェに変換され、変換されることができ、カフェモデル変換ツールMxNetモデルに準備ができていませんさらにより驚くべき精度の損失が、元のモデルとの間の変換処理です。

このチュートリアルでは、我々はどのようにMXNetモデルONNX形式を保存する方法を示します。カバレッジおよび特性MXNet-ONNX事業者は定期的に更新します。最新情報については、訪問ONNXオペレーター報道。このチュートリアルでは、モデルの事前訓練を受けた輸出用にONNXモデルのエクスポートツールにMXNetを使用する方法を学習します。

前提条件
このチュートリアルを実行するには、次のPythonモジュールをインストールする必要があります。

MXNet> = 1.3.0。PIPはMXNET == 1.4.0 --userをインストールします。MXNETが利用可能にインストールするには、次のコマンドを使用してテストした、ことを注意

onnx。利用可能onnxテストをインストールするには、次のコマンドを使用して、次の点に注意してくださいPIPインストールonnx == 1.2.1 --user

**注:** MXNet-ONNXのインポート、エクスポートツールフォローONNX第7版のオペレータセット、オペレータセットはONNX v1.2.1デベロッパーが含まれています。

MX mxnet ASインポート
インポートnumpyのAS NP
mxnet.contribインポートからASはonnx_mxnet onnx
インポートはログイン
logging.basicConfig(レベル= logging.info)を

MXNetモデル動物園からモデルをダウンロードする
MXNetモデル動物園から私たち。ResNet-18 ImageNet事前に訓練されたモデルをダウンロード。また、ダウンロードsynsetマッチングタグに提出します

ResNetダウンロード#モデル事前に訓練- JSONとコード次のparamsを実行することもできます。
パス= 'HTTP://data.mxnet.io/models/imagenet/'
[mx.test_utils.download(パス+「ResNet / -18レイヤー/ ResNetです-18-0000.params')、
mx.test_utils.download(パス+ 'ResNet / -18は、レイヤー/ ResNet-18、IS-symbol.json')、
mx.test_utils.download(パス+ 'synset.txt')〕

今、我々私は、ディスク上のResNet-18、paramsパラメータとsynsetファイルをダウンロードしています。

MXNet ONNX輸出APIをする
私たちは'EXPORT_MODEL' APIのMXNetを説明してみましょう。

ヘルプ(onnx_mxnet.export_model)

モジュールmxnet.contrib.onnx.mx2onnx.export_modelの関数EXPORT_MODELのヘルプ:

EXPORT_MODEL(SYM、パラメータ、input_shape、INPUT_TYPE = <タイプ'numpy.float32'>、onnx_file_path = u'model.onnx」、冗長= Falseが)
ONNXモデルに、パラメータとして渡され、MXNetモデルファイルをエクスポートします。
シンボル、パラメータオブジェクトならびにJSONの両方を受け付け、入力としてファイルパスをparamsは。
オペレータのサポートとカバレッジ- https://cwiki.apache.org/confluence/display/MXNET/MXNet-ONNX+Integration

パラメータ
----------
SYM:STRまたはシンボルオブジェクトの
JSONファイルまたはシンボルへのパスオブジェクト
のparams:STRまたはシンボルオブジェクト
のparamsファイルまたはのparams辞書へのパス。(arg_paramsとaux_params両方を含む)
input_shape:タプルのリスト
、例えばモデルの入力形状[(1,3,224,224)]
INPUT_TYPE:データ型
データタイプEG np.float32 INPUT
onnx_file_path:STR
保存するファイルがonnx生成されたパス
の冗長:ブール
もしモデルの真の意志への変換印刷ログ

戻り値
-------
onnx_file_path:STR
Onnxパスファイル

APIによって「EXPORT_MODEL」 MXNetモデルを受け入れるための2つの方法のいずれか。

MXNet SYM、のparamsオブジェクトは、次のとおりです。
私たちは便利であるモデルを、訓練されている場合。研修の最後に、私たちは単に「EXPORT_MODEL」関数を呼び出し、SYMを提供してONNX形式として保存への入力およびその他のプロパティとしてモデルのオブジェクトをparamsは。
MXNetは、JSONファイルとのparamsをエクスポート:
我々はモデル事前に訓練を持っている、とあなたはONNX形式に変換したい場合、これは非常に便利です。
我々はすでに、ファイルモデルは、事前に訓練されたダウンロードされているので、我々はシンボルを通過する「EXPORT_MODEL」APIのパスを使用して、ファイルをparamsはします。

ONNXAのインポート、エクスポート、PIツールにMXNetを使用する方法
我々は、ファイルモデル事前訓練を受けた(SYM、のparams)をダウンロードし、入力変数を定義するために使用されます。

#ダウンロードしたファイルとパラメータ入力シンボル
SYM =「./resnet-18-symbol.json」
のparams =」./resnet-18-0000.params'

#標準Imagenet入力- 3つのチャネル、224 * 224
input_shape =(1,3,224,224)

#出力ファイルへのパス
=「./mxnet_exported_resnet50.onnx」onnx_file

私たちは希望『EXPORT_MODEL』 APIは、入力パラメータを定義しています。今、私たちはONNX形式にMXNetモデルへの準備ができています

#エクスポートされたモデルのAPIを呼び出します。それはonnxモデル変換後のリターンのパスです
converted_model_path = onnx_mxnet.export_model(SYM、paramsが、 [input_shape]、np.float32、onnx_file)

APIが返すのこのパスモデルの変換は、あなたが他にモデルの後半で、このパスを使用することができますフレームワーク。

ONNXモデルの検証は、
今、私たちは、変換後に有効ONNXモデルをチェックするONNXチェックツールを使用することができます。内容が有効いるProtobufが含まれているかどうかをチェックすることにより、モデルを検証するためのツール:

onnxインポートチェッカーから
輸入onnx

#ロードモデルonnx
model_proto = onnx.load_model(converted_model_path)

変換されたONNXはチェックいるProtobuf#が有効であれば
checker.check_graph(model_proto.graph)

変換後のフォーマットがいるProtobuf ONNXプロト仕様を満たしていない場合は、成功して、本実施の形態では、エラーチェックをスローします。

この方法は、元のBUFの輸出モデルの妥当性を検証します。さて、このモデルは推論の別のフレームにインポートすることができます!

おすすめ

転載: www.cnblogs.com/cloudrivers/p/12129606.html