訓練ループの抽象化

Chainer は chainer.trainingモジュールのもとで、訓練ループの標準実装を提供します。この実装はVariable、Function、 Link/Chain/ChainList、Optimizer、Dataset、Reporter/Summaryを含む、多くの他のChainerのコア機能の最上位に構築されています。他の機械学習ツールキットにおける訓練ループの抽象化と比較した場合、Chainerの訓練フレームワークは、柔軟性の最大化を目指すとともに、代表的な使用方法のための簡易性も維持しています。ほとんどのコンポーネントはプラガブル(plugable)で、ユーザはその定義を上書き可能です。

 

訓練ループ抽象化のコアは Trainerで、訓練ループ自体を実装しています。この訓練ループは2つのパートで構成されています。1つは Updaterで、これは実際に訓練のパラメータを更新するものです。 もう1つは Extensionで、パラメータ更新以外の任意の機能のためのものです。

Updater とExtensionは chainer.datasetIterator をデータベーススキャンとミニバッチのロードに使用します。また、Trainer は Reporter を測定値の収集にも使用します。また、Extensionは DictSummary をExtensionの蓄積と静的な計算に使用します。

 

多くの訓練ユーティリティ使用のサンプルが公式のexamplesにあります。また Trainer extensionsからもExtensionの実装を検索可能です。

 

 

Trainer

chainer.training.Trainer Chainerの標準訓練ループ

 

Updater

chainer.training.Updater TrainerのUpdaterオブジェクトのインタフェース
chainer.training.StandardUpdater Updaterの標準実装
chainer.training.ParallelUpdater GPU並列処理Updaterの実装
chainer.training.updaters.MultiprocessParallelUpdater GPUのマルチプロセス並列処理Updaterの実装

 

Extension

chainer.training.Extension Trainer extensionの基底クラス
chainer.training.make_extension

与えられた関数をTrainer extensionにするデコレータ

 

Trigger

Trigger は呼び出し可能なオブジェクトで、訓練ループ内で指定したイベントを処理するタイミングを決定します。Trainerオブジェクトを引数として扱い、イベントが発生するとTrueを返します。

主に、Extensionを呼び出すタイミングを決定するのに使用されます。また、訓練ループを終了するタイミングを決定するのにも使用されます。

 

chainer.training.get_trigger Trigger objectを取得する関数