MXNet (.json,.params)
予備知識
-
- Wolfram言語で使用される,MXNetディープラーニングフレームワークの根底にある形式.
- MXNetとして保存されたネットワークは,ネットワークトポロジーを指定する.jsonファイルと,ネットワークで使用される数値配列を指定する.paramsファイルの2つのファイルとして格納される.
ImportとExport
- Import["file.json","MXNet"]はファイルとして保存されたMXNetネットワークをインポートし,可能なら対応する.paramsファイルから重みをロードする.
- "file.json"に対応するパラメータファイルはパターン"file*.params"に合致し,同じフォルダに置かれているとされる.
- Import["file.params","MXNet"]はネットワークパラメータを直接インポートするのにも使用できる.
- Import["file.json",{"MXNet",elem}]とImport["file.params",{"MXNet",elem}]は対応するファイルから指定の要素 elem をインポートする.
- デフォルトではImport["file.json"]は"MXNet"ではなく"JSON"形式としてインポートされる.
- 一般的な情報は,以下の関数ページを参照のこと.
-
Import, Export ファイルからインポートする,あるいはファイルへエキスポートする CloudImport, CloudExport クラウドオブジェクトからインポートする,あるいはクラウドオブジェクトへエキスポートする ImportString, ExportString 文字列からインポートする,あるいは文字列へエキスポートする ImportByteArray, ExportByteArray バイト配列からインポートする,あるいはバイト配列へエキスポートする
Import要素
-
"Elements" ファイル中の有効な要素とオプションのリスト "Summary" ファイルの概要 "Rules" 使用可能なすべての要素の規則のリスト - .jsonファイルのインポートで使用できるネットワークImport要素:
-
"InputNames" ネットワーク入力の名前 "NetExternalObject" ネットワークをNetExternalObjectとしてインポートする "NodeDataset" MXNetシンボルノードのデータ集合 "NodeGraph" MXNetシンボルのノードのグラフ "NodeGraphPlot" MXNetシンボルのノードのプロット - Import["file.json","MXNet"]はデフォルトで"NetExternalObject"要素を使用する.
- .paramsファイルのインポートで使用できるパラメータImport要素:
-
"ArrayAssociation" パラメータ配列を連想としてインポートする "ArrayList" パラメータ配列をリストとしてインポートする "ArrayNames" パラメータ配列の名前 - Import["file.params","MXNet"]はデフォルトで"ArrayAssociation"要素を使用する.
例題
すべて開くすべて閉じる例 (1)
Import要素 (9)
NetExternalObject (2)
MXNetネットワークをNetExternalObjectとしてインポートする:
MXNetネットワークが同じ名前のパラメータファイルを持つ場合,それも自動的にインポートされる:
"ArrayPath" オプションを使うと,パラメータファイルのインポートを回避でき,初期化されていないネットと同等のものを生成できる:
結果のNetExternalObjectには,不足している配列の値が与えられなければならないため,追加で入力する必要があることに注意する.
Importオプション (1)
"ArrayPath" (1)
"ArrayPath"にはパラメータファイルへの明示的なパスを指定することができる:
Noneに設定すると,パラメータはインポートされずに初期化されていないネットと同等のものを生成する:
結果のNetExternalObjectには,不足している配列の値が与えられなければならないため,追加で入力する必要があることに注意する.
考えられる問題 (4)
MXNetモデル定義は,入力次元と出力次元に関する情報を保持しない.指定された"Input"の次元で NetChainを定義する.
入力の次元はインポート時に与えられなければならない.そうでなければ,この処理は失敗する:
一貫性のない次元を指定すると,MXNetから形状推定のエラーが出力される:
一貫した次元の最小のセットを与える必要がある.このケースでは,単一の入力の形状を与えるだけで残りのネットを推測するのに十分である.
要素のバッチに作用する MXNet演算子に変換されるレイヤーを含むネットワークは,ラウンドトリップ時に追加の入力次元が必要である.小さな畳み込みネットワークを作成する:
同じ入力形状をオリジナルのネットワークに与えると,MXNetエラーが起こる:
追加の入力,つまりバッチサイズは,明示的に与えられなければならない.通常,任意の値を取ることができる:
ネットに添付されているどんなNetEncoderまたはNetDecoderもエキスポートできない:
インポートされたNetExternalObject はもはやNetEncoderを持たない: