ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
なんとなく予約注文で買ったこの本をやってみてるぞい.
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る
フレームワークを使って色々応用やってみる系よりはこういう方が好き.好きなだけ.
自分で書いたコードはここ.
1章
Python入門なのでほぼ読み飛ばした.
python3でnumpy
とmatplotlib
を準備した.
公式のソースコードを参照用に落とした.
2章
手始めに,パーセプトロンで論理回路を作ろうという話. ・・・えっとまぁそんなに語るところがない.
3章
nueralnet...
https://github.com/oreilly-japan/deep-learning-from-scratch/blob/master/ch03/nueralnet_mnist.py
すでにプルリクが入っていた.
代表的な活性化関数を作る.
関数はactivation_funcs.py
に実装.
おもしろかった実装.
- step関数
In [1]: 3 > 0 Out[1]: True In [2]: -2 > 0 Out[2]: False In [3]: [-1, -2] > 0 Out[3]: True In [4]: [] > 0 Out[4]: True In [5]: import numpy as np In [6]: np.array([-1, 2]) > 0 Out[6]: array([False, True], dtype=bool)
リストだとなんでもTrue
になっちゃうけどnumpy.arrayだと中身でそれぞれ判断してくれるらしい.便利.
で,True
とFalse
がキャストで1
と0
になるのを利用してstep関数を作ってるのがこんな感じ.
def step_function(x): y = x > 0 return y.astype(np.int)
おもしろい.
- softmax関数
これは出力層に使う. 指数関数を使うのでオーバーフローしやすいため,最大値を引いて小さくしたもので計算する.この差は分母と分子で打ち消されるのでOK.
def softmax(x): c = np.max(x) expx = np.exp(x - c) sum_expx = np.sum(expx) return expx / sum_expx
できた活性化関数はとりあえず画像にしてみた.
うむ.
重み固定のニューラルネットを作る
numpy.arrayとnumpy.dotでちまちま作る. 出力は特に意味のない数字なので割愛.
MNIST
みんな大好きMNIST.
・・・力尽きたので日曜日に回します.