ユーザ用ツール

サイト用ツール


サイドバー

目次

機械学習とは

プログラミング無しで機械学習

機械学習プログラミング入門

初めてのKeras2.0

初めてのTensorflow(YouTube)

初めてのChainer2.0

初めてのビットコイン

ビットコイン用語集

初めてのSolidityプログラミング

初めての医療統計

初めてのエクセルで医療統計

初めてのEZRで医療統計

初めてのRStudioでレポート作成

スマホアプリ作成ソフトIonic3

スマホアプリ作成ソフトIonic4

Ionicのためのjavascript tips

その他

NiftyCloudMobileBackend

税金など

Dokuwiki

chainer2プログラミングの全体図

以前のリビジョンの文書です


Chainerプログラミングの全体図

Chainer2プログラミングの全体図

必ずしもこの書き方ではなくてもよいらしい。。。

WEB上のMNISTのサンプルコードを読んでいると、Kerasだと皆ほぼ同じコードになるのに、Chainerだと人によってコードが結構異なる感じで、初心者には本当にとっつきにくいイメージ。

Chainer 1.11.0から、Trainerというものが導入されたらしく、このサイトでは、Trainerを用いた記載方法のみ解説します。(筆者がTrainerを使用しないやり方を実行できなかったため。)

Trainerを利用する場合のChainer全体図

いきなりTrainerと言われてもさっぱりだと思いますが、コードをコピペして1個ずつ理解するのみです!

Trainerの構造は、以下のようになっているらしいです。
(出典:Chainerビギナー向けチュートリアル Vol.1

(1)#1 Chainerを使用するためのimport文

(2)#2 データの準備・設定
from chainer import iterators
# trainerを利用するために、Iteratorを定義してdatasetにアクセスできるようにする

(3)#3 モデルの記述
class MyModel(Chain):
    def __init__(self):
        super(MyModel,self).__init__(
            # パラメータを含む関数の宣言
        )
    
    def __call__(self, ...):
    # モデルを記載

(4)#4 モデルと最適化アルゴリズムの設定(ほぼお約束の3行)
model = MyModel()
optimizer = optimizers.Adam()
optimizer.setup(model)

(5)#5 学習
for epoch in range(繰り返し回数)
    データの加工
    model.cleargrads() #勾配初期化
    loss = model(...)  #誤差計算
    loss.backward      #勾配計算
    optimizer.update   #パラメータ更新

(6)#6 結果の出力とパラメータの保存

(7)

Chainerプログラミングの全体図(2)Trainerを利用する場合

Trainerについては、以下のスライドが非常に参考になります。(といっても、私にはスライド内容の5%くらいしか理解できていない気がします、、、)

Chainer の Trainer 解説と NStepLSTM について Published on Apr 11, 2017
https://www.slideshare.net/Retrieva_jp/chainer-trainer-nsteplstm

Trainerを利用する場合のChainer全体図

「Trainerを利用する場合の全体図」 (参考:Chainer v2による実践深層学習 新納浩幸 p54)

# train.py
(1)#1 Chainerを使用するためのimport文

(2)#2 tuple_datasetによるデータの準備・設定

(3)#3 モデルの記述
class MyModel(Chain):
    def __init__(self):
        super(MyModel, self).__init__(
        # パラメータを含む関数の宣言
    )

    def __call__(self, x,t):
       # モデルを記述

(4)#4 モデルと最適化アルゴリズムの設定(ほぼお約束の3行)
model = MyModel()
optimizer = optimizers.Adam()
optimizer.setup(model)

(5)#5 学習(Trainerを利用する場合)
iterator = iterators.SerialIterator(tdata, bsize)
updater = training.StandardUpdater(iterator, optimizer)
trainer = training.Trainer(updater, (ep, ‘epoch’))
trainer.extend(extensions.ProgressBar())

trainer.run()

(6)#6 結果の出力

Chainer2でMNISTのコード

以下にコードそのものを記載します。非常に長く取っつきにくいコードですが、次回以降、順に解説させていただきます。

train_mnist_mlp.py

Predict_mnist_mlp.py

(1)Chainer2を使用するためのimport文

参考文献

https://qiita.com/abechi_17/items/b271b7042fae126616d7
Chainer 2.0 のMNISTサンプルで推論を動かす abechi_17 2017年07月01日に投稿

Chainer 2.0 のMNISTサンプル(公式Document) https://github.com/chainer/chainer/tree/v2.0.0/examples/mnist

Chainerの基本的な使い方
https://github.com/dsanno/deep-learning-study/blob/master/doc/chainer_basic.md

次節以降

MNISTを例に、一つずつ解説させていただきたいと思います。

いつもあまり面白くないMNISTですが、Chainer2プログラミングを理解する上で避けて通れないので、頑張ってやってみたいと思います。

リンク

chainer2プログラミングの全体図.1509622995.txt.gz · 最終更新: 2018/10/07 (外部編集)