Tensorflow:逐行迭代张量并执行元素乘法

时间:2018-01-02 10:02:16

标签: python tensorflow matrix-multiplication

我有两个张量,

x = shape(batchsize, 29, 64), 
y = shape(batchsize, 29, 29, 64)

我想在y上逐行迭代并使用x执行元素乘法,结果应该是一个形状(批量大小,29,64)。

我将如何顺序编程:

for batchnr in range(x.shape[0]): 
    for elem in y[batchnr]:
        x[batchnr] = tf.multiply(x[batchnr], elem)

我使用tf.scan,tf.map_fn,tf.while_loop尝试了几件事。但是,我无法弄清楚如何正确而有效地做到这一点。

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你希望,对于批处理中的每个例子,在y[batchnr]中,以元素方式,然后用x,对29个形状矩阵(29,64)进行乘法运算,也是元素方面的。如果这是正确的,那么我认为你可以使用tf.reduce_prod()

例如,

# x = shape(batchsize, 29, 64), 
# y = shape(batchsize, 29, 29, 64)
# ...

z = tf.reduce_prod(y, axis=1)  # shape(batchsize, 29, 64), product of 29 matrices element-wise
r = tf.multiply(x, z)  # shape(batchsize, 29, 64)