April 2020
Intermediate to advanced
552 pages
6h 13m
Japanese
前ステップで私たちは、Variableクラスにbackwardメソッドを追加しました。ここでは処理効率の改善と今後の拡張を見据えて、backwardメソッドを別の実装方式へと変更します。
再掲になりますが、私たちはVariableクラスのbackwardメソッドを次のように実装しました。
steps/step07.py
classVariable:...# コードを省略defbackward(self):f=self.creatoriffisnotNone:x=f.inputx.grad=f.backward(self.grad)x.backward()
ここで注目したいのは、backwardメソッドの中で、(入力側へ)1つ前の変数のbackwardメソッドが呼ばれている点です。これによって、「backwardメソッドの中でbackwardメソッドが呼ばれ、その呼ばれた先のbackwardメソッドでまたbackwardメソッドが呼ばれ、...」という処理が続きます(関数self.creatorがNoneになる変数が見つかるまで続きます)。これは再帰的な構造です。
![]() |
|
本書では、ページ数を節約するため、コードを一部省略して掲載する場合があります。その場合は、省略した箇所を「 |
Read now
Unlock full access