class chainer.Parameter(initializer=None, shape=None, name=None)[source]

Parameter変数は、Linkに登録することができます。 

 

Parameterは Variableのサブクラスで、ほとんどの場合はVariableと同様に動作します。異なるのは、init_scope() のコンテキスト内で  Link オブジェクトの属性にアサインするだけで登録することが可能ということです。

 

Parameterは、Initializerによって初期化をサポートしています。2つの 初期化子を持つことが可能です。すなわち、1つはデータ配列で、もう1つは勾配配列です。 この初期化子 は、これらの配列の要素を埋める方法を明示するだけで、型情報は初期化ポイントで示されます。

 

あるParameterが登録されたLinkがGradientMethodを通過するとき、更新ルールがこのParameterにセットされます。この更新ルールは、どのようにして勾配配列を用いてParameterのデータ配列を更新するかを明治します。

 

Parameters:
  • initializer (Initializer or numpy.ndarray or cupy.ndarray) – データ配列の初期化子 。shapeが与えられた場合、この初期化子は直ちにデータ配列の初期化に用いられます。それ以外の場合、もしそれが配列であれば、直ちにデータ配列として用います。また、データ配列が初期化されていないままだった場合、この初期化子を使い  initialize()で初期化されます。この初期化子はスカラで与えられる可能性もあり、その場合、データ配列はそのスカラで埋められます。 その場合、float32 が用いられることに注意してください。
  • shape (int or tuple of int or None) –Parameterの型。 None の場合、初期化は initialize()の呼び出しまで延期される。.
  • name (str) –Parameterの名前
Variables:
  • initializer – データ配列の初期化子。初期化されていないVariableのデータ配列を初期化するために使用される。
  • update_rule – このVariable自身をParameterとして更新する更新ルールインスタンス。この属性がupdate_ruleとして設定される。

 

Methods

__getitem__(x, slices)[source]

配列から特定の型、軸、オフセットでスライスして要素を抽出する。

 

Parameters:
  • x (Variable) – スライスされる元のVariable 
  • slices (int, slice, Ellipsis, None, integer array-like, boolean array-like or tuple of them) – この値は、整数、スライス、Ellipsis is numpy.newaxis、 array-likeな整数, a boolean array-likeなBoolean、もしくはそれらのタプル。
Returns:

xをスライスした配列を含むVariable オブジェクト 

Note
整数配列がスライスに含まれる場合、CUDAのatomicAddによってサポートされている型のみサポートします。サポートされている型とは、numpy.float32、numpy.int32、numpy.uint32、numpy.uint64、 numpy.ulonglong です。

 

Note
複数のBoolean配列を含むスライスはサポートしません。

 

Note
indexingの詳細についてはNumpyドキュメントをお読みください。

 

__len__()[source]

データ配列の1次元目のデータ数を返します。

Returns: データ配列の1次元目のデータ数
Return type: int

 

__copy__()[source]
addgrad(var)[source]

与えられた元になるVariableから勾配配列を累算します。

このメソッドは与えられた配列の勾配を現在のVariable自身の勾配に加えます。この累算はホストを超えて、異なるデバイス間でもなされます。このVariableが初期化されていない data/grad 配列をもつ場合、このメソッドはそれを与えられたVariableの型で初期化し、勾配を累算します。

 

Parameters: var (Variable) –元になるVariable

 

backward(retain_grad=False, enable_double_backprop=False)[source]

現在のVariableから誤差逆伝播の処理を走らせます。

 

逆伝播の際、FunctionNode.backward()はこのVariableからスタートするバックワードグラフに現れる、それぞれのFunctionNodeオブジェクトから呼び出されます。 このバックワードグラフは後方への参照を示すもので、Variableノードからそのcreatorへ、Functionノードからそれらの入力Variableノードへの参照を示しています。 逆伝播は全て ルート・ノードで停止します。 Functionノードにはいくつかの入力の勾配としてNoneを設定するものがあります。そのような入力の場合、さらなる逆伝播は行われません。

 

このメソッドは、初期誤差配列の初期値としてgradを使用します。 ユーザは、このメソッドを呼び出す前に、手動で勾配配列を設定出来ます。 dataが1要素のみを含む(つまりスカラである)場合、gradNoneであり、このメソッドは自動的に誤差配列の初期値として1.0を補完します。 これは、スカラ損失値から逆伝播をスタートするときに役立ちます。

 

このメソッドは微分可能な逆伝播をサポートしませんのでご注意ください。勾配の勾配を計算する場合は、grad()をお使いください。

 

 

Parameters:
  • retain_grad (bool) –この値がTrueの場合、全ての中間変数の勾配配列が保持されます。それ以外では、中間変数のgradは、適切なタイミングでNoneにセットされます。 これで、最大メモリ消費量が減る可能性があります。 学習モデルのほとんどのケースで、逆伝播の目的はすべての変数ではなく、パラメータの勾配計算にあります。そのため、このフラグにはFalseをセットすることを推奨しています。
  • enable_double_backprop (bool) –  (v3.0で追加) この値がTrueの場合、バックプロパゲーション処理の全体の計算トレースが計算グラフに記録されるため、勾配計算の結果からさらにバックプロパゲーションを行うことが出来ます。 ただし、この処理を有効にすると、2番めの勾配計算に必要な中間変数について勾配を格納する必要があるため、メモリ消費量が拡大します。
