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

时间:2016-11-21 10:11:21

标签: matrix tensorflow product

我有一个名为x的一维python列表,其形状为(1000),其中包含形状(3, 600)的张量元素。我还有一个形状w的张量流变量(600, 1),我希望它与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]

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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