PyTorchにおけるモデルの保存と読み込みには主に torch.save と torch.load が用いられます。これらの関数は、モデルの学習済みパラメータや、モデル全体の状態をファイルとして保存・復元するために使用されます。
1. モデル保存の方法(torch.save)
torch.save)
方法1:モデルのstate_dictのみ保存
最も一般的で推奨される方法です。
ポイント:
-
state_dict()はモデルのパラメータ(重みやバイアスなど)を辞書型で返します。 -
拡張子は慣習的に
.pthや.ptを使います。 -
モデルの構造(クラス定義など)は別途保持しておく必要があります。
方法2:モデル全体(構造+重み)を保存
注意点:
-
torch.save(model, ...)はPythonのpickleを使用してモデルのオブジェクト全体をシリアライズします。 -
モデルクラスの定義が保存時とまったく同じである必要があります。
-
実務では再現性や互換性の面から、
state_dict()方式が推奨されます。
2. モデル読み込みの方法(torch.load)
torch.load)
方法1:state_dictから読み込む
補足:
-
model.eval()はドロップアウトやバッチ正規化などを評価モードに切り替えるための関数です。
方法2:モデル全体の読み込み
注意点:
-
保存時のモデルクラスの定義が必要です(インポート可能であること)。
3. 保存・読み込みにおける補足事項
-
GPUとCPUの切り替え:
-
複数の情報(モデル+オプティマイザなど)を保存することも可能:
読み込み時:
まとめ
| 方法 | 保存関数 | 読み込み関数 | 特徴 |
|---|---|---|---|
| 推奨方法 | model.state_dict() を torch.save |
torch.load → load_state_dict |
安全・柔軟・再現性が高い |
| 簡易方法 | torch.save(model) |
torch.load |
モデル構造も保存。構造の変更に弱い |
PyTorchでは明示的にモデルの構造とパラメータを分離して扱うことが、再利用性やデバッグ性の観点から推奨されています。したがって、基本的には state_dict を保存・読み込みする方式を用いるべきです。
生成日:2025/05/22