最近因为课题需要,使用欧式距离来计算多个特征向量间的距离。开始的想法是使用循环来解决,发现计算复杂度高,时间长

在博客中看到作者GoHowz 和其引用frankzd博客,通过矩阵的方法来代替之前循环计算方法,速度提升很多!!!

作者原文:https://blog.csdn.net/IT_forlearn/article/details/100022244


为了方便后面查询,粘贴了GoHowz 博客中的计算方法如下:

def euclidean_dist(x, y):"""Args:x: pytorch Variable, with shape [m, d]y: pytorch Variable, with shape [n, d]Returns:dist: pytorch Variable, with shape [m, n]"""m, n = x.size(0), y.size(0)# xx经过pow()方法对每单个数据进行二次方操作后,在axis=1 方向(横向,就是第一列向最后一列的方向)加和,此时xx的shape为(m, 1),经过expand()方法,扩展n-1次,此时xx的shape为(m, n)xx = torch.pow(x, 2).sum(1, keepdim=True).expand(m, n)# yy会在最后进行转置的操作yy = torch.pow(y, 2).sum(1, keepdim=True).expand(n, m).t()dist = xx + yy# torch.addmm(beta=1, input, alpha=1, mat1, mat2, out=None),这行表示的意思是dist - 2 * x * yT dist.addmm_(1, -2, x, y.t())# clamp()函数可以限定dist内元素的最大最小范围,dist最后开方,得到样本之间的距离矩阵dist = dist.clamp(min=1e-12).sqrt()  # for numerical stabilityreturn dist

计算特征向量间欧式距离的快捷方法相关推荐

  1. Java 根据经纬度计算两点间的距离

    Java实现 public final class DistanceUtils {/*** 地球半径,单位 km*/private static final double EARTH_RADIUS = ...

  2. 经纬度互换、换算成米、两点的经纬度计算两点间的距离

    经纬度互换 度(DDD):E 108.90593度    N 34.21630度 如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经E 108度54分22.2秒?转换方法是将108 ...

  3. ArcGIS操作系列14- 经纬度互换、换算成米、两点的经纬度计算两点间的距离

    1. 经纬度互换 度(DDD):E 108.90593度    N 34.21630度 1.1  如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经E 108度54分22.2秒? ...

  4. 根据地图经纬度计算两点间的距离

    经纬度丢失计算距离 1.纬度相同,经度不同 在纬度相同的情况下: 经度每隔0.00001度,距离相差约1米: 每隔0.0001度,距离相差约10米: 每隔0.001度,距离相差约100米: 每隔0.0 ...

  5. 1815. 计算两点间的距离

    水题也要注意一点,确实简单,不过还是错了,错在格式化输出! 1815. 计算两点间的距离     总提交数量: 5934 通过数量: 1093 评价: 1.9/5.0(38 票) 012345     ...

  6. ZZULIOJ 计算两点间的距离(多实例测试)

    计算两点间的距离(多实例测试) 题目描述 入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. 输入 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间 ...

  7. OJ1084: 计算两点间的距离(多实例测试)(C语言)

    OJ1084: 计算两点间的距离(多实例测试) 题目描述 入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. 输入 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2 ...

  8. HDU2001 计算两点间的距离【入门】

    计算两点间的距离 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  9. python计算坐标点欧式距离_Python计算一个点到所有点的欧式距离实现方法

    Python计算一个点到所有点的欧式距离实现方法 如下所示: distances = np.sqrt(np.sum(np.asarray(airportPosition - x_vals)**2, a ...

最新文章

  1. partition by 函数
  2. 实验4 进程运行轨迹的跟踪与统计
  3. iPhone判断是否已插入SIM卡
  4. oracle 存储过程 存储 blob,穿越oracle存储过程的Blob参数上传文件
  5. [转载] Python模块
  6. UVA - 815 Flooded!
  7. Mbed OS :DMX512 灯光控制协议
  8. javacv获取摄像头列表
  9. JDK源码解析之HashSet
  10. 影视剧作中的经典桥段部分
  11. Android第三方库收藏汇总
  12. 写了很久,这是一份最适合/贴切普通大众/科班/非科班的『学习路线』
  13. 什么是HTTPS协议?HTTPS协议优势有哪些?
  14. kelvin模型蠕变方程_基于改进Kelvin模型的三维蠕变损伤模型研究
  15. 移动WEB - 自我总结
  16. 设计上不花钱的海澜之家,如何打开男人的衣柜?
  17. USB 设置配置(SetConfiguration)和设置接口(SetInterface)的区别与联系
  18. FT2000盒子运行ubuntu20.04系统
  19. 年轻就要勇敢闯荡校园招聘会PPT模板
  20. 《lwip学习9》-- UDP协议

热门文章

  1. 淘宝卖家承担运费怎么承担?什么情况卖家承担?
  2. HALCON 9.0 简体中文版机器视觉软件交流共享
  3. 计算机信息管理专业的职业生涯规划,计算机信息管理专业职业生涯规划书
  4. 雅思英语听力考试综述
  5. android TextView中间删除线显示
  6. python字母金字塔代码_python实现输入任意一个大写字母生成金字塔的示例
  7. 【每日早报】2019/08/15
  8. C语言详解 - 枚举类型
  9. 如何用计算机连接蓝牙设备管理器,蓝牙配置选项允许Bluetooth设备连接到此计算机不可用解决方法-win7蓝牙怎么打开...
  10. 打造泛在电力物联网大数据平台