April 2020
Intermediate to advanced
552 pages
6h 13m
Japanese
前ステップで私たちは、Layerクラスを作りました。Layerクラスにはパラメータを管理する仕組みがあるので、Layerクラスを使えば、私たち自身がパラメータを扱わなくても良くなります。しかし、Layerインスタンス自体の管理は必要です。たとえば、10層のニューラルネットワークを実装するには、10個のLinearインスタンスを管理しなければなりません(それは、いくらか面倒です)。ここでは、そのような作業の負担を軽減するために、現在のLayerクラスを拡張します。
現状のLayerクラスは、複数のParameterを持つことができます。ここでは、さらに、Layerクラスが「別のLayer」も保持できるように拡張します。その関係を図で表すと、図45-1のようになります。
図45-1 新しいLayerクラス
図45-1のとおり、Layerの中に、別のLayerが入る構造です。つまりは「入れ子」の構造です。本ステップの目標は、図45-1の一番上のLayerから、その中にあるパラメータをすべて取り出せるようにすることです。それには、現在のLayerクラスを次のように変更します。
dezero/layers.py
classLayer:def__init__(self):self._params=set()def__setattr__(self,name,value):ifisinstance ...
Read now
Unlock full access