chainer.training.
Trainer
(updater,
stop_trigger=None, out='result')[source]¶
Chainerにおける標準的な訓練ループ。
Trainerは訓練ループの実装です。ユーザは run()
メソッドを呼び出すことで、訓練を実行できます。
訓練ループの各反復処理は、下記の用に進みます。
Extensionは呼び出し可能なオブジェクトで、引数としてTrainerオブジェクトをとります。カスタムのExtensionを定義するのには、次の3つの方法があります。 Extension
クラスを継承する、 make_extension()
で関数をデコレートする、定義するラムダ式を含む呼び出し可能なものを定義する。カスタムのExtensionについてや、その設定方法についての詳細は Extension
をお読みください。
ユーザは extend()
メソッドを呼び、TrainerにExtensionを登録でき、そこでいくつかの設定を加えることが出来ます。
IntervalTrigger
が用いられ、ユーザは簡潔にインターバルの長さとそのユニットをタプルで指定することができます。例えば、(1000, 'iteration')
や (1, 'epoch')
のようになります。
PRIORITY_WRITER
:これは記録をExtensionsの優先度です。 observation
辞書に書き込むExtensionの優先度です。これは、Extensionが直接observationディレクトリへ値を書き込む場合や、Extensionがobservationディクショナリへ値を報告するために chainer.report()
関数を使用する場合を含みます。
PRIORITY_EDITOR
. これは、すでに報告された値に基いて observation
ディクショナリを編集する際のExtensionsの優先度です。
PRIORITY_READER
. これは、observation
ディクショナリから記録を読み込むだけの場合のExtensionの優先度です。これは、observation
ディクショナリを利用しない場合のExtensionsにも適しています。
Trainerによって管理されるTrainerオブジェクトのカレントステートとオブジェクトは、Chainerの標準的なシリアル化プロトコルを通してシリアル化可能です。これは、訓練ループ中の一時停止や再開を簡単に可能にします。
シリアル化は訓練ループの全てを復元しません。訓練中に変化したステートのみ復元します。 (Parameter, Optimizerステート、バッチ・イテレータ・ステート, Extension ステート等)。ステートをデシリアル化する前に、オブジェクトを正確に初期化しなければなりません。
一方で、ユーザはデシリアル化の設定を変更出来るということでもあります。例えば、exitの条件はデシリアル化で変更可能なので、ユーザは合計で多数のイテレーションがある場合、幾つかのイテレーションでモデルを訓練し、一時停止し、それを再開できます。
訓練中、各更新で観測された値を格納するために Reporter
オブジェクトも生成します。 これは、各イテレーションで、新たな観測値の辞書を生成し、それを observation
属性へ格納します。
各OptimizerのターゲットモデルのLinkはobserver(観測者/オブザーバ)としてReporter オブジェクトに登録されます。そこで各、 オブザーバは<optimizer name><link
name>
というフォーマットで構築されます。このLinkの名前は chainer.Link.namedlink()
メソッドによって与えられ、階層における各Linkへのパスを表しています。 他のオブザーバは reporter
属性を介したReporterオブジェクトへのアクセスによって登録可能です。
デフォルトのTrainer はプレーン、つまりExtensionを一切含みません。
Parameters: |
|
---|---|
Variables: |
|
Methods
extend
(extension, name=None, trigger=None, priority=None, **kwargs)[source]¶
TrainerにExtensionを登録する。
Extension
は呼び出し可能なオブジェクトで、対応するTriggerオブジェクトが反復処理をスキップすることを決定していなければ、各更新のあとで呼び出されます。この実行順序は、優先度によって決定されます。優先度の高いExtensionは、各反復処理で先に呼び出されます。優先度が
Extensionでは、登録順に呼び出されます。
2つ以上のExtensionが同じ名前で登録された場合、 接尾辞が2つ目から最後までのExtensionの名前に加えられます。この接尾辞は _N
で、NはExtensionの順番を示すの数字が入ります。
Extensionのインタフェースについては Extension
をお読みください。
Parameters: |
|
---|
get_extension
(name)[source]¶
与えられた名前のExtensionを返す。
Parameters: | name (str) – Extensionの名称 |
---|---|
Returns: | Extension. |
run
(show_loop_exception_msg=True)[source]¶
訓練ループの実行。
このメソッドは Trainer
の核です。モデルの訓練のループ全体を実行します。
このメソッドは1つのTrainerオブジェクトに対して、複数は実行出来ませんのでご注意ください。
Attributes
elapsed_time
¶
訓練にかかった総合時間。
この時間は2番めです。訓練がスナップショットから再開された場合、Trainerのカレントステートを取得するため、全ての事前訓練の時間が含まれます。