問題タブ [numpy-einsum]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - NumPy の einsum を理解する
どのように機能するかを正確に理解するのに苦労していeinsum
ます。ドキュメントといくつかの例を見てきましたが、固執していないようです。
授業で取り上げた例を次に示します。
2 つの配列の場合:A
およびB
.
これにはA^T * B
. ここで何が起こっているのか(そして一般的に を使用しているときeinsum
)、誰かが私に教えてくれますか?
python - 軸の順列を取得するためのnumpy einsum
「np.einsum」のドキュメントで私が理解したのは、順列文字列がベクトルの軸の順列を与えるということです。これは、次の実験で確認されています。
しかし、これは理解できません:
代わりに (4, 2, 3) を期待します...私の理解の何が問題になっていますか?
python - アーキテクチャはnumpy配列操作のパフォーマンスにどのように影響しますか?
Intelの数学カーネルライブラリ(MKL)がインストールされた「Anaconda」Pythonディストリビューションを備えたUbuntu 14.04があります。私のプロセッサは、8 コアの Intel Xeon であり、ハイパースレッディングはありません (つまり、8 スレッドのみ)。
私にとって numpyは、大規模な配列に対してtensordot
一貫して優れています。einsum
ただし、他の人は、2つの間にほとんど違いがないこと、または一部の操作で einsum が numpy よりも優れていることさえ発見しています。
高速ライブラリで構築されたディストリビューションを使用している人々にとってnumpy
、なぜこれが起こるのか疑問に思っています. インテル以外のプロセッサーでは、MKL の実行速度が遅くなりますか? それともeinsum
、より優れたスレッド機能を備えた最新の Intel プロセッサでより高速に動作しますか?
私のマシンでのパフォーマンスを比較するための簡単なコード例を次に示します。
tensordot を使用したテンソル演算は、一貫して 5 ~ 20 GFLOP の範囲で実行されます。私は einsum で 0.2 GFLOPS しか得られません。
python - メッシュグリッドの回転のための Numpy einsum()
meshgrid() を使用して生成された 3D 座標のセットがあります。これらを3軸で回転できるようにしたいです。
メッシュグリッドを解き、各ポイントで回転を試みましたが、メッシュグリッドが大きく、メモリが不足しています。
この質問は、einsum() を使用して 2d でこれに対処しますが、3d に拡張するときの文字列形式がわかりません。
einsum() とそのフォーマット文字列に関する他のページをいくつか読みましたが、理解できませんでした。
編集:
メッシュグリッドの軸を X、Y、Z と呼び、それぞれの形状は (213、48、37) です。また、結果をメッシュグリッドに戻そうとすると、実際のメモリ エラーが発生しました。
ポイントごとの回転を行うために「解明」しようとしたとき、次の関数を使用しました。
次のように結果をループしました。
回転後、ポイントを使用して補間します。
numpy - Juliaのnumpy.einsum? (2)
この質問から来て、より一般化された einsum が可能だったのではないかと思います。問題があったと仮定しましょう
または同様のもの、合計をループせずにこの問題を解決するにはどうすればよいですか?
敬具
python - この np.einsum('kij',A) の結果を理解する方法は?
例えば、
これはまだA
問題ありません。
しかし、私が行うとprint np.einsum('kij', A)
、形状は(3, 4, 2)
. そうではない(4, 2, 3)
でしょうか?
print np.einsum('cab', A)
形状の(4, 2, 3)
仕上がりも問題ありません。なぜprint np.einsum('kij', A)
同じではないのですか?