おひとりさま現役パラレルワーカーフクコろぐ

これからの会社員は、複数の収入源をもとう! 会社に翻弄されずアナタらしく仕事ができる。 そんなパラレルワーカーを広めるフクコのブログです。

【文系プログラミング初心者deE資格】ゼロつくディープラーニング #6

f:id:fukuko-parallel-work:20211105203656j:plain


こんにちは!

現役パラレルワーカー フクコです。

f:id:fukuko-parallel-work:20210212204833p:plain



前回の記事↓に続き

www.fukuko-parallel-work.com



来年の2月の試験に向けてE資格試験勉強中のため


ゼロつくシリーズでおなじみ

オーライリーから出版されている

ディープラーニングの本格的な入門書でよくおススメされる

「ゼロからつくる Deep Learning

f:id:fukuko-parallel-work:20211029220008j:plain




この本↑を毎日5ページずつコツコツこなす

約2か月間で今年中に終了するので

来年のE資格試験までにこれで基礎力をつけることにしました。(^^)


ついつい私は何もないとだらけてしまうので(笑)

毎日5ページ終わった後の記録とまとめを書いていこうと思います。


と、まとめに入る前に…

やる気を出すためのコトバをシェアします!!(主に私のやる気を出すために 笑)



「生き残る種とは、最も強いものではない。

 最も知的なものでもない。

 それは、変化に最もよく適応したものである。」

By チャールズ・ダーウィン種の起源



私の大好き種の起源」の本からチャールズ・ダーウィンの名言です。

結局、どんなに強かろうが、知的だろうが、変化できなければ時代に適応できなくなる…

というコトで、今日も変化し続けるために、私はノルマはこなしますよ! 笑


よし、今日も頑張るぞ~! お~!! 


ではでは、いい加減まとめに入ります。笑



その前に本の目次の紹介です。

ゼロつくディープラーニングは、下記↓の合計8章で構成されています。


本の目次

  • 5章 誤差伝播法
  • 6章 学習に関するテクニック


ちなみに…

ゼロつくディープラーニング第1章はPython入門のセクション(20ページ分)なので、

とりあえず今回私は飛ばし、第2章からまとめています。

今回もひきつづき第3章からでーす。

3.5.4 出力層のニューロンの数


出力層のニューロンの数は、解くべき問題に応じて変える必要がある。

例えば、10クラス分類問題なら、出力層のニューロンは10コに設定する。


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)関数を実行する


f:id:fukuko-parallel-work:20211105203447j:plain



↑の手書き5の数字が表示される。


今日のまとめ


ハイ、今日はここまで!!

ということで、第3章のニューラルネットワークはまだ続きます。

第3章がやっと10%ぐらいになった感じ。ふう…

でもなんかこの本を終わるころには基礎力上がってる気がします

本当にスクラッチからコードを書いているので。いつもはコピペですし。苦笑

引き続き頑張りまっす。


最後まで読んでくださり、ありがとうございます!

フクコ


ディープラーニング入門書おススメ本