多次元配列の計算について勉強する
多次元配列について考える
データの前処理をする際に、N次元状に並べその内積計算をしていますが、そのルールがあいまいだったので、本日の学習は2回目はこちらから開始です。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る
配列の次元数はnp.ndim()を利用して確認できます。配列の形状はShapeを利用します。
import numpy as np
A = np.array([[[1,2,3,4],
[5,6,7,8,],
[9,10,11,12]],
[[1,2,3,4],
[5,6,7,8,],
[9,10,11,12]]])
print(A)
np.ndim(A)
3#次元
A.shape
(2, 3, 4)#奥行、行、列
内積の計算
np.dot()を利用し、内積を計算します。私は以下のサイトで勉強しました。行列の積では、対応する次元の要素を一致させる必要があります。線形代数についてはこちらで勉強していますが、中々進まない。
- 作者: 平岡和幸,堀玄
- 出版社/メーカー: オーム社
- 発売日: 2004/10/01
- メディア: 単行本
- 購入: 27人 クリック: 278回
- この商品を含むブログ (90件) を見る
NNの行列積
(例題式)Xは入力、Wは重み
X*W=Y
X=np.array([1,2,3]) #(3,)
W = np.array([[1,2,3],[4,5,6],[7,8,9]]) #(3, 3)
Y=np.dot(X,W) #Y=[30 36 42],(3,)
右側にshapeで次元数を記載しましたが、うちうちが一致しています。
X W Y
3 3×3 3
Yに出力する際にシグモイド関数やReLU関数を使用します。今回の結果をsigmoidで表現するとarray([1., 1., 1.])、relurだとarray([30, 36, 42])になります。