こんにちは!
現役パラレルワーカー フクコです。
前回の記事↓に続き
来年の2月の試験に向けてE資格試験勉強中のため
E資格とは?の記事はコチラ↓
ゼロつくシリーズでおなじみ
オーライリーから出版されている
ディープラーニングの本格的な入門書でよくおススメされる
「ゼロからつくる Deep Learning」本
この本↑を毎日5ページずつコツコツこなすと
約2か月間で今年中に終了するので
来年のE資格試験までにこれで基礎力をつけることにしました。(^^)
ついつい私は何もないとだらけてしまうので(笑)
毎日5ページ終わった後の記録とまとめを書いていこうと思います。
と、まとめに入る前に…
やる気を出すためのコトバをシェアします!!(主に私のやる気を出すために 笑)
「努力はどれだけしても足りないんだよ。
知ってるだろうそれは お前も…」
by 錆兎(さびと)
私の大好きな「鬼滅の刃」から
錆兎(さびと)の名言です。
私は主人公の炭治郎大好きなんですが、
錆兎(さびと)とどちらが好きかと言われたら
迷わず錆兎(さびと)を選びます。(笑)それくらいとっても彼の漢気が大好きなのです!
そう! 努力はすればするほど、自分はまだまだと思い知らされる。
そして、レベルアップすればするほど、上には上がいることに次第に気がついていく。。。
私の場合、
試験勉強すればするほど、なんだか全然まだまだ勉強が足りない気がして、
どんどん不安になるタイプなんです… うえ~ん(T-T)
ですが!
足りないと思うなら満足するまで勉強し続ければいいんですよね!! やったりますよ!!(^^)
錆兎(さびと)、どうもありがとう! (^0^)
今日もやる気が出てきました!
よし!! 今日も頑張るぞ~! お~!!
というコトで、今日も私はコツコツ努力でノルマをこなしますよ! 笑
ではでは、いい加減まとめに入ります。笑
その前に本の目次の紹介です。
ゼロつくディープラーニングは、下記↓の合計8章で構成されています。
本の目次
- 1章 Python入門
- 2章 パーセプトロン
- 3章 ニューラルネットワーク
- 4章 ニューラルネットワークの学習
- 5章 誤差伝播法
- 6章 学習に関するテクニック
- 7章 畳み込みニューラルネットワーク
- 8章 ディープラーニング
ちなみに…
ゼロつくディープラーニングの第1章はPython入門のセクション(20ページ分)なので、
とりあえず今回私は飛ばし、第2章からまとめています。
今回も引き続き、第5章のつづきからでーす。
5.6 Affine / Softmaxレイヤの実装
AffineレイヤとSoftmaxレイヤの実装についてみていく。
5.6.1 Affineレイヤ
ニューラルネットワークの順伝播では、
重みつき信号の総和を計算するために
行列の積を用いて、
Numpyでは、np.dot()を使用。
Pythonでは、↓の感じで実装できる。
#numpyのインストール import numpy as np X = np.random.rand(2)#入力 W = np.random.rand(2,3)#重み B = np.random.rand(3)#バイアス Y = np.dot(X, W) + B print(X.shape)#(2,) print(W.shape)#(2, 3) print(B.shape)#(3,)
ニューロンの重みつき和は、
Y = np.dot(X, W) + Bのように計算できる。
Affine(アフィン)変換:
ニューラルネットワークの順伝播で行う行列の積は、
幾何学の分野では「アフィン変換」と呼ばれる。
Affineレイヤの計算グラフは↓のとおり。
↓の図のようにWの形状が(2,3)であるとすると
は、(3,2)となる。
この図を基に計算グラフを書いてみると↓のとおり。
5.6.2 バッチ版Affineレイヤ
次は、N個のデータをまとめて順伝播する場合
つまり
バッチ版のAffineレイヤについて考えてみる。
バッチ版Affineレイヤを計算グラフを書いてみると↓のとおり。
例えばN=2とした場合、
Pythonで実装してみると…
# 例えばN=2とした場合、Pythonで実装してみる X_dot_W = np.array([[0,0,0],[10,10,10]]) B = np.array([1,2,3]) print(X_dot_W)#答えは、array([[ 0, 0, 0],[10, 10, 10]]) print(X_dot_W + B)#答えは、[[ 1 2 3][11 12 13]]