什么是倍增(逐元素)2D张量(矩阵)的最有效方法:
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
.
最简单的代码依赖于*的广播行为,它基于numpy的广播行为:tf.multiply()
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
)执行相同的操作.