pytorch 笔记:dist 和 cdist

1 dist

1.1 基本使用方法

torch.dist(input, other, p=2)

计算两个Tensor之间的p-范数

1.2 主要参数

input 输入张量
other 另一个输入张量
p 范数

input 和 other的形状需要是可广播的

1.3 举例

import torch

x=torch.randn(4)
x
#tensor([ 1.2698, -0.1209,  0.0462, -1.3271])

y=torch.randn(4)
y
#tensor([ 0.6590, -0.8689, -1.0083,  0.5733])

torch.dist(x,y)
#tensor(2.3783)
z=torch.randn((2,4))
z
'''
tensor([[-0.9118,  1.8019, -0.0162, -0.1969],
        [ 0.2998, -0.1147,  1.1427, -0.9425]])
'''

torch.dist(x,z)
#tensor(3.4683)

2 cdist

2.1 基本使用方法

torch.cdist(x1, x2, p=2.0, compute_mode='use_mm_for_euclid_dist_if_necessary')

2.2 主要参数

x1 B  × P × M大小的tensor
x2 B × R × M 大小的tensor
p 范数
compute_mode 指定计算欧几里得距离(p=2)时的方法。有三个选项:
  • use_mm_for_euclid_dist_if_necessary:如果 P > 25 或 R > 25,则使用矩阵乘法方法计算欧几里得距离。
  • use_mm_for_euclid_dist:总是使用矩阵乘法方法计算欧几里得距离。
  • donot_use_mm_for_euclid_dist:永不使用矩阵乘法方法计算欧几里得距离。

返回的大小是B × P × R

如果p∈(0,∞),那么这个方法和scipy.spatial.distance.cdist(input,’minkowski’, p=p)是一样的

如果p=0,那么这个方法和scipy.spatial.distance.cdist(input,‘hamming’)是一样的

2.4 使用矩阵乘法速度变慢?

  • 如果数据集较大,或者你有访问高性能计算资源(如GPU),则使用 "use_mm_for_euclid_dist" 可能会更快。
  • 相反,如果数据集较小,或者你的计算资源有限(如只使用CPU),那么 "donot_use_mm_for_euclid_dist" 可能是更好的选择
%%timeit
points1 = torch.rand((5120, 2))
points2 = torch.rand((5120, 2))
torch.cdist(points1, points2, p=2.0, compute_mode="donot_use_mm_for_euclid_dist")
#24 ms ± 4.54 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

%%timeit
points1 = torch.rand((5120, 2))
points2 = torch.rand((5120, 2))
torch.cdist(points1, points2, p=2.0)
#36.7 ms ± 2.68 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

相关推荐

  1. pytorch 笔记dist cdist

    2023-12-10 14:08:01       37 阅读
  2. pytorch中,load_state_dicttorch.load的区别?

    2023-12-10 14:08:01       5 阅读
  3. traj_dist笔记 setup.py

    2023-12-10 14:08:01       46 阅读
  4. 循环、使用dictset

    2023-12-10 14:08:01       10 阅读
  5. flask学习笔记-01-传送dict信息

    2023-12-10 14:08:01       42 阅读
  6. pytroch笔记

    2023-12-10 14:08:01       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 14:08:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 14:08:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 14:08:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 14:08:01       18 阅读

热门阅读

  1. C语言中getchar函数

    2023-12-10 14:08:01       37 阅读
  2. Codeforces Round 912 (Div. 2)补题

    2023-12-10 14:08:01       36 阅读
  3. paddle detection 怎么解析配置文件

    2023-12-10 14:08:01       29 阅读
  4. postgresql设置免密登录

    2023-12-10 14:08:01       33 阅读
  5. nodejs流

    nodejs流

    2023-12-10 14:08:01      30 阅读
  6. Linux环境FFTW源码编译 | WSL编译报错解决

    2023-12-10 14:08:01       32 阅读
  7. Electron:白话Electron开发桌面端应用

    2023-12-10 14:08:01       31 阅读
  8. K8S学习指南(4)-minikube的使用

    2023-12-10 14:08:01       37 阅读
  9. 【数据结构和算法】交替合并字符串

    2023-12-10 14:08:01       39 阅读
  10. 配置vue3+vite+eslint+prettierrc项目

    2023-12-10 14:08:01       29 阅读
  11. Android 样式与主题背景学习

    2023-12-10 14:08:01       35 阅读
  12. 华为机试真题 C++ 实现【字符串重新排列】

    2023-12-10 14:08:01       37 阅读
  13. react

    react

    2023-12-10 14:08:01      37 阅读