前回まで,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.データの準備
2.モデルの記述
3.最適化アルゴリズムの設定
4.学習
5.結果の出力
について小分けにして書いていきます.
今回はここまで
#参考
山下隆義
イラストでわかるディープラーニング 講談社
新納浩幸
Chainerによる実践深層学習~複雑なNNの実装方法~ オーム社