Chainer は chainer.training
モジュールのもとで、訓練ループの標準実装を提供します。この実装はVariable、Function、
Link/Chain/ChainList、Optimizer、Dataset、Reporter/Summaryを含む、多くの他のChainerのコア機能の最上位に構築されています。他の機械学習ツールキットにおける訓練ループの抽象化と比較した場合、Chainerの訓練フレームワークは、柔軟性の最大化を目指すとともに、代表的な使用方法のための簡易性も維持しています。ほとんどのコンポーネントはプラガブル(plugable)で、ユーザはその定義を上書き可能です。
訓練ループ抽象化のコアは Trainer
で、訓練ループ自体を実装しています。この訓練ループは2つのパートで構成されています。1つは Updater
で、これは実際に訓練のパラメータを更新するものです。 もう1つは Extension
で、パラメータ更新以外の任意の機能のためのものです。
Updater とExtensionは chainer.dataset
と Iterator
をデータベーススキャンとミニバッチのロードに使用します。また、Trainer
は Reporter
を測定値の収集にも使用します。また、Extensionは DictSummary
をExtensionの蓄積と静的な計算に使用します。
多くの訓練ユーティリティ使用のサンプルが公式のexamplesにあります。また Trainer extensionsからもExtensionの実装を検索可能です。
chainer.training.Trainer | Chainerの標準訓練ループ |
chainer.training.Updater | TrainerのUpdaterオブジェクトのインタフェース |
chainer.training.StandardUpdater | Updaterの標準実装 |
chainer.training.ParallelUpdater | GPU並列処理Updaterの実装 |
chainer.training.updaters.MultiprocessParallelUpdater | GPUのマルチプロセス並列処理Updaterの実装 |
chainer.training.Extension | Trainer extensionの基底クラス |
chainer.training.make_extension |
与えられた関数をTrainer extensionにするデコレータ |
Trigger は呼び出し可能なオブジェクトで、訓練ループ内で指定したイベントを処理するタイミングを決定します。Trainerオブジェクトを引数として扱い、イベントが発生するとTrueを返します。
主に、Extensionを呼び出すタイミングを決定するのに使用されます。また、訓練ループを終了するタイミングを決定するのにも使用されます。
chainer.training.get_trigger | Trigger objectを取得する関数 |