NumPy 行列乗算のブロードキャスト エラー
2 つの NumPy 配列間で行列乗算を実行する場合、それらの形状に互換性があることを確認することが重要です。ただし、乗算演算子 (*) を誤って使用すると、「ValueError: オペランドをシェイプと一緒にブロードキャストできませんでした」エラーが発生する可能性があります。
2 つの配列を考えてみましょう: X とシェイプ (m, n) と y形状 (n, 1) を使用します。意図した演算は行列の乗算であり、結果は (m, 1) ベクトルになるはずです。ただし、NumPy の乗算演算子は要素ごとの演算に使用され、次元を揃えるためにブロードキャストが必要です。
指定された例では、X の最初の次元 (97) が次の次元と競合するため、ブロードキャスト ルールに違反します。 y の対応する次元 (2)。したがって、乗算演算は失敗し、エラーが発生します。
行列の乗算を実行するには、dot() メソッドを使用する必要があります。このメソッドは行列演算用に特別に設計されており、次元の適切な位置合わせが保証されます。 * の代わりに dot() を使用すると、ブロードキャストの問題が解決され、期待される (m, 1) ベクトルが生成されます。
さらに、NumPy (numpy.matrix) で行列型を使用すると、操作が複雑になる可能性があることに注意してください。一般的には、代わりに numpy.ndarray を配列に使用することをお勧めします。
以上がNumPy 行列の乗算がブロードキャスト エラーで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。