ニューラルネットワークの中には、〜またはさらにその集まりで構成されるような大変複雑な物があります。(例: Google のInception-v4モデル https://research.google.com/pubs/pub45169.html) Chainerでは、GoFのデザインパターンの一つであるCompositeパターンを利用して、このような複雑なニューラルネットワークも柔軟に表現できるようになっています。
chainer.Linkは「入力に対して出力を出す」という共通のインターフェースを提供しており、そのサブクラスであるchainer.Chainも同様です。例えば、Linkオブジェクト l1
, l2
と Chainオブジェクト c1
があった時に、
l1(l2(c1)
のように出力を次のオブジェクトの入力として数珠つなぎにしていくことが出来ます。