将两个不同形状的 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 以获得更多选项。
在 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 以获得更多选项。