ゼロから作るディープラーニング 4日目 3章 ニューラルネットワーク

初心者が詰まったポイントと対策とか

 

3.1

活性化関数を置き換えるあたりを書いてある意図がわからない

同じことを違う書き方で、こうやって書けますっていろいろ書き換えてるからまどろっこしくてイライラしてしまう・・・

結局重みをかけてバイアス足したものを使うってことを、なんでこうも小難しくこねくり回して長々と書いてるのかと思ってしまう・・・

納得はできないけどなんとなく理解はできたから、とりあえず先に進む

 

3.2.2 ステップ関数の実装

NumPy配列の各要素に対して不等号計算を行う

>>> import numpy as np
>>> x = np.array([-1.0, 1.0, 2.0])
>>> x
array([-1., 1., 2.])
>>> y = x > 0
>>> y
array([False, True, True])

 計算結果が新たにyに格納された

 

int型に変換する

>>> y = y.astype(np.int)
>>> y
array([0, 1, 1])

 

numpy配列の型変換にはastypeを使う

 

ステップ関数のグラフ

import numpy as np
import matplotlib .pylab as plt

def step_function(x):
return np.array(x > 0, dtype=np.int)

x = np.arange(-5.0, 5.0, 0.1)
y = step_function(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1) # y軸の範囲を指定
plt.show();

f:id:yamekodev:20200711203544p:plain

 

うーん簡単なやつを写経してもあんまり意味ないように感じるから、とりあえず1回目は読むことメインにしてまず通読すること目指そうかな・・・

 

 3.3.2 行列の積

にて、

ゼロから作るディープラーニング 2日目 1章 Python入門 NumPy

https://yamekodev.hatenadiary.org/entry/2020/07/09/233049

で疑問に思ってた行列の積の謎がとけた

 

前提

A, Bそれぞれにnumpyのarrayを格納

 

A*B

という書き方で計算する

 =>同じ位置の要素同士を単純にかける

 

np.dot(A, B)

 =>行列の積の計算方法でAの行をBの列にかけて足す

 

ということらしい。

最初に疑問に思った時点(1.5.4  NumPyのN次元配列)

で、その違いについて言及してくれていれば混乱しなかったのに。

やっぱりちょっと不親切だなこの本・・・

アマゾンレビューの低評価レビューがまんま自分にあてはまる・・・

 

入力*重み+バイアスの結果を、活性化関数に食わせる。

 

ただそれだけのことなのに、丁寧に説明しようとしすぎて逆に分かりにくくなってる。

いろいろ言い換えたり置き換えたりいろんな記号つかったり。

読むのが苦痛・・・

 

明日は3.5 出力層の設計から読む。