Python Tensorflow:按行迭代张量并执行元素乘法
我有两个张量Python Tensorflow:按行迭代张量并执行元素乘法,python,tensorflow,matrix-multiplication,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.sca
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\u fn、tf.while\u循环尝试了几种方法。然而,我不知道如何正确有效地完成它 如果我正确理解了您的问题,您希望,对于批次中的每个示例,在
y[batchnr]
中对29个形状矩阵(29,64)进行元素相乘,然后再与x进行元素相乘。如果这是正确的,那么我认为您可以使用tf.reduce\u 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)
又好又容易。谢谢:)