LoginSignup
8
11

More than 5 years have passed since last update.

Chainerを用いた簡単なニューラルネットワーク実装

Posted at

前回まで,Chainerを構成する基本オブジェクトについて書いてきました.
今回からは,それらのオブジェクトを使って実際にニューラルネットワークを実装していきたいと思います.

ニューラルネット全体図

ニューラルネットワークを構成するプログラムを書く場合,その全体図は大まかに以下の5つから構成されます.

1.データの準備

モデルに学習させるためのデータを用意するプログラムです.文章だったり,画像だったり,音声だったり,データは色々とありますが,構築するニューラルネットワークに適したデータの形に加工します.

2.モデルの記述

Chainクラスを継承したクラスを記述します.
詳しいことはこちらを参照.

class MyChain(Chain):
    def __init__(self):
        super(MyChain, self).__init__(
            パラメータを含む関数の宣言
        )
    def __call__(self, x, y):
        損失(誤差)関数

3.最適化アルゴリズムの設定(SDGやAdamなど)

モデルの最適化(誤差を最小化)する処理を記述します.
詳しいことはこちらを参照

model = MyChain()
optimizer = optimizer.Adam()
optimizer.setup(model)

4.学習

指定した回数だけ学習を行います.ものによっては早期終了など行う場合がありますが,今回は単純にepoch(学習回数)を指定してあげます.勾配初期化からパラメータ更新まではほぼお約束のコードみたいです.

for epoch in range(繰り返し回数):
    model.zerograds()           #勾配初期化
    loss = model(train, target) #誤差計算
    loss.backward()             #勾配計算
    optimizer.update()          #パラメータ更新
  1. 結果の出力

学習結果のモデルを保存したり,テストを行ったりします.

次回からの方向性

一つの記事にあれこれ情報を詰め込みたくないので,次回から

1.データの準備
2.モデルの記述
3.最適化アルゴリズムの設定
4.学習
5.結果の出力

について小分けにして書いていきます.
今回はここまで

参考

山下隆義
イラストでわかるディープラーニング 講談社
新納浩幸
Chainerによる実践深層学習~複雑なNNの実装方法~ オーム社

8
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
11