2
私は次の2つのtensorflowオブジェクトを有するテンソルフロー:バッチ(サイズB X DIMの行列)と語彙(サイズV X DIMの行列)のL1差を計算する方法は?
batch = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3,2], name='batch')
vocab = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0,1.0,2.0,3.0,4.0,5.0,6.0], shape=[6,2], name='vocab')
バッチ3つのベクトル、2次元のそれぞれを有しています。 vocabには6つのベクトルがあり、それぞれ2つの次元があります。 可能なすべてのベクトルのペア(18個の値を生成する)のL1の差を計算したいと思います。例: [1,2]のL1の相違は
|1-1|+|2-2|, |1-3|+|2-4|, |1-5|+|2-6|, |1-1|+|2-2|, |1-3|+|2-4|, |1-5|+|2-6|,
テンソルフロー関数でこれを行うことができますか?得られたマトリックスは、6×3(バッチXのvocab)であり得る。行列の乗算は、行列の期待される次数を生成する計算のようです。しかし、行列乗算の基本的な演算を無効にする方法はありますか? (すなわち、差の絶対値による成分ごとの乗算のオーバーライド)?
これは放送に関するトピック(numpyなど)です。あなたはこれをチェックアウトすることができます:https://www.tensorflow.org/versions/r1.0/experimental/xla/broadcasting。私はまだこれを試していない(あなたはそれが実験的であることに気付くだろう)。 – 0Tech
'*'の代わりに 'tf.matmul'を使いましたか? – drpng
@drpng、ありがとう。私はそれを試みたが、うまくいかなかった。 – Trojosh