A = np.array([[1,2],[3,4],[5,6]])
B = np.array([7,8])
C = np.dot(A,B)
A 3行2列、 B 1行2列 これでは行列積は計算できないはずだが、結果はBを転置して計算したかのようになる。そういう仕様なのか
np.dot() の結果: [23 53 83]
chatGPT3.5先生の回答
np.dot
やその他のNumPy関数を使用して行列積を計算する場合、NumPyは自動的にブロードキャスティングや次元の調整を行うことがありますが、これは行列積の通常の定義には従っていません。
しかーーーし、
はい、あなたの指摘は正しいです。np.dot
やその他のNumPy関数を使用して行列積を計算する場合、NumPyは自動的にブロードキャスティングや次元の調整を行うことがありますが、これは行列積の通常の定義には従っていません。
そーなんだ。しかし、先日ワタクシがPythonでは行列積を自動調整して行う機能があるのかと訊いたら ない、 キリッ) って返答も合った気がするなあ。
(1,3)と(1,3)の行列積の場合に一方を転置して計算する機能はないってさ。
上の場合には(3,2)と(1,2)の行列積だが(1,2)を(2,1)に転置して計算している・・・ように見えるのでね。これはこういう計算をするのだな。
だが、基本に則り (3,2)と(2,2)は結果は(3,2)になるのだよよんで、自分で気をつけませう。
つーかね、機械学習の入門書ではNumpyが活躍してまして。
Pythonは習得が易しいなんていう連中がいるのだが、デタラメ言いやがって(笑) 実際はいくつかのModuleを使いこなせないとpythonでプログラムは作れませぬで。そのモジュールの学習がタイヘンなのですぜ。知らんけど。どや。
というわけで行列積は規則通りにやりましょう。勝手に自動調整するからさ~・・・なんて甘い事は考えない方がよいぞの。たぶん。
上の計算も自分で転置にしてから行列積を計算するのだぜ。どや。