计算批次中的成对距离而无需在Tensorflow中复制张量?

犹太人

我想在Tensorflow中计算一批特征的成对平方距离。我有一个简单的实现,通过平铺原始张量来使用+和*操作:

def pairwise_l2_norm2(x, y, scope=None):
    with tf.op_scope([x, y], scope, 'pairwise_l2_norm2'):
        size_x = tf.shape(x)[0]
        size_y = tf.shape(y)[0]
        xx = tf.expand_dims(x, -1)
        xx = tf.tile(xx, tf.pack([1, 1, size_y]))

        yy = tf.expand_dims(y, -1)
        yy = tf.tile(yy, tf.pack([1, 1, size_x]))
        yy = tf.transpose(yy, perm=[2, 1, 0])

        diff = tf.sub(xx, yy)
        square_diff = tf.square(diff)

        square_dist = tf.reduce_sum(square_diff, 1)

        return square_dist

此函数将大小为(m,d)和(n,d)的两个矩阵作为输入,并计算每个行向量之间的平方距离。输出是大小为(m,n)的矩阵,元素为'd_ij = dist(x_i,y_j)'。

问题是我有很多批处理,并且高暗度特征'm,n,d'复制张量会占用大量内存。我正在寻找另一种方法来实现此目的,而不会增加内存使用量,仅存储最终的距离张量。有点像是双循环原始张量。

雅罗斯拉夫·布拉托夫(Yaroslav Bulatov)

您可以使用一些线性代数将其转换为矩阵运算。请注意,你所需要的矩阵D,其中a[i]i你原来的矩阵的行和第

D[i,j] = (a[i]-a[j])(a[i]-a[j])'

您可以将其重写为

D[i,j] = r[i] - 2 a[i]a[j]' + r[j]

哪里r[i]i原始矩阵第th行的平方范数

在支持标准广播规则的系统中,您可以将其r视为列向量,并写D

D = r - 2 A A' + r'

在TensorFlow中,您可以将其写为

A = tf.constant([[1, 1], [2, 2], [3, 3]])
r = tf.reduce_sum(A*A, 1)

# turn r into column vector
r = tf.reshape(r, [-1, 1])
D = r - 2*tf.matmul(A, tf.transpose(A)) + tf.transpose(r)
sess = tf.Session()
sess.run(D)

结果

array([[0, 2, 8],
       [2, 0, 2],
       [8, 2, 0]], dtype=int32)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++中的成对距离计算

来自分类Dev

计算缺少值的scipy中的成对距离

来自分类Dev

在TensorFlow中计算张量中所有向量之间的成对欧几里得距离的有效方法

来自分类Dev

使用TensorFlow进行成对距离计算

来自分类Dev

如何使用外积计算R中的成对欧几里得距离

来自分类Dev

如何使用外部乘积计算R中的成对欧几里得距离

来自分类Dev

R中的成对计算

来自分类Dev

计算张量流中多个批次的精确移动平均值

来自分类Dev

计算张量流中3D张量的像素方向距离?

来自分类Dev

计算张量中每个元素相对于另一个张量的最小距离

来自分类Dev

从Tensorflow 2.1张量中每批次提取一个元素

来自分类Dev

在excel中打开文件而无需重新计算NOW()

来自分类Dev

保存Tensorflow图以在Tensorboard中查看而无需摘要操作

来自分类Dev

用熊猫中的条件值计算行之间的成对相似度/距离

来自分类Dev

Haskell中数字列表的成对距离

来自分类Dev

熊猫中不同元素的成对距离

来自分类Dev

朱莉娅(Julia):跨观测张量广播成对距离计算

来自分类Dev

Cloudant中的距离计算

来自分类Dev

如何复制基于Tensorflow队列中的张量属性(“过采样”)的输入张量?

来自分类Dev

将成对距离转换为R中的距离矩阵

来自分类Dev

访问距离矩阵中的特定成对距离(scipy / numpy)

来自分类Dev

在工厂类中实现继承而无需在Javascript中复制代码

来自分类Dev

成对正弦距离计算

来自分类Dev

损失函数在Tensorflow中如何工作?如何从批次中计算得出?

来自分类Dev

张量流中推断时的批次归一化

来自分类Dev

张量流中的批次大小是否不规则?

来自分类Dev

在PyTorch中沿批次维度计算损失

来自分类Dev

将注释添加到Shiny中的plotOutput / renderPlot中,而无需重新计算

来自分类Dev

从 Tensorflow 中的图像列表中提取批次

Related 相关文章

  1. 1

    C ++中的成对距离计算

  2. 2

    计算缺少值的scipy中的成对距离

  3. 3

    在TensorFlow中计算张量中所有向量之间的成对欧几里得距离的有效方法

  4. 4

    使用TensorFlow进行成对距离计算

  5. 5

    如何使用外积计算R中的成对欧几里得距离

  6. 6

    如何使用外部乘积计算R中的成对欧几里得距离

  7. 7

    R中的成对计算

  8. 8

    计算张量流中多个批次的精确移动平均值

  9. 9

    计算张量流中3D张量的像素方向距离?

  10. 10

    计算张量中每个元素相对于另一个张量的最小距离

  11. 11

    从Tensorflow 2.1张量中每批次提取一个元素

  12. 12

    在excel中打开文件而无需重新计算NOW()

  13. 13

    保存Tensorflow图以在Tensorboard中查看而无需摘要操作

  14. 14

    用熊猫中的条件值计算行之间的成对相似度/距离

  15. 15

    Haskell中数字列表的成对距离

  16. 16

    熊猫中不同元素的成对距离

  17. 17

    朱莉娅(Julia):跨观测张量广播成对距离计算

  18. 18

    Cloudant中的距离计算

  19. 19

    如何复制基于Tensorflow队列中的张量属性(“过采样”)的输入张量?

  20. 20

    将成对距离转换为R中的距离矩阵

  21. 21

    访问距离矩阵中的特定成对距离(scipy / numpy)

  22. 22

    在工厂类中实现继承而无需在Javascript中复制代码

  23. 23

    成对正弦距离计算

  24. 24

    损失函数在Tensorflow中如何工作?如何从批次中计算得出?

  25. 25

    张量流中推断时的批次归一化

  26. 26

    张量流中的批次大小是否不规则?

  27. 27

    在PyTorch中沿批次维度计算损失

  28. 28

    将注释添加到Shiny中的plotOutput / renderPlot中,而无需重新计算

  29. 29

    从 Tensorflow 中的图像列表中提取批次

热门标签

归档