Parameter変数は、Linkに登録することができます。
Parameterは Variable
のサブクラスで、ほとんどの場合はVariableと同様に動作します。異なるのは、init_scope()
のコンテキスト内で Link
オブジェクトの属性にアサインするだけで登録することが可能ということです。
Parameterは、Initializerによって初期化をサポートしています。2つの 初期化子を持つことが可能です。すなわち、1つはデータ配列で、もう1つは勾配配列です。 この初期化子 は、これらの配列の要素を埋める方法を明示するだけで、型情報は初期化ポイントで示されます。
あるParameterが登録されたLinkがGradientMethod
を通過するとき、更新ルールがこのParameterにセットされます。この更新ルールは、どのようにして勾配配列を用いてParameterのデータ配列を更新するかを明治します。
Parameters: |
|
---|---|
Variables: |
|
Methods
配列から特定の型、軸、オフセットでスライスして要素を抽出する。
Parameters: | |
---|---|
Returns: |
xをスライスした配列を含むVariable オブジェクト |
与えられた元になるVariableから勾配配列を累算します。
このメソッドは与えられた配列の勾配を現在のVariable自身の勾配に加えます。この累算はホストを超えて、異なるデバイス間でもなされます。このVariableが初期化されていない data/grad 配列をもつ場合、このメソッドはそれを与えられたVariableの型で初期化し、勾配を累算します。
Parameters: | var (Variable) –元になるVariable |
---|
現在のVariableから誤差逆伝播の処理を走らせます。
逆伝播の際、FunctionNode.backward()
はこのVariableからスタートするバックワードグラフに現れる、それぞれのFunctionNode
オブジェクトから呼び出されます。
このバックワードグラフは後方への参照を示すもので、Variableノードからそのcreator
へ、Functionノードからそれらの入力Variableノードへの参照を示しています。 逆伝播は全て ルート・ノードで停止します。
Functionノードにはいくつかの入力の勾配としてNone
を設定するものがあります。そのような入力の場合、さらなる逆伝播は行われません。
このメソッドは、初期誤差配列の初期値としてgrad
を使用します。
ユーザは、このメソッドを呼び出す前に、手動で勾配配列を設定出来ます。 data
が1要素のみを含む(つまりスカラである)場合、grad
はNone
であり、このメソッドは自動的に誤差配列の初期値として1.0を補完します。 これは、スカラ損失値から逆伝播をスタートするときに役立ちます。
このメソッドは微分可能な逆伝播をサポートしませんのでご注意ください。勾配の勾配を計算する場合は、grad()
をお使いください。
Parameters: |
|
---|
えられたVariableの元データからデータ配列をコピーする。
このメソッドは引数で与えられたデータ配列を現在のVariableオブジェクト自身へコピーする。 このコピーは異なるデバイス間に(ホストを超えて、もしくはGPU上に)存在する配列の場合でもなされます。 このVariableが初期化されていないデータ配列を持っている場合、このメソッドは与えられたvariableのデータ配列でそれを初期化します。
同様に、もし引数で与えられたVariableが初期化されていないデータ配列を持つ時、このメソッドは現在のVariableオブジェクト自身(self
)で、そのデータ配列を初期化します。 また、両方とも初期化されていない場合、このメソッドは何も行いません。
Parameters: | var (Variable) – 元のVariable. |
---|
Variableのロケーションと格納されたデータの概要を表示します。
初期化されていないVariableを初期化する。
初期化されていないVariableはNone
をセットしたデータ配列で作成されます。このメソッドは、データ配列を生成し、初期化します。このVariable はこのメソッドが呼び出されるまで、unknownのままにしておくことが出来ます。
Parameters: | shape (tuple of int) – データ配列の型 |
---|
Variableの内容を変えずに型を変えて返す。リシェイプ。
chainer.functions.reshape()
をご覧ください。
対応するvariable ノードに元になる配列を保持させます。
現在のVariableに与えられたFunctionが自身のcreator
であることを知らせます。
Parameters: | gen_func (Function) – 現在のVariable自身を出力として生成したFunction オブジェクト |
---|
与えられたノードが自身のcreator
であるということをVariableに知らせます。
Parameters: | fnode (FunctionNode) –現在ののVariable自身を出力として持つFunctionノード |
---|
コピーせずに指定された次元のデータを変換します。
chainer.functions.transpose()
を御覧ください。
このVariable自身のcreattorへの参照を削除します。
このメソッドは対応するVariableノードからのcreator
への参照を削除します。unchain_backward()
とは異なり、グラフを後方探索しません。
このメソッドは self.creator_node = None
と同じです。
Variable ノードと後方への functionsの間の参照を削除します。
このメソッドが完了したあと、どこからも参照されていない中間変数ノードとFunctionは参照をカウントしているGC(ガベッジコレクション)によって割当を解除されます。
このVariable自身も、ノードからcreator
であるFunctionへの参照を削除します。つまり、ノードは計算グラフのルートになります。これは、アンチェインしたあとにこのVariableで逆伝播が停止するということを示しています。この挙動は truncated BPTTの実装で有用です。
勾配と更新ルールを用いてデータ配列を更新します。
このメソッドは、アタッチされた更新ルールを用いてParameterを更新します。
Attributes
この変数の転置
元になるデータ配列。
numpy.ndarray 、 cupy.ndarray、もしくは変数が初期化されていない状態の場合はNone。
この変数を生成したFunction 実装。
この変数 が旧スタイルのFunctionによって生成されている場合(つまり、Function
のサブクラスとして実装されている場合)、このプロパティはFunction
オブジェクトを返します。
この variable が新しいスタイルのFunctionによって生成されている場合 (つまり <FunctionNode
クラスのサブクラスとして実装されている場合)、このプロパティはnode オブジェクトを返します。
この変数を生成したFunctionNode
オブジェクト。
このプロパティはNone
を設定できる setterを持ちます。このプロパティにNone
を設定することは、 unchain()
を呼び出すことと同じです。すなわち、この変数を、自身を生成したFunctionから開放します。
この setterは FunctionNode
オブジェクトもこのVariable自信を生成したものとして受け入れます。例えば、まずNone
をこのプロパティにセットして、次に独自の値をセットするということが可能です。
FunctionNode()
オブジェクトを設定することで、すぐにはエラーは発生しませんが、 このような動作は定義されていません。現在のVariableを生成していない FunctionNode()
オブジェクトをこの属性に設定しないでください。
T元になるデータ配列 ( array
と同じもの).
この属性を直接使用することは止められています。; かわりに array
をお使いください。. array
を使用することで、 Variable と ndarrayをコード中で混ぜて書くとき、エラーを早期に発見できるでしょう。なぜなら、 ndarray
は.data
属性を持ちますが、.array
を持たないからです。
現在のVariableの勾配配列。
このプロパティは勾配変数自身の代わりに、勾配変数のもとになる配列を返しますので注意してください。勾配変数を取得したり設定するためには、grad_var
を使用してください。
勾配変数(variable)
この変数(Parameter)を表す短いテキスト(ラベル)
この属性は、後方への計算を行う際にgrad
をセットするかどうかを示しています。