Advertisement
Guest User

Untitled

a guest
Jun 1st, 2015
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. ## numpy.dot について
  2. xとWのshapeが様々なパターンのときの、a = np.dot(x, W) の結果のaのshapeを観察すると以下のようになっている。
  3.  
  4. | x.shape | W.shape | a.shape |
  5. | ---------:|----------:| ------------:|
  6. | (D,) | (D,) | scalar |
  7. | (D,) | (D, 1) | (1,) |
  8. | (D,) | (D, K) | (K,) |
  9. | (N, D) | (D, K) | (N, K) |
  10. | (T, N, D) | (D, K) | (T, N, K) |
  11. | (T, N, D) | (M, D, K) | (T, N, M, K) |
  12.  
  13. xとWが両方ともベクトルである特殊ケースを除くと、np.dotは以下のように動作している。
  14.  
  15. * xは **「x.shape[-1]次元の横ベクトル」** を「要素」としてもつ「多次元配列」として捉える。表の最後の例では、D次元横ベクトルを要素にもつ、shapeが(T, N)の2次元配列と捉える。
  16. * Wは **「行と列がW.shape[-2:]の行列」** を要素としてもつ多次元配列として捉える。表の最後の例では、$D \times K$行列を要素にもつ、長さがMの配列と捉える。
  17. * 上記をふまえると、np.dotは基本的には **横ベクトルxに右から行列Wを掛け、ベクトルaを返す** 演算だといえる。
  18. * さらにこのとき、横ベクトルxや行列Wが(多次元)配列になっていることが許されており、その場合aはベクトルを要素としてもつ多次元配列となる。
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement