2016-07-18 4 views
2

私はランク4のテンソルA(例えば、インデックス(a、b、i、j))とランク2のテンソルB(インデックス(i、j))を得ています。それら。ナンシー:エインサムのないテンソルアダマール乗算はできますか?

つまり、商品Cを呼び出すと、C[a,b,i,j] == A[a,b,i,j] * B[i,j]が必要です。 einsumでこれを行うにはかなり単純な方法がありますが、tensordotなどのメソッドと比較して、einsumを使用するとかなりのパフォーマンスが低下すると言われていますが、ドキュメントから避けるための良い方法が見つかりませんでした。

私はそれを逃した可能性があります。私はテンソルに慣れていてnumpyの専門家ではありません。

答えて

4
C = A * B 

broadcasting rules後、numpyのは、最後の軸から始めABの形状をラインアップします。

A: (a, b, i, j) 
B:  (i, j) 

をしてC作成するために一緒にABの対応する要素を乗算:

A[a, b, i, j] 
* B[  i, j] 
== C[a, b, i, j] 
+0

本当に待ちますか?私は形状が正確にこれが機能するために一致しなければならないと思った?そして、私が他の指標を使って乗算したいのであれば? –

+0

@RichardRast:[ええ、本当に。](http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html)お互いに放送することができれば、形は完全に一致する必要はありません。他の指標については、それはあなたが意味することに依存しますが、おそらく放送で働くことができます。 – user2357112

+0

よろしくお願いいたします。私は放送を調べます。私は今電話に出ていますが、家に帰ると答えが出たら、これを受け入れたものとしてマークします。 –

関連する問題