【问题标题】:How to construct square of pairwise difference from a vector in tensorflow?如何从张量流中的向量构造成对差异的平方?
【发布时间】:2018-12-03 13:29:39
【问题描述】:

我在 TensorFlow 中有一个 N 维的一维向量,

如何构造两两差的平方和?

示例

输入向量
[1,2,3]
输出 6
计算为

(1-2)^2+(1-3)^2+(2-3)^2.

如果我将输入作为 N 维向量 l,则输出应该是 sigma_{i,j}((l_i-l_j)^2)。

添加的问题:如果我有一个二维矩阵并且想对矩阵的每一行执行相同的过程,然后对所有行的结果进行平均,我该怎么做?非常感谢!

【问题讨论】:

    标签: python tensorflow vectorization tensor pairwise


    【解决方案1】:

    对于成对差异,减去inputinput 的转置,只取上三角部分,如:

    pair_diff = tf.matrix_band_part(a[...,None] - 
                          tf.transpose(a[...,None]), 0, -1)
    

    然后你可以对差值求平方和求和。

    代码:

    a = tf.constant([1,2,3])
    pair_diff = tf.matrix_band_part(a[...,None] - 
                          tf.transpose(a[...,None]), 0, -1)
    output = tf.reduce_sum(tf.square(pair_diff))
    
    with tf.Session() as sess:
      print(sess.run(output))
      # 6
    

    【讨论】:

    • 谢谢,这行得通!请问“a[...,None]”是什么意思?
    • expand_dims(a,1) 相同,`a` 现在变为 (3,1)
    • 非常感谢,维杰!如果输入是二维矩阵,我想对矩阵的每一行执行相同的处理,然后平均结果,我该怎么办?非常感谢!!!
    猜你喜欢
    • 2018-12-03
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多