FORMAT COMPARISON
Keras vs ONNX
.kerasはモデル構成・重みと存在するoptimizer状態などをKerasで保存します。ONNXは演算グラフを対応ランタイムへ受け渡すモデル表現です。
KerasとONNX、どちらを選ぶ?
Kerasでモデルを再読み込みして学習を続けるなら.keras、対応する別ランタイムへ推論を渡すならONNXを検討します。 .keras保存とONNXエクスポートは別工程です。使用するKeras版・backend・演算の対応を確認し、元の.kerasと依存コードを残した上で推論用成果物を作ります。
Keras向き
Keras v3のモデル構成・重み・利用可能な学習状態を一つのアーカイブに保存する・Keras対応環境間でモデルを保存・再読み込みする
- Kerasのシリアライズに対応する標準レイヤー中心のモデルを保存する
- 構成と重みをまとめて管理する
ONNX向き
機械学習モデルの演算グラフと重みを対応ランタイムへ受け渡す・異なる学習フレームワークと推論環境の間でモデルを交換する
- 標準演算子とopsetに対応するランタイムで推論する
- グラフ・入出力型・演算子を含むモデルを交換する
基本情報を比較
KerasとONNXの主な違いを確認できます。
| 項目 | Keras | ONNX |
|---|---|---|
| 拡張子 | .keras | .onnx |
| MIME Type | application/zip | application/octet-stream |
| 主な用途 | Keras v3のモデル構成・重み・利用可能な学習状態を一つのアーカイブに保存する・Keras対応環境間でモデルを保存・再読み込みする | 機械学習モデルの演算グラフと重みを対応ランタイムへ受け渡す・異なる学習フレームワークと推論環境の間でモデルを交換する |
| 圧縮 | 不明 | none |
| 開く方法 | 対応バージョンのKerasで`load_model`を使います。カスタムレイヤーやオブジェクトがある場合は信頼できる実装を読み込み環境に登録し、通常は有効なsafe modeを維持してください。アーカイブを調べるだけならZIP内容を確認できますが、ファイルを展開して中身を編集すると再読み込みできなくなる場合があります。 | ONNX対応の検査ツールや推論ランタイムで読み込みます。運用前にモデルのIR/opset版、使用演算子、入出力の型とshape、ランタイムの対応状況を確認し、代表入力で元モデルと出力を比較します。 |
| 書き出し・変換 | Kerasの`save`または`saving.save_model`でモデル全体を保存します。推論専用配布では.keras全体保存と`export`が目的の異なる操作です。保存後は対応Keras環境で読み込み、代表入力の出力、重み、必要なコンパイル/optimizer状態を確認します。 | 元の学習frameworkが提供するONNX exporterでモデルを変換し、ONNX checker等で構造を検証します。変換成功は数値一致や対象デバイスでの実行を保証しません。外部データを使う場合は本体とすべての参照ファイルを同じ配布単位で保存します。 |
用途別の選び方
作りたいものや使う場面から選べます。
Kerasのシリアライズに対応する標準レイヤー中心のモデルを保存する
Keras v3のモデル構成・重み・利用可能な学習状態を一つのアーカイブに保存する・Keras対応環境間でモデルを保存・再読み込みする
Keras向き構成と重みをまとめて管理する
Keras v3のモデル構成・重み・利用可能な学習状態を一つのアーカイブに保存する・Keras対応環境間でモデルを保存・再読み込みする
Keras向き標準演算子とopsetに対応するランタイムで推論する
機械学習モデルの演算グラフと重みを対応ランタイムへ受け渡す・異なる学習フレームワークと推論環境の間でモデルを交換する
ONNX向きグラフ・入出力型・演算子を含むモデルを交換する
機械学習モデルの演算グラフと重みを対応ランタイムへ受け渡す・異なる学習フレームワークと推論環境の間でモデルを交換する
ONNX向き確認ポイント 1
Kerasのsaveはモデルの構成と状態を保存し、custom objectの実装は別途必要になる場合があります。 ONNXには型付き入出力・演算グラフ・opset情報があり、実行には対応ランタイムが必要です。
使い分け確認ポイント 2
Kerasの公式export APIはONNXを出力先として扱います。入力の型とshape、使用するopsetを記録し、対象ランタイムが全演算を実装しているか確認します。
使い分け選ぶ理由を詳しく
- 同じ前処理と代表入力で元モデルと出力を比較し、許容差とデバイス条件を記録します。ONNXの構造検査だけでは数値一致・速度・Kerasの学習状態保持を保証しません。
よくある質問
ONNXを保存すれば.kerasを削除しても学習を再開できますか?
その前提にはできません。推論エクスポートがoptimizer状態やcustom objectを含むKeras保存内容を再構成する保証はありません。元の.keras、必要なコードと環境情報を保管してください。