Variable

class chainer.Variable(data, volatile=OFF, name=None, grad=None)[ソース]

計算を追跡するための構造体を持つ配列。

すべての変数は numpy.ndarray または cupy.ndarray のいずれかのタイプのデータ配列を保持します。

変数オブジェクトは、ユーザまたはある機能による2つの方法で構築できます。ある関数によって変数がその出力の1つとして作成されると、変数はその関数への参照を保持します。この参照はエラーバックプロパゲーション(誤差逆伝播法)で使用されます。それは backward unchaining にも使用されます。作成された変数への参照を保持していない変数を ルート 変数といいます。変数がユーザーによって作成された場合、または unchain_backward() によって参照が削除された場合、変数はrootです。

ユーザーは初期変数にvolatileフラグを設定することによって、この連鎖動作を無効にすることができます。入力時に関数がvolatile変数を取得すると、出力変数はその関数への参照を保持しません。これはすべての関数アプリケーションでunchainingのように動作します。

パラメータ:
  • data (array) – 初期データ配列
  • volatile (Flag) – volatilityフラグ。文字列(‘on’、’off’または’auto’)またはブール値も使用できます
  • name (str) – 変数の名前
  • grad (array) – 初期勾配配列
変数:
  • datanumpy.ndarray または cupy.ndarray 型のデータ配列。
  • grad – 勾配配列。
  • creator – この変数を作成する関数。変数がどの関数によっても作成されていない場合は、 None になります。
  • volatile – Ternary Flag オブジェクト。'ON' の場合、変数は関数アプリケーションを追跡しません。ternaryフラグの詳細については、 Flag を参照してください。
addgrad(var)[ソース]

指定されたソース変数から勾配配列を累積します。

このメソッドは単に、 self.grad + = var.grad を実行しますが、累積はホストと異なるデバイス間で行われる点が異なります。

パラメータ:var (Variable) – Source variable.
backward(retain_grad=False)[ソース]

この変数から誤差逆伝播法(backpropと知られる)を実行します。

On backprop, Function.backward() is called on each Function object appearing in the backward graph starting from this variable. The backward graph is represented by backward references from variables to their creators, and from functions to their inputs. The backprop stops at all root variables. Some functions set None as gradients of some inputs, where further backprop does not take place at such input variables.

This method uses grad as the initial error array. User can manually set a gradient array before calling this method. If data contains only one element (i.e., it is scalar) and grad is None, then this method automatically complements 1.0 as the initial error. This is useful on starting backprop from some scalar loss value.

パラメータ:retain_grad (bool) –

If True, the gradient arrays of all intermediate variables are kept. Otherwise, grad of the intermediate variables are set to None on appropriate timing, which may reduce the maximum memory consumption.

In most cases of training some models, the purpose of backprop is to compute gradients of parameters, not of variables, so it is recommended to set this flag False.

cleargrad()[ソース]

勾配配列をクリアします。

copydata(var)[ソース]

指定したソース変数からデータ配列をコピーします。

This method just copies the data attribute from given variable to this variable, except that the copy is even done across the host and different devices.

パラメータ:var (Variable) – Source variable.
debug_print()[ソース]

格納されているデータの概要と変数の位置を表示します。

label

変数を表す短いテキストです。

set_creator(gen_func)[ソース]

与えられた関数の作成者であることを変数に通知します。

パラメータ:gen_func (Function) – Function object that creates this variable as one of its outputs.
to_cpu()[ソース]

データと勾配配列をCPUにコピーします。

to_gpu(device=None)[ソース]

指定したGPUにデータおよび勾配配列をコピーします。

パラメータ:device – Target device specifier. If omitted, the current device is used.
unchain_backward()[ソース]

Deletes references between variables and functions backward.

After this method completes, intermediate variables and functions that are not referenced from anywhere are deallocated by reference count GC. Also this variable itself deletes the reference to its creator function, i.e. this variable becomes root in the computation graph. It indicates that backprop after unchaining stops at this variable. This behavior is useful to implement truncated BPTT.

zerograd()[ソース]

勾配配列をゼロで初期化します。

バージョン v1.15 で撤廃: 代わりに cleargrad() を使用して下さい。