[解決済み] numpyで行列の乗算を一括処理
2022-03-03 02:18:09
質問
2つのnumpy配列があります
a
と
b
形状の
[5, 5, 5]
と
[5, 5]
それぞれ 両者とも
a
と
b
の場合、shapeの最初のエントリはバッチサイズです。行列の乗算オプションを実行すると、形状の配列が得られます。
[5, 5, 5]
. MWEは以下の通りです。
import numpy as np
a = np.ones((5, 5, 5))
b = np.random.randint(0, 10, (5, 5))
c = a @ b
# c.shape is (5, 5, 5)
仮に、バッチサイズのループを実行するとしたら、つまり
a[0] @ b[0].T
の配列が生成されます。
[5, 1]
. 最後に、軸 1 に沿ってすべての結果を連結すると、結果としての配列は、形状
[5, 5]
. 以下のコードでは、これらの行をよりよく説明しています。
a = np.ones((5, 5, 5))
b = np.random.randint(0, 10, (5, 5))
c = []
for i in range(5):
c.append(a[i] @ b[i].T)
c = np.concatenate([d[:, None] for d in c], axis=1).T
# c.shape evaluates to be (5, 5)
loopを使わずに上記の機能を得ることはできますか?例えば、PyTorchには
torch.bmm
を計算することができます。ありがとうございます。
どのように解決するのですか?
numpyのeinsumを使って計算することができます。
c = np.einsum('BNi,Bi ->BN', a, b)
Pytorchもこのeinsum関数を、構文を少し変えて提供しています。そのため、簡単に動作させることができます。他の図形も簡単に扱える。
そうすれば、転置やスクイーズ演算を気にする必要はありません。また、内部で既存の行列のコピーを作成しないので、メモリの節約にもなります。
関連
-
Python関数の高度な応用を解説
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み] NumPyの配列を切り詰めずに、完全に表示するにはどうしたらよいですか?
-
[解決済み] NumPy の配列を csv ファイルにダンプする
-
[解決済み] NumPy多次元配列のi番目の列にアクセスする方法は?
-
[解決済み] numpyの配列を初期化する
-
[解決済み] numpy dot()とPython 3.5+の行列の乗算の違い@。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonを使ったオフィス自動化コード例
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
Pythonによるjieba分割ライブラリ
-
任意波形を生成してtxtで保存するためのPython実装
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】NameError: 名前 'self' が定義されていません。