cleargrad()[source]
copydata(var)[source]

えられたVariableの元データからデータ配列をコピーする。

このメソッドは引数で与えられたデータ配列を現在のVariableオブジェクト自身へコピーする。 このコピーは異なるデバイス間に(ホストを超えて、もしくはGPU上に)存在する配列の場合でもなされます。 このVariableが初期化されていないデータ配列を持っている場合、このメソッドは与えられたvariableのデータ配列でそれを初期化します。 同様に、もし引数で与えられたVariableが初期化されていないデータ配列を持つ時、このメソッドは現在のVariableオブジェクト自身(self)で、そのデータ配列を初期化します。 また、両方とも初期化されていない場合、このメソッドは何も行いません。

Parameters: var (Variable) – 元のVariable.
debug_print()[source]

Variableのロケーションと格納されたデータの概要を表示します。

initialize(shape)[source]

初期化されていないVariableを初期化する。

初期化されていないVariableはNoneをセットしたデータ配列で作成されます。このメソッドは、データ配列を生成し、初期化します。このVariable はこのメソッドが呼び出されるまで、unknownのままにしておくことが出来ます。

 

Parameters: shape (tuple of int) – データ配列の型
reshape(*shape)[source]

Variableの内容を変えずに型を変えて返す。リシェイプ。

See also
ドキュメント全文は、chainer.functions.reshape() をご覧ください。
retain_data()[source]

対応するvariable ノードに元になる配列を保持させます。

set_creator(gen_func)[source]

現在のVariableに与えられたFunctionが自身のcreatorであることを知らせます。

Parameters: gen_func (Function) – 現在のVariable自身を出力として生成したFunction オブジェクト
set_creator_node(fnode)[source]

与えられたノードが自身のcreatorであるということをVariableに知らせます。

Parameters: fnode (FunctionNode) –現在ののVariable自身を出力として持つFunctionノード
summary()[source]
to_cpu()[source]
to_gpu(device=None)[source]
transpose(*axes)[source]

 

コピーせずに指定された次元のデータを変換します。

See also
chainer.functions.transpose() を御覧ください。
unchain()[source]

このVariable自身のcreattorへの参照を削除します。

このメソッドは対応するVariableノードからのcreatorへの参照を削除します。unchain_backward()とは異なり、グラフを後方探索しません。

このメソッドは self.creator_node = None と同じです。

unchain_backward()[source]

Variable ノードと後方への functionsの間の参照を削除します。

このメソッドが完了したあと、どこからも参照されていない中間変数ノードとFunctionは参照をカウントしているGC(ガベッジコレクション)によって割当を解除されます。

このVariable自身も、ノードからcreatorであるFunctionへの参照を削除します。つまり、ノードは計算グラフのルートになります。これは、アンチェインしたあとにこのVariableで逆伝播が停止するということを示しています。この挙動は truncated BPTTの実装で有用です。

update()[source]

勾配と更新ルールを用いてデータ配列を更新します。

このメソッドは、アタッチされた更新ルールを用いてParameterを更新します。

zerograd()[source]
__eq__(other)[source]
__ne__(other)[source]
__lt__(other)[source]
__le__(other)[source]
__gt__(other)[source]
__ge__(other)[source]
__nonzero__()[source]
__bool__()[source]

Attributes

T

この変数の転置

array

元になるデータ配列。

numpy.ndarray 、 cupy.ndarray、もしくは変数が初期化されていない状態の場合はNone。

creator

この変数を生成したFunction 実装。

この変数 が旧スタイルのFunctionによって生成されている場合(つまり、Functionのサブクラスとして実装されている場合)、このプロパティはFunction オブジェクトを返します。

この variable が新しいスタイルのFunctionによって生成されている場合 (つまり <FunctionNode クラスのサブクラスとして実装されている場合)、このプロパティはnode オブジェクトを返します。

creator_node

 

この変数を生成したFunctionNode オブジェクト。

 

このプロパティはNoneを設定できる setterを持ちます。このプロパティにNoneを設定することは、 unchain()を呼び出すことと同じです。すなわち、この変数を、自身を生成したFunctionから開放します。

 

 

この setterは FunctionNode オブジェクトもこのVariable自信を生成したものとして受け入れます。例えば、まずNoneをこのプロパティにセットして、次に独自の値をセットするということが可能です。 

Note
無関係の FunctionNode() オブジェクトを設定することで、すぐにはエラーは発生しませんが、 このような動作は定義されていません。現在のVariableを生成していない FunctionNode() オブジェクトをこの属性に設定しないでください。
data

T元になるデータ配列 ( array  と同じもの).

この属性を直接使用することは止められています。; かわりに array をお使いください。. arrayを使用することで、  Variable と ndarrayをコード中で混ぜて書くとき、エラーを早期に発見できるでしょう。なぜなら、 ndarray は.data属性を持ちますが、.arrayを持たないからです。 

dtype
grad

 

現在のVariableの勾配配列。

このプロパティは勾配変数自身の代わりに、勾配変数のもとになる配列を返しますので注意してください。勾配変数を取得したり設定するためには、grad_var を使用してください。

grad_var

勾配変数(variable)

initializer = None
label

この変数(Parameter)を表す短いテキスト(ラベル)

name
ndim
node
rank
requires_grad

この属性は、後方への計算を行う際にgradをセットするかどうかを示しています。

shape
size