次の 3 次テンソルがあります。両方のテンソルは、100 個の 10x9 行列を含む最初のテンソルと 100 個の 3x10 行列を含む 2 番目のテンソルを行列化します (この例では 1 つだけ入力しました)。
私の目的は、行列を 1 対 1 の対応として並べて乗算することです。これにより、形状のあるテンソルが得られます。 (100, 3, 9)
これは、両方のテンソルを圧縮してからそれぞれのドットを取る for ループで実行できますが、私は探していますnumpy 演算子だけでこれを行うには。これまでのところ、失敗した試みがいくつかあります
試行 1:
import numpy as np
T1 = np.ones((100, 10, 9))
T2 = np.ones((100, 3, 10))
print T2.dot(T1).shape
試行 1 の出力:
(100、3、100、9)
つまり、考えられるすべての組み合わせを試したということです...これは私が求めているものではありません。
実際には、他の試みはコンパイルさえしません。np.tensordot 、 np.einsum を使用してみました(ここでhttps://jameshensman.wordpress.com/2010/06/14/multiple-matrix-multiplication-in-numpyを読んでくださいアインシュタインのインデックスを正しく取得してください)また、同じリンクに、私が視覚化できなかったクレイジーなテンソルキューブの再形成方法があります。これに取り組む方法についての提案/アイデアの説明はありますか?