Chainerの勉強中

投稿者: | 2017年11月19日

とてもわかりやすい本です。読みながら勉強。

途中でお世話になったサイト 〜Pythonの基礎知識〜

Pythonの知識ゼロなので、適宜ググりながら読み進める。
Python: オブジェクトのメソッド一覧を取得する
Pythonでのファイル操作
クラス継承
Chainer v1からChainer v2への移行
Python入門 – リスト・タプル・辞書
__future__ モジュールについて

Rubyと違うところなど

・Pythonでは関数はオブジェクト
・Pythonでは空白インデントが意味を持つ
・Pythonではファイルが自動的にモジュールになる

Chainerのバージョン確認

Configオブジェクト

trainモードとtestモード

Variableクラス

numpy.ndarrayまたはcupy.ndarrayを梱包している。
どの関数から生成されたか記憶してあるため、計算グラフを構成できる。

ネットワークのグラフを描写する

誤差逆伝播の対象にするかどうか

Functionクラス

大量にあってどれが大事なのかよくわからない
https://docs.chainer.org/en/stable/reference/functions.html

Linkクラス

全結合のもの

p77 Chainerの主要クラスの関係性が秀逸

Optimizerクラス

Trainerクラス

なんとなく半分ぐらいわかった気になったので、exampleのコードを改変して遊んでみる

最小限MNIST

この資料が大変よい
Chainer: ビギナー向けチュートリアル Vol.1

MNISTでCNNもやってみる

Mnistのデータを3次元で呼ぶ必要がある。RubyとちがってMapできないから面倒だなと思ってforループで変換していたが、
chainer.datasets.get_mnist(ndim=3)
すればよいのだ。

MNISTのはずれ画像を眺めてみる

人間でも間違えそうなものと、人間だったら間違えないものが含まれている。とくに8は間違いすぎていると思う。
全体的に値の少ない文字のほうが間違いにくいという傾向があるように思われて、とても興味深い。










データセットクラス

データセットもクラスであると。(numpy配列, 正解ラベル)タプルの集合みたいになっている。
あらかじめchainerに同封されているサンプルデータもある。
・MNIST dataset
・CIFAR-10 (3, 32, 32) 50000 10000
・CIFAR-100 (3, 32, 32) 50000 10000
・Penn Tree Bank dataset as long word sequences (929589, 73760, 82430)
・Penn Tree Bank word vocabulary (dict 単語=>数字)
・SVHN dataset (3, 32, 32) 73257 26032

オプティマイザ

・AdaDelta
・AdaGrad
・Adam
・MomentumSGD
・NesterovAG
・RMSprop
・RMSpropGraves
・SGD
・SMORMS3

イテレータクラス

以前は自分でfor文書いてたらしい
・SerialIterator
・MultiprocessIterator

アップデータ

・Updater
・StandardUpdater
・ParallelUpdater(parallel GPU Updater)
・MultiprocessParallelUpdater(multiprocess parallel GPU Updater)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です