class 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:
  • hook (function) – フック関数。hook.call_for_each_param がTrueを設定されている場合、このフック関数は更新ルールとパラメータを通過することによって、各パラメータから呼び出される。一方で、この関数は、Optimizerが通過する栗開始処理で1回だけ呼び出される。
  • name (str) – 登録名。省略されている場合、 hook.name がデフォルトとして呼び出される。

 

call_hooks()[source]

登録順にフック関数を呼び出す。

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でオーバーライドします。

remove_hook(name)[source]

フック関数を削除する。

 

Parameters: name (str) – 削除するフック関数の登録名

 

serialize(serializer)[source]

このOptimizerのシリアライザもしくはデシリアライザ。

 

下記のものだけを保存し、ロードします。

  • Optimizer states
  • Global states (t と epoch)

このメソッドは、ターゲットリンクのパラメータは保存もロードもしません。 ターゲットリンクのパラメータはそれぞれ別々に保存とロードをしなければなりません。

Parameters: serializer (AbstractSerializer) – Serializer もしくはDeserializer オブジェクト

 

setup(link)[source]
update(lossfun=None, *args, **kwds)[source]

損失関数もしくは計算した勾配に基づくパラメータを更新する。

 

このメソッドは2つの方法を実行します。

  •  lossfun が与えられている場合、勾配計算を行う損失関数として用いられます。
  • それ以外の場合、このメソッドは勾配が既に計算されたものであることを確認します。,

両方のケースで、計算された勾配はパラメータの更新に用いられます。実際の更新ルーチンは各パラメータの更新ルールによって定義されています。

use_cleargrads(use=True)[source]

更新時の cleargrads() の使用を有効にする、もしくは無効にする。

 

Parameters: use (bool) –  True が設定されている場合、この関数はcleargradsの使用を有効にします。 False が設定されている場合、  cleargradsの使用を無効にします。 (zerograds が用いられるようになります。)
version v2.0以降非推奨
update() は cleargrads() をデフォルトで呼び出しますので注意してください。cleargrads()は zerograds()より効率的ですので、use_cleargrads()を呼び出す必要はありません。このメソッドは後方互換性のために残されています