演算結果を追跡するための構造体の配列です。
全てのVariableはnumpy.ndarray
型、または cupy.ndarray
型のデータ配列を持ちます。
Variable オブジェクトは、データ配列と計算グラフのVariableNode オブジェクトを持ちます。Variableがユーザによってコンストラクトされた場合、そのノードはルートであり、親を持ちません。 Variable が FunctionNode
オブジェクトによってコンストラクトされた場合、ノードは creator_node
と呼ばれる親への参照を持ちます。この参照は、グラフをバックプロパゲーション(誤差逆伝播法)においてバックトラックする際に用いられます。
ユーザは、この連鎖的な挙動をno_backprop_mode()によって無効(もしくはforce_backprop_mode()によって有効)にすることができます。Variableが計算グラフを生成させないことはもとより、強制的に生成することも可能です。
chainer.no_backprop_mode()
を使用してください。
Parameters: |
|
---|
Methods
指定した形、軸、オフセットで配列から要素を抽出(スライス)します。
変数: | |
---|---|
戻り値: |
xからスライスされた配列を含む |
admicAdd
によってサポートされた型のみサポートします。 サポートされている型は numpy.float32
、 numpy.int32
、 numpy.uint32
、 numpy.uint64
、
numpy.ulonglong
です。
与えられた元のVariableを加えて、勾配配列を蓄積する。
このメソッドは与えられた変数の勾配をこの変数の勾配に加えます。この累算はホストとデバイスの区別なく行われます。 この変数が、初期化されていないデータ配列もしくは勾配配列だった場合、 このメソッドは与えられた変数の型で初期化し、勾配を累算します。
変数: |
var (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の内容を変えずに型を変えて返す。リシェイプ。
chainer.functions.reshape()
をご覧ください。
対応するvariable ノードに元になる配列を保持させます。
現在のVariableに与えられたFunctionが自身のcreator
であることを通知します。
Parameters: | gen_func (Function) – 現在のVariable自身を出力として生成したFunction オブジェクト |
---|
与えられたノードが自身のcreator
であるということをVariableに通知します。
Parameters: | fnode (FunctionNode) –現在ののVariable自身を出力として持つFunctionNode |
---|
データと勾配配列をCPUへコピーします。
データと勾配配列を指定したGPUへコピーします。
Parameters: |
device – ターゲットデバイス指示子。省略された場合、現在のデバイスが使用されます。 |
---|
コピーせずに指定された次元のデータを変換する。
chainer.functions.transpose()
を御覧ください。
このVariable自身のcreattorへの参照を削除します。
このメソッドは対応するVariableノードからのcreator
への参照を削除します。unchain_backward()
とは異なり、グラフを逆方向へは探索しません。
このメソッドは self.creator_node = None
と同じです。
Variable ノードと逆方向への functionsの間の参照を削除します。
このメソッドが完了したあと、どこからも参照されていない中間変数ノードとFunctionは参照をカウントしているGC(ガベッジコレクション)によって割当を解除されます。
このVariable自身も、ノードからcreator
であるFunctionへの参照を削除します。つまり、ノードは計算グラフのルートになります。これは、アンチェインしたあとにこのVariableで逆伝播が停止するということを示しています。この挙動は truncated BPTTの実装で有用です。
0で勾配配列を初期化します。
勾配変数はこのメソッドによって計算グラフから開放されます、この操作が逆伝播の有効性を破壊するからです。
cleargrad()
をお使いください 。
Attributes / 属性
このVariable(多次元配列)の転置
元になるデータ配列。
numpy.ndarray 、 cupy.ndarray、もしくはVariableが初期化されていない状態の場合はNone。
このVariableを生成したFunction 実装。
この variable が旧スタイルのFunctionによって生成されている場合(つまり、Function
のサブクラスとして実装されている場合)、このプロパティはFunction
オブジェクトを返します。
この variable が新しいスタイルのFunctionによって生成されている場合 (つまり FunctionNode
クラスのサブクラスとして実装されている場合)、このプロパティはnode オブジェクトを返します。
現在のVariableを生成したFunctionNode
オブジェクト。
このプロパティはNone
を設定できる setterを持ちます。このプロパティにNone
を設定することは、 unchain()
を呼び出すことと同じです。すなわち、Vatiableを、自信を生成したFunctionから開放します。
この setterは FunctionNode
オブジェクトもこのVariable自信を生成したものとして受け入れます。例えば、まずNone
をこのプロパティにセットして、次に独自の値をセットするということが可能です。
FunctionNode()
オブジェクトを設定することで、すぐにはエラーは発生しませんが、 このような動作は定義されていません。現在のVariableを生成していない FunctionNode()
オブジェクトをこの属性に設定しないでください。
元になるデータ配列 ( array
と同じもの).
この属性を直接使用することは止められています。かわりに array
をお使いください。.array
を使用することで、 Variable と ndarrayをコード中で混ぜて書くとき、エラーを早期に発見できるでしょう。なぜなら、 ndarray
は.data
属性を持ちますが、.array
を持たないからです。
現在のVariableの勾配配列。
このプロパティは勾配変数自身の代わりに、勾配変数のもとになる配列を返しますので注意してください。勾配変数を取得したり設定するためには、grad_var
を使用してください。
勾配変数(variable)
この variableを表す短いテキスト(ラベル)
この属性は、 逆方向への計算を行う際にgrad
をセットするかどうかを示しています。