Efficient Element-wise Multiplication Of A Matrix And A Vector In Tensorflow
What would be the most efficient way to multiply (element-wise) a 2D tensor (matrix): x11 x12 .. x1N ... xM1 xM2 .. xMN by a vertical vector: w1 ... wN to obtain a new matrix: x1
Solution 1:
The simplest code to do this relies on the broadcasting behavior of tf.multiply()
, which is based on numpy's broadcasting behavior:
x = tf.constant(5.0, shape=[5, 6])
w = tf.constant([0.0, 1.0, 2.0, 3.0, 4.0, 5.0])
xw = tf.multiply(x, w)
max_in_rows = tf.reduce_max(xw, 1)
sess = tf.Session()
print sess.run(xw)
# ==> [[0.0, 5.0, 10.0, 15.0, 20.0, 25.0],# [0.0, 5.0, 10.0, 15.0, 20.0, 25.0],# [0.0, 5.0, 10.0, 15.0, 20.0, 25.0],# [0.0, 5.0, 10.0, 15.0, 20.0, 25.0],# [0.0, 5.0, 10.0, 15.0, 20.0, 25.0]]
print sess.run(max_in_rows)
# ==> [25.0, 25.0, 25.0, 25.0, 25.0]
In older versions of TensorFlow, tf.multiply()
was called tf.mul()
. You can also use the *
operator (i.e. xw = x * w
) to perform the same operation.
Post a Comment for "Efficient Element-wise Multiplication Of A Matrix And A Vector In Tensorflow"