python 列表中的张量与张量流中的常数变量相乘

Multiplication of tensors in a python list with a constant variable in tensorflow

我有一个名为 x 的一维 python 列表,形状为 (1000),其中包含形状为 (3, 600) 的张量元素。我还有一个形状为 (600, 1) 的张量流变量 w,我想将其乘以 x 的每个张量元素。每个操作的结果将是一个形状为 (3, 1).

的张量

有什么方法可以有效地将 w 应用于 x 的每个元素?使用 python 循环的逻辑是:

for i in range(1000):
    x[i] = tf.matmul(x[i], w)

我已经尝试过以下方法:

w = [w] * 1000
result = tf.mul(x, w)

但是我得到以下错误:

ValueError: Dimensions must be equal, but are 3 and 600 for 'Mul' (op: 'Mul') with input shapes: [1000,3,600], [1000,600,1]

谢谢!

考虑使用 tf.map_fn,它沿张量的第一轴映射函数。在你的情况下,你有 x 是一个形状的张量 (1000, 3, 600)。第一个 dim 是一个列表并不重要。它只会充当张量。

tf.map_fn(lambda x_: tf.matmul(x_, W), x)

您还可以使用 tf.batch_matmul 操作,如下所示。

tf.batch_matmul(x, [w] * 1000)

但是我会使用 tf.tile 而不是 [w] * 1000