問題タブ [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.

0 投票する
1 に答える
584 参照

python - なぜ numpy.einsum は float16 や uint16 よりも float32 の方が速く動作するのですか?

numpy 1.12.0 を使用した私のベンチマークでは、内積の計算float32 ndarraysは他のデータ型よりもはるかに高速です。

プロファイリングを試してみましeinsumたが、すべての計算を C 関数に委譲するだけなので、このパフォーマンスの違いの主な理由がわかりません。

0 投票する
1 に答える
940 参照

python - 不規則な配列形状でnumpyで操作をベクトル化/テンソル化する方法

手術をしたい

フォーム1

通常の形状であれフォーム2 ば、np.einsum を使用できます。構文は次のようになると思います

残念ながら、私のデータ X は、第 1 軸 (インデックスがゼロの場合) に非規則的な構造を持っています。

もう少し文脈を与えるためフォーム3に、i^ 番目のグループの j^ 番目のメンバーの p^ 番目の機能を参照します。グループのサイズは異なるため、事実上、これは長さが異なるリストのリストであり、同じ長さのリストのリストです。

フォーム4通常の構造を持っているため、標準の numpy 配列として保存できます (1 次元で提供され、次に alpha.reshape(a,b,c) を使用します。ここで、a、b、c は問題固有の整数です)。

Xをリストのリストのリストまたは異なる次元のnp.arraysのリストとして保存し、次のようなものを書くことは避けたい

これは、これを行うための素晴らしい機能/データ構造ですか?それとも、部分的にのみベクトル化された実装で妥協する必要がありますか?

0 投票する
1 に答える
871 参照

arrays - テンソルのnumpyドット積(3d x 2d)

現在私は使用しています

計算したい:

r_ik = sum_j(A_ijk * b_jk)

つまり、A は「4 つの行列のスタック」((3,2) の形状)、つまり 3 次元配列、b は「4 つのベクトルのスタック」((3,) の形状)、つまり 2 次元配列です。望ましい結果は、「4 つの行列ベクトル積のスタック」、つまりベクトルのスタック、つまり再び 2 次元配列 (形状 (3, 4)) です。

np.einsum と np.tensordot を中程度の深さで調べましたが、これらを使用して作成したソリューションは、ループ ソリューションと少なくとも同じくらい長く、読みにくいものでした。

ただし、その単純な問題にはワンライナーが必要だと思います。