ゼロから作る Deep Learning をコマンドをうちながら学ぶ つまづいたところなど
環境
- windows10
- Anaconda 4.4.0
- python3.6.1
下準備
- anacondaのインストール https://www.continuum.io/downloads よりダウンロードしてインストールする
- 『ゼロから作る Deep Learning』のリポジトリのインストール
- anacondaと同一ディレクトリに https://github.com/oreilly-japan/deep-learning-from-scratch からダウンロードしたファイルを展開。通常はC:\Users\ユーザー名\Anaconda3 配下にインストールする。
- window10のコマンドプロンプトを起動して、C:\Users\ユーザー名\Anaconda3 配下にcdする。
コマンドはチェンジディレクトリして、フルパスで指定する
C:\Users\ユーザー名\Anaconda3 配下にpython.exeがあるので、例えば サブディレクトリーch01 からコマンドを実行する場合には、ch01にチェンジディレクトリして、C:\Users\ユーザー名\Anaconda3\python img_show.py などとpython自体はフルパスで入力することとなる。
ちなみに、本書の章に該当するのがch01(1章)などのサブディレクトリである。
気づいた点など
- 本書のリポジトリのch0xディレクトリは、本書の章に対応している。1章ならch01であり、その中にプログラムやデーターがある。
- shapeは要素の確認が可能 ndimは次元を確認する(2次元行列であれば、行数、列数にかかわらず2となる。ベクトルは1次元)
a=np.array([[2,3],[3,2]])
a.shape=(2,2) この場合、2行2列の行列となる
a.ndim=2 2次元の行列であるa=np.array([2,3])
a.shape=(2,) この場合、行列ではなくてベクトルとして表示される。大きさは2
a.ndim=1 1次元のベクトルであるa=np.array([[2,3]])
a.shape=(1,2) 上記とよく似ているが、この場合、行列として表される。1行2列の行列である。
a.ndim=2 2次元の行列である
- 行列でSIZEをとると?
for idx in range(x.size):
この場合は、x.sizeは要素の数となり2x2の4となる。
4回ループするので、idxは0から始まり3で終了する。xの要素の中身が入るわけではない。
- 形の異なる行列の和は求められるのか? p114 2レイヤーの出力の予想値を求める計算で、 a1 = np.dot(x,W1) + b1
この時、x.shape(100,782) W.shape(782,100) b1.shape(100,) であり、100行100列x1行100列の和の計算ができないのでは?と思ったが、各行の値にb1を足せるようだ。(基本的な事?)
例
a=np.array([1,1,1])
b=np.array([[2,2,2],[3,3,3]])
c=a+b
print(c)
↓
[[3 3 3]
[4 4 4]]
- shape(0)の意味 hoge.shape(0)は配列の0番目の中身だと思ったが、そうではないらしい。・・ 下記によると、shape[0]とした場合は、hogeの行数が返される。ちなみにshape[1]は列数が返される。
# 行列の大きさ
print("行列Aの大きさ:", A.shape)
print("行列Aの行数:", A.shape[0])
print("行列Aの列数:", A.shape[1])