计算特征向量间欧式距离的快捷方法
最近因为课题需要,使用欧式距离来计算多个特征向量间的距离。开始的想法是使用循环来解决,发现计算复杂度高,时间长
在博客中看到作者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
计算特征向量间欧式距离的快捷方法相关推荐
- Java 根据经纬度计算两点间的距离
Java实现 public final class DistanceUtils {/*** 地球半径,单位 km*/private static final double EARTH_RADIUS = ...
- 经纬度互换、换算成米、两点的经纬度计算两点间的距离
经纬度互换 度(DDD):E 108.90593度 N 34.21630度 如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经E 108度54分22.2秒?转换方法是将108 ...
- ArcGIS操作系列14- 经纬度互换、换算成米、两点的经纬度计算两点间的距离
1. 经纬度互换 度(DDD):E 108.90593度 N 34.21630度 1.1 如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经E 108度54分22.2秒? ...
- 根据地图经纬度计算两点间的距离
经纬度丢失计算距离 1.纬度相同,经度不同 在纬度相同的情况下: 经度每隔0.00001度,距离相差约1米: 每隔0.0001度,距离相差约10米: 每隔0.001度,距离相差约100米: 每隔0.0 ...
- 1815. 计算两点间的距离
水题也要注意一点,确实简单,不过还是错了,错在格式化输出! 1815. 计算两点间的距离 总提交数量: 5934 通过数量: 1093 评价: 1.9/5.0(38 票) 012345 ...
- ZZULIOJ 计算两点间的距离(多实例测试)
计算两点间的距离(多实例测试) 题目描述 入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. 输入 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间 ...
- OJ1084: 计算两点间的距离(多实例测试)(C语言)
OJ1084: 计算两点间的距离(多实例测试) 题目描述 入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. 输入 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2 ...
- HDU2001 计算两点间的距离【入门】
计算两点间的距离 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- python计算坐标点欧式距离_Python计算一个点到所有点的欧式距离实现方法
Python计算一个点到所有点的欧式距离实现方法 如下所示: distances = np.sqrt(np.sum(np.asarray(airportPosition - x_vals)**2, a ...
最新文章
- partition by 函数
- 实验4 进程运行轨迹的跟踪与统计
- iPhone判断是否已插入SIM卡
- oracle 存储过程 存储 blob,穿越oracle存储过程的Blob参数上传文件
- [转载] Python模块
- UVA - 815 Flooded!
- Mbed OS :DMX512 灯光控制协议
- javacv获取摄像头列表
- JDK源码解析之HashSet
- 影视剧作中的经典桥段部分
- Android第三方库收藏汇总
- 写了很久,这是一份最适合/贴切普通大众/科班/非科班的『学习路线』
- 什么是HTTPS协议?HTTPS协议优势有哪些?
- kelvin模型蠕变方程_基于改进Kelvin模型的三维蠕变损伤模型研究
- 移动WEB - 自我总结
- 设计上不花钱的海澜之家,如何打开男人的衣柜?
- USB 设置配置(SetConfiguration)和设置接口(SetInterface)的区别与联系
- FT2000盒子运行ubuntu20.04系统
- 年轻就要勇敢闯荡校园招聘会PPT模板
- 《lwip学习9》-- UDP协议
热门文章
- 淘宝卖家承担运费怎么承担?什么情况卖家承担?
- HALCON 9.0 简体中文版机器视觉软件交流共享
- 计算机信息管理专业的职业生涯规划,计算机信息管理专业职业生涯规划书
- 雅思英语听力考试综述
- android TextView中间删除线显示
- python字母金字塔代码_python实现输入任意一个大写字母生成金字塔的示例
- 【每日早报】2019/08/15
- C语言详解 - 枚举类型
- 如何用计算机连接蓝牙设备管理器,蓝牙配置选项允许Bluetooth设备连接到此计算机不可用解决方法-win7蓝牙怎么打开...
- 打造泛在电力物联网大数据平台