私はthis paperを再実装するために取り組んでおり、キー操作は双一次テンソル積です。私はそれが何を意味するのかほとんど分かっていませんが、紙にはわかりやすい素敵なグラフィックがあります。TensorFlowの双一次テンソル積
キー操作がE_1 *のWの*のE_2である、と私は残りは簡単なはずですので、tensorflowでそれを実装する方法を知りたいです。
基本的に、所定の三次元テンソルWは、行列にそれをスライスし、j番目のスライス(行列)のために、あるスカラー、その結果、E_1とE_2によって各側面上に掛けますj番目のエントリを返します(この操作の出力)。
だから、別のd次元ベクトル、E_1の積を実行する、d次元ベクトル、 W 、D X D X Kテンソル、及びE_2。この製品は現在のようにTensorFlowで簡潔に表現できますか、何らかの形で自分のopを定義する必要がありますか? EARLIER
が
を編集し、なぜこれらのテンソルの仕事を乗算し、それが動作するように、より明示的に定義するためのいくつかの方法がありますしないのですか?
>>> import tensorflow as tf
>>> tf.InteractiveSession()
>>> a = tf.ones([3, 3, 3])
>>> a.eval()
array([[[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]],
[[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]],
[[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]]], dtype=float32)
>>> b = tf.ones([3, 1, 1])
>>> b.eval()
array([[[ 1.]],
[[ 1.]],
[[ 1.]]], dtype=float32)
>>>
エラーメッセージです
ValueError: Shapes TensorShape([Dimension(3), Dimension(3), Dimension(3)]) and TensorShape([Dimension(None), Dimension(None)]) must have the same rank
CURRENTLY
は、2つの3Dテンソルを掛けることのいずれかtf.matmul
では動作しないことが判明したので、しかしtf.batch_matmul
ありません。 tf.batch_matmul
は3Dテンソルと行列も行います。次に、3Dとベクトルを試しました。
ValueError: Dimensions Dimension(3) and Dimension(1) are not compatible
これは簡単な形で行うことができます。 – mdaoust
論文を完成させましたか? – Apurv