切り絵が趣味の僕がプログラムや創作物について書き溜めるブログ

絵やモデリングやプログラミングなど僕が作った物について。アニメの感想や心動かされたきっかけなどを書き溜めるブログです。Boothで3Dアバターの販売もしていますhttps://paw.booth.pm/

【python】初めて多層パーセプトロンを書いた

ニューラルネットワーク勉強中の

パウで~す。

 

探せばプログラムはでてくるが

なかなか理解できない><

 

今回は

Chainer v4 ビギナー向けチュートリアル

参考にして勉強しました。

 

(プログラム言語はpython,パッケージはchainer v4を使用)

 

class MLP(chainer.Chain):


  def __init__(self, n_mid_units=100,n_out=10):
    super(MLP, self).__init__()

# パラメータを持つ層の登録
    with self.init_scope():
      self.l1 = L.Linear(None, n_mid_units)
      self.l2 = L.Linear(n_mid_units, n_mid_units)
      self.l3 = L.Linear(n_mid_units, n_out)

    def __call__(self, x):
# データを受け取った際のforward計算を書く
    h1 = F.relu(self.l1(x))
    h2 = F.relu(self.l2(h1))
    return self.l3(h2)

 

このプログラムの意味を理解するのに時間がかかった><

ChainerのChainをもっと楽に書く – ご注文は機械学習ですか?ここに

chainer.Chainのモデル定義の書き方があって

助かりました。

 

これで僕でも好きな層数に書き換えられる!!

 

chainerは最初からいろんなディープラーニング

計算式が入っているらしくSGD、Adamなど

少し名前を変えるだけで

実装できるっぽいです

 

便利!!

(参考文献:Optimizer : 深層学習における勾配法について

 

その計算式を自作するとしたらどうやってやるのか...??

とりあえず次は

畳み込みニューラルネットワークに挑戦!!