chainer2プログラミングの全体図
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| chainer2プログラミングの全体図 [2017/11/02] – [Trainerを利用する場合のChainer全体図] adash333 | chainer2プログラミングの全体図 [2018/10/07] (現在) – 外部編集 127.0.0.1 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ===== Chainerプログラミングの全体図 ===== | ===== Chainerプログラミングの全体図 ===== | ||
| + | <wrap hi> | ||
| [[Chainer2プログラミングの全体図]] | [[Chainer2プログラミングの全体図]] | ||
| -[[(1)Chainer2を使用するためのimport文]] | -[[(1)Chainer2を使用するためのimport文]] | ||
| 行 11: | 行 12: | ||
| - | 必ずしもこの書き方ではなくてもよいらしいです。 | + | あくまで一例として記載させていただきます。 |
| WEB上のMNISTのサンプルコードを読んでいると、Kerasだと皆ほぼ同じコードになるのに、Chainerだと人によってコードが結構異なる感じで、初心者には本当にとっつきにくいイメージでした。 | WEB上のMNISTのサンプルコードを読んでいると、Kerasだと皆ほぼ同じコードになるのに、Chainerだと人によってコードが結構異なる感じで、初心者には本当にとっつきにくいイメージでした。 | ||
| 行 43: | 行 44: | ||
| class MyModel(Chain): | class MyModel(Chain): | ||
| def __init__(self): | def __init__(self): | ||
| - | | + | super(MyModel, |
| # パラメータを含む関数の宣言 | # パラメータを含む関数の宣言 | ||
| ) | ) | ||
| - | | ||
| def __call__(self, | def __call__(self, | ||
| # モデルを記載 | # モデルを記載 | ||
| 行 52: | 行 52: | ||
| (4)#4 モデルと最適化アルゴリズムの設定 | (4)#4 モデルと最適化アルゴリズムの設定 | ||
| model = MyModel() | model = MyModel() | ||
| + | model = L.Classifier(model) | ||
| optimizer = optimizers.Adam() | optimizer = optimizers.Adam() | ||
| optimizer.setup(model) | optimizer.setup(model) | ||
| + | (5)#5 学習と結果の出力 | ||
| # UpdaterにIteratorとOptimizerを渡す | # UpdaterにIteratorとOptimizerを渡す | ||
| from chainer import training | from chainer import training | ||
| - | |||
| updater = training.StandardUpdater(train_iter, | updater = training.StandardUpdater(train_iter, | ||
| - | |||
| - | (5)#5 学習と結果の出力 | ||
| # TrainerにUpdaterを渡す | # TrainerにUpdaterを渡す | ||
| trainer = training.Trainer(updater, | trainer = training.Trainer(updater, | ||
| 行 66: | 行 65: | ||
| from chainer.training import extensions | from chainer.training import extensions | ||
| # trainer.extend()で、学習の進行状況を表すプログレスバーや、lossのグラフ化と画像の保存などを行う | # trainer.extend()で、学習の進行状況を表すプログレスバーや、lossのグラフ化と画像の保存などを行う | ||
| + | # 学習を実行 | ||
| trainer.run() | trainer.run() | ||
| 行 77: | 行 76: | ||
| import numpy as np | import numpy as np | ||
| import chainer import serializers | import chainer import serializers | ||
| - | |||
| # Network definition | # Network definition | ||
| # train.py と同じModelを定義 | # train.py と同じModelを定義 | ||
| - | |||
| # modelをClassifier化し、train.pyでの学習結果のパラメータをloadする | # modelをClassifier化し、train.pyでの学習結果のパラメータをloadする | ||
| model = L.Classifier(MLP(1000, | model = L.Classifier(MLP(1000, | ||
| 行 111: | 行 108: | ||
| ==== Chainer2でMNISTのコード ==== | ==== Chainer2でMNISTのコード ==== | ||
| 以下にコードそのものを記載します。非常に長く取っつきにくいコードですが、次回以降、順に解説させていただきます。 | 以下にコードそのものを記載します。非常に長く取っつきにくいコードですが、次回以降、順に解説させていただきます。 | ||
| + | |||
| + | なお、今回はMNISTのデータセットを、Chainerがあらかじめ用意したものを使って学習を行いますが、画像データからChainer用データセットに変換する方法については、[[Chainer2用自前データの準備]]をご覧下さい。(かなりややこしいので、最初は、以下のコードを写経してから、自前データの準備に進むのがお勧めです。) | ||
| train_mnist_mlp.py | train_mnist_mlp.py | ||
| 行 126: | 行 125: | ||
| </ | </ | ||
| + | 次のページから、上記コードについて順番に解説していきます。 | ||
| 次 [[(1)Chainer2を使用するためのimport文]] | 次 [[(1)Chainer2を使用するためのimport文]] | ||
| 行 164: | 行 163: | ||
| 前 [[Chainer2.0をWindowsにインストール]] | 前 [[Chainer2.0をWindowsにインストール]] | ||
| - | 目次 | + | |
| + | <wrap hi> | ||
| [[Chainer2プログラミングの全体図]] | [[Chainer2プログラミングの全体図]] | ||
| -[[(1)Chainer2を使用するためのimport文]] | -[[(1)Chainer2を使用するためのimport文]] | ||
| 行 173: | 行 173: | ||
| -[[(6)結果の出力|(6)学習結果のパラメータの保存(Chainer)]] | -[[(6)結果の出力|(6)学習結果のパラメータの保存(Chainer)]] | ||
| -[[(7)推測|(7)推測(Chainer)]] | -[[(7)推測|(7)推測(Chainer)]] | ||
| + | |||
| + | |||
chainer2プログラミングの全体図.1509658840.txt.gz · 最終更新: 2018/10/07 (外部編集)
