class chainer.training.Extension[source]

Trainer Extensionの基底クラス

 

Trainer のExtensionは呼び出し可能なオブジェクトで、引数としてTrainerオブジェクトをとります。

また、属性として、デフォルトのトリガ(trigger)や優先度(priority)など、いくつかのデフォルト設定を提供します。このクラスは、これらの属性の一般的なデフォルト値のセットを提供します。

 

ユーザによるExtension定義の方法は、以下の3通りあります。このクラスを継承する、 make_extension()によりクロージャ(closure)をデコレートする、Extensionとしてラムダ関数を含んでいる呼び出し可能なものを用いる。デコレータは僅かですがオーバヘッドを減少させ、使用が簡易です。一方、このクラスは柔軟性を提供します。例えば、動作を設定するメソッドを持つことができます。 ラムダ関数の使用は単純な目的のための1行コーディングを可能にしますが、ユーザは、 Trainer.extend()への引数として設定を明示しなければなりません。呼び出し可能でこのクラスを継承しないものについては、Trainer.extend() メソッドに明示的に指定しない限り、このクラスのデフォルト設定が用いられます。

 

Variables:
  • trigger – このExtensionのトリガのデフォルト値。デフォルトで(1, 'iteration')  が設定される。
  • priority – このExtensionのデフォルト優先度設定。デフォルトでPRIORITY_READER  が設定される。

 

Methods

__call__(trainer)[source]

Extensionを呼び出します。

 

実装は、このオペレータをオーバーライドしなければなりません。このメソッドは対応するTriggerが受け入れた反復処理(iteration)で呼び出されます。

 

Parameters: trainer (Trainer) – このオペレータを呼び出すTrainer オブジェクト
finalize()[source]

Extensionをファイナライズする。

 

このメソッドは訓練ループの最後に呼び出されます。

initialize(trainer)[source]

Trainer state(訓練ステート)を初期化します。

 

このメソッドは訓練ループの処理が開始する前に呼び出されます。 Trainer のステートを修正するExtensionは、職化するためにこのメソッドをオーバーライド可能です。

 

Trainerがスナップショットから復元されたとき、このメソッドはTrainerのステートの適切なパートを復元しなければなりません。

 

例えば、 ExponentialShift ExtensionはOptimizerのハイパーパラメータを呼び出しごとに変更します。ハイパーパラメータは、スナップショットに保存されていないことに注意してください。つまり、ハイパーパラメータの復元はExtensionの責任で行います。 ExponentialShift Extensionはスナップショットからハイパーパラメータがロードされた場合、もしくは初期値が設定されていた場合、initialize メソッドで復元を行います。

 

Parameters: trainer (Trainer) – 訓練ループを実行するTrainer オブジェクト
serialize(serializer)[source]

Extensionのステートをシリアル化する。

 

このExtensionを所有するTrainerがExtensionのステートをシリアル化する時、呼び出される。デフォルトではなにもシリアル化しない。

Attributes

default_name

Extensionのデフォルト名。

 

デフォルトのクラス名。実装はこのプロパティをオーバーライド可能である。もしくは、これを隠蔽するためのクラス属性を提供する。

priority = 100
trigger = (1, 'iteration')