TensorFlow 中矩阵和向量的高效逐元素乘法
Efficient element-wise multiplication of a matrix and a vector in TensorFlow
乘以(按元素)二维张量(矩阵)的最有效方法是什么:
x11 x12 .. x1N
...
xM1 xM2 .. xMN
通过垂直矢量:
w1
...
wN
获取新矩阵:
x11*w1 x12*w2 ... x1N*wN
...
xM1*w1 xM2*w2 ... xMN*wN
为了提供一些背景信息,我们在一个批次中有 M
个可以并行处理的数据样本,每个 N
元素样本必须乘以存储的权重 w
在变量中最终为每一行选择最大的 Xij*wj
i
.
执行此操作的最简单代码依赖于 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]
* 在旧版本的 TensorFlow 中,tf.multiply()
被称为 tf.mul()
。您还可以使用 *
运算符(即 xw = x * w
)执行相同的操作。
乘以(按元素)二维张量(矩阵)的最有效方法是什么:
x11 x12 .. x1N
...
xM1 xM2 .. xMN
通过垂直矢量:
w1
...
wN
获取新矩阵:
x11*w1 x12*w2 ... x1N*wN
...
xM1*w1 xM2*w2 ... xMN*wN
为了提供一些背景信息,我们在一个批次中有 M
个可以并行处理的数据样本,每个 N
元素样本必须乘以存储的权重 w
在变量中最终为每一行选择最大的 Xij*wj
i
.
执行此操作的最简单代码依赖于 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]
* 在旧版本的 TensorFlow 中,tf.multiply()
被称为 tf.mul()
。您还可以使用 *
运算符(即 xw = x * w
)执行相同的操作。