将两个不同形状的 3d 张量相乘 (Tensorflow)

Multiplying two 3d tensors with different shapes (Tensorflow)

在 TensorFlow 中,如果我有两个 3 维张量,一个是 (100, 9, 135) 维度,另一个是 (100, 29, 135) 维度:

x1:张量(形状=(100、9、135),dtype=float64)

x2:张量(形状=(100、29、135),dtype=float64)

我需要将这两个张量相乘,所以当我使用“tf.multiply”时出现如下错误:

z = tf.multiply(x1,x2)

print("z:", z)

ValueError:尺寸必须相等,但为 9 和 29,输入形状:[100,9,135]、[100,29,135]。

如何在 TensorFlow 中做到这一点?提前致谢。

我不确定你期望的输出形状,但你可以尝试使用 tf.einsum 进行矩阵乘法:

import tensorflow as tf

t1 = tf.random.normal((2, 9, 35))
t2 = tf.random.normal((2, 29, 35))

e = tf.einsum('bij,bkj->bik', t1, t2)
# or e =  tf.einsum('...ij,...kj->...ik', t1, t2)

print(e)

查看 docs 以获得更多选项。