ユーザ用ツール

サイト用ツール


2_データの準備・設定

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


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

Chainer2でMNIST目次

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

#3 モデルの記述
class MyModel(Chain):
    def __init__(self):
        super(MyModel,self).__init__(
            # パラメータを含む関数の宣言
        )
    
    def __call__(self, ...):
    # 損失関数
    
    def fwd(self, x):
    # 順伝播? ここにもモデルを記載、予測するときにこの関数を用いる

開発環境

Windows 8.1

Anaconda

Python 3.5

Chainer 2.0

Chainerのインストール方法はChainer2.0をWindowsにインストールをご覧下さい。

このページは、(1)Chainer2を使用するためのimport文の続きであり、今回は、MNISTのデータの準備・設定を行っていきます。

データの準備が難しいところなのですが、今回は、最初なので、Chainerであらかじめ用意されているMNISTデータセットを利用します。

オリジナルデータセットの準備については、後日、Chainer2用自前データの準備
に記載予定です。

手順

0. 前回終了時の画面

(1)Chainer2を使用するためのimport文終了時の、以下のような状態から始めます。

1. データセットの準備

以下のコードを入力して、Shift + Enterを押します。最初は、MNISTの画像データなどがダウンロードされるので、時間がかかります。

from chainer.datasets import mnist

# データセットがダウンロード済みでなければ、ダウンロードも行う
train, test = mnist.get_mnist(withlabel=True, ndim=1)

# matplotlibを使ったグラフ描画結果がnotebook内に表示されるようにします。
%matplotlib inline
import matplotlib.pyplot as plt

# データの例示
x, t = train[0]
plt.imshow(x.reshape(28, 28), cmap='gray')
plt.show()
print('label:', t)

以下のような画面になります。(以下の画面は、2回目以降の画面となります。最初は、「Downloading from http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz…」といった感じの文字が4行続くと思います。)

順に解説していきます。

from chainer.datasets import mnist

# データセットがダウンロード済みでなければ、ダウンロードも行う
train, test = mnist.get_mnist(withlabel=True, ndim=1)

Chainerが用意しているchainer.datasetsから、手書き数字MNISTのデータをダウンロードして読み込みます。

MNISTとは何か、またこれから何をやろうとしているのかについては、以下のサイトが非常に分かりやすいです。

http://exceldeeplearning.blog.jp/archives/1411297.html

手書き数字MNISTは、本来は28x28pixelのグレースケールの画像と、それが何の数字であるかの正解ラベルのセットです。この画像と正解ラベルのセットが、training用の6万セット、test用の1万セットとなっています。

ただ、画像のままではChainerでは読み込めません。そのため、画像を0~255の値をとる284個の数字が1列に並んだ配列(ndim=1)に変換(さらに正規化といって全部255で割る)したものと、正解ラベルのセット(withlabel=True)に変換したものを、chainer.datasets.get_mnist()関数で呼び出して、trainとtestという変数に代入しています。

なかがどんなカタチになっているかというと、一つの行(train[0])に
[[.234809284, .324039284, .34809382 …. .04843098], 3]

というように、左に入力値と右にその答え(ラベル値)がセットで入っています。

また、chainerではtrainで学習して、testで試してみて正解率を見ていく感じになります。

出典:https://qiita.com/tommyfms2/items/a2f23acbf515fba3495b

# matplotlibを使ったグラフ描画結果がnotebook内に表示されるようにします。
%matplotlib inline
import matplotlib.pyplot as plt

# データの例示
x, t = train[0]
plt.imshow(x.reshape(28, 28), cmap='gray')
plt.show()
print('label:', t)

Chainerが用意しているMNISTデータセットを用いる手順は上記でおしまいです。

初めての場合は、次は、とりあえず、(3)モデルの記述に進んでください。

chainer.datasets.get_mnist関数について

Chainerについては、できれば、公式マニュアルを読むのが一番ですが、残念ながら英語です。日本発祥なのだから、マニュアルの日本語Versionもぜひ欲しいところなのですが、、、Kerasは日本語マニュアルがあるのに、、、

Docs » Chainer Reference Manual » Dataset examples » chainer.datasets.get_mnist

https://docs.chainer.org/en/stable/reference/generated/chainer.datasets.get_mnist.html

import matplotlib.pyplot as pltについて

かなり面倒ですが、コードを理解するためには、import文の役割を一つずつ調べていくのが王道です。

Matplotlibは、

作成中

参考文献

Chainer: ビギナー向けチュートリアル Vol.1
mitmul 2017年05月18日に更新
https://qiita.com/mitmul/items/eccf4e0a84cb784ba84a

Chainerv2による実践深層学習、新納浩幸

上のMNISTのチュートリアルだと、Chainerがあらかじめ用意しているデータを使用しているだけで、自前のデータを扱う方法がさっぱりわからないので、以下の解説を参考にする必要がある。

chainerのデータセットの作り方 LinearやCNN

https://qiita.com/tommyfms2/items/c3fa0cb258c17468cb30

自前のデータでchainerのデータセットの作り方

作成中。下記ページを参考にする。

chainerのデータセットの作り方 LinearやCNN

https://qiita.com/tommyfms2/items/c3fa0cb258c17468cb30

ChainerのCNNにおけるデータセットの作り方

2017年8月4日 hiroki7122

http://enjoy-programing.com/chainer%E3%81%AEcnn%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9/

chainerのデータセットの作り方 LinearやCNN

tommyfms2 2017年10月07日に更新

https://qiita.com/tommyfms2/items/c3fa0cb258c17468cb30

リンク

2_データの準備・設定.1509708912.txt.gz · 最終更新: 2018/10/07 (外部編集)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki