ユーザ用ツール

サイト用ツール


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

文書の過去の版を表示しています。


Chainerプログラミングの全体図(1)Trainerを利用しない場合

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

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

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

Trainerを利用しない場合のChainer全体図

https://books.google.co.jp/books?id=n342DwAAQBAJ&pg=PA42&lpg=PA42&dq=chainer+%E5%85%A8%E4%BD%93%E5%9B%B3&source=bl&ots=1ybBZW8I4N&sig=X7mUk9h3Ib7P6uk7uKv5F90l-vM&hl=ja&sa=X&ved=0ahUKEwjQo5u1rfrWAhUFI5QKHSJaB5kQ6AEINTAC#v=onepage&q=chainer%20%E5%85%A8%E4%BD%93%E5%9B%B3&f=false

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

(2)#2 データの準備・設定

(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 学習(Trainerを利用しない場合)
for epoch in range(繰り返し回数)
    データの加工
    model.cleargrads() #勾配初期化
    loss = model(...)  #誤差計算
    loss.backward      #勾配計算
    optimizer.update   #パラメータ更新

(6)#6 結果の出力

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

<html>
<script src=“https://gist.github.com/adash333/cc498c292dcc36b55f320a41a4d4dcf0.js”></script>
</html>

Predict_mnist_mlp.py

<html>
<script src=“https://gist.github.com/adash333/1505e2625906aafdc95c36b05b9d5e75.js”></script>
</html>

参考文献

<html>
<iframe style=“width:120px;height:240px;” marginwidth=“0” marginheight=“0” scrolling=“no” frameborder=“0” src=“rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=twosquirrel-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=as_ss_li_til&asins=B0765Z6216&linkId=49eb04597478fb1258ccd5505496e554”></iframe>
</html>

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プログラミングを理解する上で避けて通れないので、頑張ってやってみたいと思います。

===== リンク =====

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

Chainer2.0をWindowsにインストール

目次
-Chainer2.0をWindowsにインストール
-Chainer2プログラミングの全体図
-(1)Chainer2を使用するためのimport文
-(2)データの準備・設定
-(3)モデルの記述
-(4)モデルと最適化アルゴリズムの設定
-(5)学習(Trainerを利用しない場合)
-(6)結果の出力
-(7)推測
-Chainer2機械学習成果をWEBで公開

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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki