generated at
ONNX
Open Neural Network eXchange
DeepLearningモデルを表現するためのフォーマット
DLモデルをフレームワーク間で利用するもの
各フレームワークがONNXフォーマットでのモデルの保存・読み込みに対応してれば相互利用ができる
TensorFlowで作ったモデルをChainerで使える。みたいな
MicroSoftFacebookの共同プロジェクトとして発足
元々はCaffe2PyTorch間でのものとして開発されてた(?) ref
「おにきす」って読むらしい
仕様がシンプル
階層を持たないフラットなネットワーク記述
NNEFに比べると表現力が劣る
Protocol Buffers形式を採用している


IRの仕様
その実体

ONNX Optimizer

Type Denotation

OperatorSet
Conv などのOperatorをまとめて、バージョン付けしたもの
バージョンが有ることでopset v9からHogeが使えるようになりました、みたいな
defaultのもので足りなければ自分で定義できる
バージョン違いを変換する


Value と Node がある ref
この辺を最初の方にもっと調べればよかった
静的単一代入
Loop と If がある


ONNXをvisualizeしてくれるviewer
ブラウザ上でも試せる

ONNX Runtime
ONNX形式のモデルの実行環境
C, C#, C++, Pythonなどの言語環境下で実行可能

ONNX-Chainer
define-by-runなので実際にデータを渡してフォワード計算をするまでモデルが確定されない
ので、 Chain オブジェクトと、そこに流し込む想定のデータの形式や型を渡す必要がある


モデル全体ではなく、パーツごとの仕様もある

対応フレームワーク

ONNXの学習済みモデルを配布している


WebAssemblyWebGLで実装


試す
inception_v1を試す
$ wget https://s3.amazonaws.com/download.onnx/models/opset_9/inception_v1.tar.gz
参考

関連

参考