chainer.
Optimizer
[source]¶
全ての数値オプティマイザの基底クラス。(*訳注:オプティマイズ=最適化)
このクラスは全ての最適化メソッドのための基本的な機能を提供します。このクラスはターゲットリンクのパラメータを最適化します。このターゲットリンクはsetup()
メソッドを通して登録され、update()
メソッドが、与えられた損失関数に基いてパラメータを更新します。
各オプティマイザの実装は Optimizerの子クラスとして定義されなければなりません。また、update()
メソッドをオーバライドしなければなりません。
オプティマイザが1つの勾配計算(多くの1次法のような)に基いている場合、 GradientMethod
を継承すべきです。これはUpdateRule
のサポートを含め、1次法に特化した機能を加えます。
Optimizer インスタンスはフック関数もサポートしています。フック関数は add_hook()
メソッドによって登録されます。各フック関数は実際のパラメータの更新の前に登録順に呼び出されます。フック関数が属性の call_for_each_param
を持つ場合、その値は True
で、 フック関数は全ての更新ルールのフック関数として用いられます。
(つまり、全てのパラメータが、対応する更新ルールとパラメータを通過することによって、呼び出されます。).
Variables: |
|
---|
Methods
add_hook
(hook, name=None)[source]¶
フック関数を登録します。
フック関数は一般的には勾配計算の直後に呼び出されますが、このタイミングはoptimizationメソッドにより決定できます。
Parameters: |
---|
new_epoch
()[source]¶
新しいエポックを開始する。
このメソッドは epoch
数を増やします。オプティマイザはエポック数に依存しているので、ユーザは各エポックのはじめに、適切にこのメソッドを呼び出さなければいけないことに注意してください。
serialize
(serializer)[source]¶
Optimizerをシリアライズもしくはデシリアライズする。
下記を保存、もしくはロードする場合:
t
と epoch
)
ターゲットリンクのパラメータを保存したり、ロードすることはありません。ターゲットリンクは個別に保存、もしくはロードされなければなりません。
Parameters: | serializer (AbstractSerializer) – シリアライザ、もしくはデシリアライザオブジェクト。 |
---|
setup
(link)[source]¶
ターゲットリンクを設定し、Optimiser statesを初期化する。
与えられたリンクを target
属性に設定する。階層における全てのパラメータに対応するOptimizer state 辞書も準備する。既存のstatesは、破棄されます。
Parameters: | link (Link) – Target link object. |
---|
update
(lossfun=None, *args, **kwds)[source]¶
パラメータをアップデートする。
このメソッドはターゲットリンクのパラメータを更新します。このメソッドの動作は lossfun
が与えられたとき、与えられていないときとも異なります。
lossfun
が与えられている場合、このメソッドは一般的に勾配をクリアし、損失関数を与えられた追加の引数とともに呼び出します、そして勾配を計算した出力の backward()
メソッド を呼び出します。この実装は lossfun
を一度とは言わず(何度も)呼び出すかもしれません。
lossfun
が与えられていない場合、このメソッドは全てのパラメータの勾配が既に計算されていることを確認します。複数の勾配計算を要求するような実装では、この場合、エラーを起こす可能性があります。
両方のケースで、このメソッドは全てのパラメータの更新処理を呼び出します。
Parameters: |
---|