April 2020
Intermediate to advanced
552 pages
6h 13m
Japanese
本ステップは、前ステップの実装編です。まずは、順伝播時に「世代」を設定する実装を行います。そして、逆伝播の際には、その「世代」の数が大きい順に関数を取り出すようにします。それによって、どのような複雑な計算グラフでも正しい順番で逆伝播が行われます。
はじめに、VariableクラスとFunctionクラスに、インスタンス変数のgenerationを追加します。このgenerationは、どの“世代”の関数(もしくは変数)であるかを示します。それでは、はじめにVariableクラスのコードから示します。Variableクラスの追加コードは次のとおりです。
steps/step16.py
classVariable:def__init__(self,data):ifdataisnotNone:ifnotisinstance(data,np.ndarray):raiseTypeError('{} is not supported'.format(type(data)))self.data=dataself.grad=Noneself.creator=Noneself.generation=0defset_creator(self,func):self.creator=funcself.generation=func.generation+1...
Variableクラスは、generationを0で初期化します。そして、set_creatorメソッドが呼ばれた際に、その親となる関数より1だけ大きい世代となるように設定します。たとえば図16-1 ...
Read now
Unlock full access