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

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

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

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

こんにちは!

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

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



前回の記事↓に続き
www.fukuko-parallel-work.com




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


E資格とは?の記事はコチラ↓

www.fukuko-parallel-work.com




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

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

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

「ゼロからつくる Deep Learning」本


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





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

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

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


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

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


と、まとめに入る前に…

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

しっかりしろ!!泣くな!!逃げるな!!


そんな行動に意味は無い!!


by じいちゃん(桑島慈悟郎)


私の大好きな鬼滅の刃から

じいちゃん、こと桑島慈悟郎の名言です。


ホント、泣いても、逃げても、意味がないんですよね…苦笑

私も最初の頃、

仕事がイヤでイヤで仕方なくて、

責任を誰かにおしつけて逃げたりしてましたが、

結局のところ、

当初の10倍、100倍以上重くなって自分に返ってきましたよ。笑


自分のお題としてやってくるものは、

一見、自分には無理難題に見えたとしても


おそらく

その時点で背伸びすれば何とか自分でこなせるもの

なことが多いんです。




こなしている間は、

キツイかもしれない…

泣きたくなるかもしれない…


でも、結局

自分のことは自分で完結するしかない!


そして、

やってみないとできるかどうかなんて、わからない!

だからとりあえずやってみる!!


じいちゃん、どうもありがとう! (^0^)

今日もやる気が出てきました! 

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

というコトで、

私もキツイし、泣きたくなる時もありますが、今日も毎日のノルマはゼッタイこなしますよ! 笑


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



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

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

本の目次

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



ちなみに…

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

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

現在は、第7章 畳み込みニューラルネットワークで~す。



第7章 畳み込みニューラルネットワーク つづき


第7章のテーマは、

畳み込みニューラルネットワーク(Convolutional Neural Network: CNN)

7.2.7 バッチ処理


↓の図の例のとおり、

畳み込み演算でも、バッチ処理に対応できる


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


7.3 プーリング層


プーリングタテとヨコ方向の空間を小さくする演算


プーリングの種類

1.Max Pooling:最大値

2.Average Pooling:平均


↓の図の例のように

Max Poolingの場合

ストライドを2x2とすると、最大値は2となる

よって、

左上の数字は、2となる


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


7.3.1 プーリング層の特徴


プーリング層には以下↓のとおりの特徴がある。

  • 学習するパラメータがない:プーリング層は畳み込み層と違って、学習するパラメータを持たない
  • チャンネル数は変化しない:入力データと出力データのチャンネル数は変わらない
  • 微小な位置変化に対してロバスト:入力データの小さなズレに対して、プーリングは同じような結果を返す

7.4 Convolution / Poolingレイヤの実装

畳み込み層やPooling層の実装をPythonで行うを準備をしていく

7.4.1 4次元配列


CNN(畳み込みニューラルネットワーク)では、

各層を流れるデータは4次元のデータ


たとえば、

データの形状が(10, 1, 28, 28)だとすると

これは、高さ=28、横幅=28、1チャンネル、データが10個あるということ。

これをPythonで実装すると↓のとおり。

# 7.4.1 4次元配列
# 各層を流れるデータは4次元のデータ
# データの形状が(10, 1, 28, 28)

import numpy as np

x = np.random.rand(10, 1, 28, 28)#ランダムにデータの形状が(10, 1, 28, 28)のデータを生成
x.shape


1つめのデータにアクセスする場合、↓のように実装する。

# 7.4.1 4次元配列
# 1つ目のデータにアクセスしたい場合

x[0].shape#答えは、(1, 28, 28)

1つめのデータの1チャンネルめの空間データにアクセスする場合

↓のように実装する。

# 7.4.1 4次元配列
# 1つめのデータの1チャンネルめの空間データにアクセスする場合

x[0,0]

↑の実装の答えの例は、↓のとおり。

array([[4.32165625e-01, 9.47095032e-01, 1.86474524e-01, 3.91455977e-01,
5.12681749e-01, 6.30251318e-01, 4.76077665e-01, 1.19922228e-01,
4.56386557e-02, 8.14971582e-01, 7.93222591e-01, 4.44018125e-02,
6.83058800e-01, 2.23486033e-01, 4.19489956e-01, 6.33558600e-01,
3.78441276e-01, 2.24073290e-01, 6.92822600e-01, 7.20482083e-01,
7.25699918e-01, 9.58762238e-01, 3.60844706e-01, 3.83049058e-01,
3.58330128e-01, 8.11028049e-02, 4.02979889e-01, 7.23055847e-01],
…途中省略
[5.58920150e-01, 3.72923727e-01, 8.16057084e-01, 8.08264519e-02,
1.82472587e-01, 7.87306730e-01, 5.29459803e-01, 2.87961048e-01,
9.56106891e-01, 3.91421800e-01, 2.34442094e-01, 9.17206536e-01,
1.21508081e-01, 9.03239527e-01, 3.56627622e-01, 4.90704273e-01,
4.31934644e-01, 3.87488312e-01, 3.40747478e-01, 7.04225178e-02,
2.00487687e-01, 3.42557081e-01, 2.86660662e-02, 5.75197617e-01,
9.20747511e-01, 2.80770904e-01, 8.66959854e-01, 6.89887522e-02]])


今日のまとめ


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

今日はページ数のわりに進んでない気分…(笑)

引き続き頑張りまっす。


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

フクコ


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


E資格とは?

www.fukuko-parallel-work.com