こんにちは!
現役パラレルワーカー フクコです。
前回の記事↓に続き
来年の2月の試験に向けてE資格試験勉強中のため
ゼロつくシリーズでおなじみ
オーライリーから出版されている
ディープラーニングの本格的な入門書でよくおススメされる
「ゼロからつくる Deep Learning」
この本↑を毎日5ページずつコツコツこなすと
約2か月間で今年中に終了するので
来年のE資格試験までにこれで基礎力をつけることにしました。(^^)
ついつい私は何もないとだらけてしまうので(笑)
毎日5ページ終わった後の記録とまとめを書いていこうと思います。
と、まとめに入る前に…
やる気を出すためのコトバをシェアします!!(主に私のやる気を出すために 笑)
「生き残る種とは、最も強いものではない。
最も知的なものでもない。
それは、変化に最もよく適応したものである。」
By チャールズ・ダーウィン 「種の起源」
私の大好き「種の起源」の本からチャールズ・ダーウィンの名言です。
結局、どんなに強かろうが、知的だろうが、変化できなければ時代に適応できなくなる…
というコトで、今日も変化し続けるために、私はノルマはこなしますよ! 笑
よし、今日も頑張るぞ~! お~!!
ではでは、いい加減まとめに入ります。笑
その前に本の目次の紹介です。
ゼロつくディープラーニングは、下記↓の合計8章で構成されています。
本の目次
- 1章 Python入門
- 2章 パーセプトロン
- 3章 ニューラルネットワーク
- 4章 ニューラルネットワークの学習
- 5章 誤差伝播法
- 6章 学習に関するテクニック
- 7章 畳み込みニューラルネットワーク
- 8章 ディープラーニング
ちなみに…
ゼロつくディープラーニングの第1章はPython入門のセクション(20ページ分)なので、
とりあえず今回私は飛ばし、第2章からまとめています。
今回もひきつづき第3章からでーす。
3.6 手書き数字認識
手書き数字認識には、順方向伝播(forward propagation)を使う。
初めに訓練データを使って重みパラメータの学習を行い、
推論時には先に学習パラメータを使って入力データの分類を行う。
3.6.1 MNISTデータセット
ココで使用するのは、MNISTという手書き数字の画像データセット。
MNISTは、機械学習の分野で最も有名なデータセットの1つ。
0~9までの手書きの数字画像で構成されている。
MNISTデータセットをPythonで読み込む方法は以下↓のようになる。
#MNISTデータセットを読み込むには # coding: utf-8 import sys, os sys.path.append(os.pardir) # 親ディレクトリのファイルをインポートするための設定 import numpy as np from dataset.mnist import load_mnist from PIL import Image #最初のデータの呼び出しは数分かかる… (x_train, t_train),(x_test, t_test) = load_mnist(flatten=True, normalize = False) #load_mnist関数で、MNISTデータを読みこみ #flatten = > 入力画像を平らにするかどうか #normalize =>入力画像を正規化(0~1)か、そのままにするか #それぞれのデータの形状を出力 print(x_train.shape)#答えは、(60000, 784) print(t_train.shape)#答えは、(60000,) print(x_test.shape)#答えは、(10000, 784) print(t_test.shape)#答えは、(10000,)
↑のload_mnist関数で、MNISTデータを読みこみ。
load_mnist 関数は、「訓練画像、訓練ラベル」、「テスト画像、テストラベル」という形式で
MNISTデータを返す。
データの確認もかねて
MNIST画像をPythonで表示してみると↓のようになる。
import sys, os sys.path.append(os.pardir) import numpy as np from dataset.mnist import load_mnist from PIL import Image def img_show(img): pil_img = Image.fromarray(np.uint8(img)) pil_img.show() (x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False) img = x_train[0] label = t_train[0] print(label)#答えは、5 print(img.shape)#(784,) #↓でreshapeする理由は、flatten = Trueで読みこんだ画像は # NumPy配列1列で格納されているから。reshapeで再変形する必要がある。 img = img.reshape(28, 28)#形状を画像サイズに変形 print(img.shape)#答えは、(28, 28) img_show(img)
↑で.reshapeする理由は、flatten = Trueで読みこんだ画像は
NumPy配列1列で格納されているから。
.reshapeで再変形する必要がある。
そして、
img_show(img)関数を実行すると
↑の手書き5の数字が表示される。
今日のまとめ
ハイ、今日はここまで!!
ということで、第3章のニューラルネットワークはまだ続きます。
第3章がやっと10%ぐらいになった感じ。ふう…
でもなんかこの本を終わるころには基礎力上がってる気がします。
本当にスクラッチからコードを書いているので。いつもはコピペですし。苦笑
引き続き頑張りまっす。
最後まで読んでくださり、ありがとうございます!
フクコ
ディープラーニング入門書おススメ本