モデルの保存と読み込み(ModelSerializer)

Deeplearning4j(DL4J)において、モデルの保存と読み込みは、学習済みモデルを再利用するために重要な処理です。これを実現するために、DL4Jでは org.deeplearning4j.util.ModelSerializer クラスが提供されています。このクラスを利用することで、MultiLayerNetworkComputationGraph のインスタンスをファイルとして保存・読み込みすることができます。


1. モデルの保存(Save)

使用メソッド

java
ModelSerializer.writeModel(MultiLayerNetwork model, File file, boolean saveUpdater)
  • model: 保存対象の学習済みモデル(MultiLayerNetworkまたはComputationGraph)。

  • file: 出力先のファイルオブジェクト(例: new File("model.zip"))。

  • saveUpdater: true にすると、学習率やモメンタムなどを含むオプティマイザの内部状態(Updater)も保存される。

java
MultiLayerNetwork model = ...; // 学習済みのモデル File locationToSave = new File("trained_model.zip"); boolean saveUpdater = true; ModelSerializer.writeModel(model, locationToSave, saveUpdater);

2. モデルの読み込み(Load)

使用メソッド

java
MultiLayerNetwork model = ModelSerializer.restoreMultiLayerNetwork(File file)
  • またはオプション付き:

java
MultiLayerNetwork model = ModelSerializer.restoreMultiLayerNetwork(File file, boolean loadUpdater)
  • file: 読み込み対象の保存ファイル。

  • loadUpdater: 保存されたアップデータ情報を読み込むかどうか。

java
File modelFile = new File("trained_model.zip"); MultiLayerNetwork restoredModel = ModelSerializer.restoreMultiLayerNetwork(modelFile);

ComputationGraphの場合

java
ComputationGraph model = ModelSerializer.restoreComputationGraph(new File("model_graph.zip"));

3. モデル保存ファイルの構造

ModelSerializer で保存された .zip ファイルには以下の情報が含まれます:

  • ネットワーク構造(JSON形式)

  • パラメータ(重み・バイアス)

  • アップデータの状態(オプション)

  • 正規化設定(NormalizerStandardize など)


4. 正規化スキーマの保存と読み込み(オプション)

前処理で使用した正規化スキーマ(例えば NormalizerStandardize)も一緒に保存・読み込みできます。

保存

java
NormalizerStandardize normalizer = ...; ModelSerializer.addNormalizerToModel(modelFile, normalizer);

読み込み

java
NormalizerStandardize normalizer = ModelSerializer.restoreNormalizerFromFile(modelFile);

5. 実用的な使いどころ

  • 学習済みモデルの再学習(ファインチューニング)

  • 異なる環境での推論(推論用アプリケーションへの組み込み)

  • モデルのバックアップとバージョン管理


注意点

  • モデル構造と重みの整合性がとれていない場合、読み込み時にエラーが発生する可能性があります。

  • JavaのバージョンやDL4Jのバージョンが異なる環境では、互換性に注意が必要です。


以上がDeeplearning4jにおける ModelSerializer を使用したモデルの保存と読み込みに関する詳細な説明です。必要に応じて、保存ファイルを他のシステムと共有する際には、同じバージョンのDL4Jを使うことが推奨されます。

生成日:2025/05/23