2024年08月05日

一日一項目 行列積とかで何か勘違い していた そうなんですねえ

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は自動的にブロードキャスティングや次元の調整を行うことがありますが、これは行列積の通常の定義には従っていません。image

 

そーなんだ。しかし、先日ワタクシがPythonでは行列積を自動調整して行う機能があるのかと訊いたら ない、 キリッ) って返答も合った気がするなあ。
(1,3)と(1,3)の行列積の場合に一方を転置して計算する機能はないってさ。

上の場合には(3,2)と(1,2)の行列積だが(1,2)を(2,1)に転置して計算している・・・ように見えるのでね。これはこういう計算をするのだな。

だが、基本に則り (3,2)と(2,2)は結果は(3,2)になるのだよよんで、自分で気をつけませう。

つーかね、機械学習の入門書ではNumpyが活躍してまして。

Pythonは習得が易しいなんていう連中がいるのだが、デタラメ言いやがって(笑) 実際はいくつかのModuleを使いこなせないとpythonでプログラムは作れませぬで。そのモジュールの学習がタイヘンなのですぜ。知らんけど。どや。

というわけで行列積は規則通りにやりましょう。勝手に自動調整するからさ~・・・なんて甘い事は考えない方がよいぞの。たぶん。

上の計算も自分で転置にしてから行列積を計算するのだぜ。どや。

posted by toinohni at 08:33| 東京 ☀| Comment(0) | ソフト系雑学 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください