首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >l2轴上损失

l2轴上损失
EN

Stack Overflow用户
提问于 2019-01-27 13:46:40
回答 2查看 934关注 0票数 0

我使用python 3和tensorflow,我有一个矩阵,每一行都是一个向量,我想得到一个距离矩阵,即计算机使用l2范数损失,矩阵中的每个值都是两个向量之间的距离。

e.g

代码语言:javascript
复制
Dij = l2_distance(M(i,:), Mj(j,:)) 

谢谢

编辑:这不是一个重复的,另一个问题是计算矩阵的每一行的范数,我需要每一行到另一行的成对范数距离。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-27 16:09:18

这个答案展示了如何计算向量集合之间平方差的成对和。通过简单地用平方根进行后组合,您就可以达到所需的成对距离:

代码语言:javascript
复制
M = tf.constant([[0, 0], [2, 2], [5, 5]], dtype=tf.float64)
r = tf.reduce_sum(M*M, 1)
r = tf.reshape(r, [-1, 1])
D2 = r - 2*tf.matmul(M, tf.transpose(M)) + tf.transpose(r)
D = tf.sqrt(D2)

with tf.Session() as sess:
    print(sess.run(D))

# [[0.         2.82842712 7.07106781]
#  [2.82842712 0.         4.24264069]
#  [7.07106781 4.24264069 0.        ]]
票数 1
EN

Stack Overflow用户

发布于 2019-01-27 14:03:05

您可以根据欧氏距离公式( TensorFlow损失)编写L2操作。

代码语言:javascript
复制
distance = tf.sqrt(tf.reduce_sum(tf.square(tf.subtract(x1, x2))))

样本将是

代码语言:javascript
复制
import tensorflow as tf

x1 = tf.constant([1, 2, 3], dtype=tf.float32)
x2 = tf.constant([4, 5, 6], dtype=tf.float32)

distance = tf.sqrt(tf.reduce_sum(tf.square(tf.subtract(x1, x2))))

with tf.Session() as sess:
  print(sess.run(distance))

正如@fuglede所指出的,如果您想输出成对的距离,那么我们可以使用

代码语言:javascript
复制
tf.sqrt(tf.square(tf.subtract(x1, x2)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54388794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档