首页 文章

TensorFlow中矩阵和向量的有效元素乘法

提问于
浏览
31

什么是倍增(逐元素)2D张量(矩阵)的最有效方法:

x11 x12 .. x1N
...
xM1 xM2 .. xMN

通过垂直向量:

w1
...
wN

获得一个新的矩阵:

x11*w1 x12*w2 ... x1N*wN
...
xM1*w1 xM2*w2 ... xMN*wN

为了给出一些上下文,我们可以批量处理 M 数据样本,并且每个 N -element样本必须乘以存储在变量中的权重 w ,最终为每行 i 选择最大 Xij*wj .

1 回答

  • 39

    执行此操作的最简单代码依赖于tf.multiply() *的广播行为,该行为基于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 )执行相同的操作 .

相关问题