chainer.
GradientMethod
[source]¶
単一の勾配に基づくOptimizerの基底クラス。
これは Optimizer
クラスの拡張です。カレントのパラメータ行列の更新で、勾配を必要とする典型的な勾配法は、この子クラスとして実装かのうです。
このクラスは UpdateRule
を各パラメータの更新ルールを管理するために用います。GradientMethod の子クラスは、各パラメータのデフォルトの更新ルールを作成するためにcreate_update_rule()
をオーバーライドしなければなりません。
このクラスは hyperparam
も提供しています。これは 、各更新ルールのデフォルト設定として用いられるハイパーパラメータです。ビルトインされている勾配法の実装は全て 、hyperparam
の属性へのエイリアスとして機能するプロクシ・プロパティも提供しています。また、そのようなエイリアスを各属性へ提供することが推奨されています。これはHyperparameterProxy
を用いて、各属性へ1行追加するだけで可能になります。
Variables: |
hyperparam (Hyperparameter) – 勾配法のハイパーパラメータ。各更新ルールのデフォルト設定として用いられる。(つまり、各更新ルールのハイパーパラメータは、このハイパーパラメータを親として参照する) |
---|
Methods
add_hook
(hook, name=None)[source]¶
フック関数を登録する。
フック関数は一般的に勾配計算直後に呼び出されますが、このタイミングは最適化手法に依存しています。
Parameters: |
---|
create_update_rule
()[source]¶
新しい更新ルールオブジェクトを生成する。
このメソッドは更新ルールオブジェクトを生成します。 setup()
に呼び出されることで、各パラメータの更新ルールを設定します。勾配法の 各実装は、デフォルトの更新ルールの実装を提供するために、このメソッドをオーバーライドしましょう。
Update rule object. | |
Return type: | UpdateRule |
new_epoch
()[source]¶
新しいエポックを開始する。
このメソッドは epoch
数を増やします。Optimizerがエポック数に依存する場合、ユーザは各エポックの開始時にこのメソッドを適切に呼び出さなければならないことに留意してください。
reallocate_cleared_grads
()[source]¶
cleargrad()
によってクリアされた勾配を再割り当てする。
このメソッドは None
を持つ全ての勾配に配列を割り当てます。このメソッドは全てのOptimizerのフックが呼び出される前後に毎回呼び出されます。継承しているOptimizerがこの割当を要求しないとき、Optimizerはこのメソッドをblank functionでオーバーライドします。
serialize
(serializer)[source]¶
このOptimizerのシリアライザもしくはデシリアライザ。
下記のものだけを保存し、ロードします。
t
と epoch
)
このメソッドは、ターゲットリンクのパラメータは保存もロードもしません。 ターゲットリンクのパラメータはそれぞれ別々に保存とロードをしなければなりません。
Parameters: | serializer (AbstractSerializer) – Serializer もしくはDeserializer オブジェクト |
---|
update
(lossfun=None, *args, **kwds)[source]¶
損失関数もしくは計算した勾配に基づくパラメータを更新する。
このメソッドは2つの方法を実行します。
lossfun
が与えられている場合、勾配計算を行う損失関数として用いられます。
両方のケースで、計算された勾配はパラメータの更新に用いられます。実際の更新ルーチンは各パラメータの更新ルールによって定義されています。
use_cleargrads
(use=True)[source]¶
更新時の cleargrads()
の使用を有効にする、もしくは無効にする。
Parameters: |
use (bool) – True が設定されている場合、この関数はcleargradsの使用を有効にします。 False が設定されている場合、 cleargradsの使用を無効にします。 (zerograds が用いられるようになります。)
|
---|
update()
は cleargrads()
をデフォルトで呼び出しますので注意してください。cleargrads()
は zerograds()
より効率的ですので、use_cleargrads()
を呼び出す必要はありません。このメソッドは後方互換性のために残されています