<目次>
(1) numpy.dotの使い方について(次元別の仕様を整理)
(1-1) numpy.dotの次元別の挙動
(1-2) numpy.dotの次元別の挙動(詳細)
(1-3) numpy.dotの次元別の挙動確認に使用したプログラム
(1) numpy.dotの使い方について(次元別の仕様を整理)
(1-1) numpy.dotの次元別の挙動
(表)
次元 (行列1\行列2) |
n=1 | n=2 | n>2 |
n=1 (例:[1]) |
① ・ベクトルの内積 |
② ・ベクトルの内積(の繰り返し) ⇒第1引数行列と第2引数列の最初の次元の内積を取る |
③ ・ベクトルの内積(の繰り返し) ⇒第1引数行列と第2引数列の最初の次元の内積を取る |
n=2 (例:[[1],[1]]) |
④ ・ベクトルの内積(の繰り返し) ⇒第1引数行列の最後の次元と第2引数列の内積を取る |
⑤ ・行列の掛け算 |
⑥ ・ベクトルの内積(の繰り返し) ⇒「第1引数行列の最後の次元」と「第2引数列の最後から2番目の次元」の内積を取る |
n>2 (例:[[[1],[1]],[[1],[1]]]) |
⑦ ・ベクトルの内積(の繰り返し) ⇒第1引数行列の最後の次元と第2引数列の内積を取る |
⑧ ・ベクトルの内積(の繰り返し) ⇒「第1引数行列の最後の次元」と「第2引数列の最後から2番目の次元」の内積を取る |
⑨ ・ベクトルの内積(の繰り返し) ⇒「第1引数行列の最後の次元」と「第2引数列の最後から2番目の次元」の内積を取る |
(1-2) numpy.dotの次元別の挙動(詳細)
(1-3) numpy.dotの次元別の挙動確認に使用したプログラム
import tensorflow as tf import numpy as np def main(): a_1d_2 = np.array([1,2]) a_2d_1x2 = np.array([[1,2]]) a_2d_2x1 = np.array([[1],[2]]) a_3d_2x1x2 = np.array([[[1,2]],[[1,2]]]) a_3d_2x2x1 = np.array([[[1],[2]],[[1],[2]]]) print("①:",np.dot(a_1d_2,a_1d_2)) print("②:",np.dot(a_1d_2,a_2d_2x1)) print("③:",np.dot(a_1d_2,a_3d_2x2x1)) print("④:",np.dot(a_2d_1x2,a_1d_2)) print("⑤:",np.dot(a_2d_1x2,a_2d_2x1)) print("⑦:",np.dot(a_3d_2x1x2,a_1d_2)) print("⑥:",np.dot(a_2d_1x2,a_3d_2x2x1)) print("⑧:",np.dot(a_3d_2x2x1,a_2d_1x2)) print("⑨:",np.dot(a_3d_2x2x1,a_3d_2x1x2)) if __name__ == "__main__": main()