問題タブ [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 - 2 つの 3dim 行列の numpy einsum の Theano バージョン
2 つの 3dim numpy マトリックスがあり、theano でループを使用せずに 1 つの軸に従って内積を実行したいと考えています。サンプルデータを使用した派手なソリューションは次のようになります。
ここで、「a」は (7, 4, 15) の形をし、「b」は (7, 4, 5) の形をしています。「c」は、「a」と「b」の内積として定義されます。
「c」を計算するために、この例の theano 実装を探しています。
何か案は?
python - numpy の画像を含むテンソルの乗算
次の 3 次テンソルがあります。両方のテンソルは、100 個の 10x9 行列を含む最初のテンソルと 100 個の 3x10 行列を含む 2 番目のテンソルを行列化します (この例では 1 つだけ入力しました)。
私の目的は、行列を 1 対 1 の対応として並べて乗算することです。これにより、形状のあるテンソルが得られます。 (100, 3, 9)
これは、両方のテンソルを圧縮してからそれぞれのドットを取る for ループで実行できますが、私は探していますnumpy 演算子だけでこれを行うには。これまでのところ、失敗した試みがいくつかあります
試行 1:
試行 1 の出力:
(100、3、100、9)
つまり、考えられるすべての組み合わせを試したということです...これは私が求めているものではありません。
実際には、他の試みはコンパイルさえしません。np.tensordot 、 np.einsum を使用してみました(ここでhttps://jameshensman.wordpress.com/2010/06/14/multiple-matrix-multiplication-in-numpyを読んでくださいアインシュタインのインデックスを正しく取得してください)また、同じリンクに、私が視覚化できなかったクレイジーなテンソルキューブの再形成方法があります。これに取り組む方法についての提案/アイデアの説明はありますか?
python - numpy.einsum は fortran や C と比較して効率的ですか?
非常に時間がかかる numpy プログラムを作成しました。プロファイリングを行った後、ほとんどの時間が に費やされていることがわかりましたnumpy.einsum
。
numpy.einsum
numpy は LAPACK または BLAS のラッパーですが、のパフォーマンスが LAPACK または BLAS の対応するものに匹敵するかどうかはわかりません。
では、Fortran や C に切り替えると、パフォーマンスが大幅に向上しますか?
numpy - np.einsum と np.tensordot を使用して 4 次テンソルの座標変換を実行します
方程式は
使えました
仕事をすること、また期待すること
動作しますが、動作しません。
仕様:
C は 4 次弾性テンソルです。
Q は、x 座標と y 座標を変更する回転行列です。
Q_inv は
np.einsum
につながる
これは正しいと思いますが、4 つnp.tensordot
は
負の大きな数に注意してください。
python - NumPy einsum だけで上三角要素を処理する
numpy einsum を使用して、形状 (3,N) の列ベクトル pts の配列とそれ自体の内積を計算し、形状 (N,N) の行列 dotps をすべての内積で計算しています。これは私が使用するコードです:
これは機能しますが、主対角線より上の値のみが必要です。すなわち。対角線を除いた結果の上三角部分。これらの値のみを einsum で計算することは可能ですか? または、行列全体を計算するために einsum を使用するよりも高速な他の方法はありますか?
私のpts配列は非常に大きくなる可能性があるため、必要な値だけを計算できれば、計算速度が2倍になります.
python - einsum を使用してすべてを転置することは可能ですか?
わかりました、たとえば、行列を転置する方法を知っています:
1 次元配列の場合、この ".T" ツールを使用することはできません (理由は正直わかりません) ため、ベクトルを転置するには、パラダイムを変更して使用する必要があります。たとえば、次のようにします。
そしてB.T
、同じ結果が得られるため、このパラダイムの変更を適用して、次を使用します。
このパラダイムの変化は、数学的に言えば同じファミリーに属し、多くの要素を共有しているという意味で、1 次元ベクトルは 2 次元ベクトル (行列) とまったく異なるエンティティではないため、少し反感を覚えます。もの。
私の質問は、あらゆる種類のテンソルに対して、よりコンパクトで統一された方法で、einsum である numpy の王冠の (時々呼ばれる) 宝石でこの転置を行うことは可能ですか? 私はあなたがするマトリックスのためにそれを知っています
以前と同様に、次のようになりますA.T
。
1次元配列でそれを行うことは可能ですか?
前もって感謝します。
python - Numpy einsum ブロードキャスト
誰かが numpy.einsum() 関数でブロードキャスト (省略記号) がどのように機能するかを説明できますか?
どのように、いつ使用できるかを示すいくつかの例は、非常に高く評価されます。
以下の公式ドキュメントページを確認しましたが、例が2つしかなく、解釈方法と使用方法が理解できないようです。
http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.einsum.html