【pytorch】torch.cdist使用说明

这篇具有很好参考价值的文章主要介绍了【pytorch】torch.cdist使用说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用说明

torch.cdist的使用介绍如官网所示,

torch.cdist,pytorch,pytorch,深度学习,python

它是批量计算两个向量集合的距离。

其中, x1和x2是输入的两个向量集合。

p 默认为2,为欧几里德距离。

它的功能上等同于 scipy.spatial.distance.cdist(input,’minkowski’, p=p)

如果x1的shape是 [B,P,M], x2的shape是[B,R,M],则cdist的结果shape是 [B,P,R]

进一步的解释

x1一般是输入矢量,而x2一般是码本。

x2中所有的元素分别与x1中的每一个元素求欧几里德距离(当p默认为2时)

如下面示例

import torch

x1 = torch.FloatTensor([0.1, 0.2, 0, 0.5]).view(4, 1)

x2 = torch.FloatTensor([0.2, 0.3]).view(2, 1)

print(torch.cdist(x1,x2))

x2中的所有元素分别与x1中的每一个元素求欧几里德距离,即有如下步骤

x 11 = ( 0.1 − 0.2 ) 2 = 0.1 x 12 = ( 0.1 − 0.3 ) 2 = 0.2 x 21 = ( 0.2 − 0.2 ) 2 = 0 x 22 = ( 0.2 − 0.3 ) 2 = 0.1 x 31 = ( 0 − 0.2 ) 2 = 0.2 x 32 = ( 0 − 0.3 ) 2 = 0.3 x 41 = ( 0.5 − 0.2 ) 2 = 0.3 x 42 = ( 0.5 − 0.3 ) 2 = 0.2 x_{11} = \sqrt{ (0.1-0.2)^2} = 0.1 \newline x_{12} = \sqrt { (0.1-0.3)^2} = 0.2 \newline x_{21} = \sqrt { (0.2-0.2)^2} = 0 \newline x_{22} = \sqrt { (0.2-0.3)^2} = 0.1 \newline x_{31} = \sqrt { (0-0.2)^2} = 0.2 \newline x_{32} = \sqrt { (0-0.3)^2} = 0.3 \newline x_{41} = \sqrt { (0.5-0.2)^2 } =0.3\newline x_{42} = \sqrt { (0.5-0.3)^2 } = 0.2\newline x11=(0.10.2)2 =0.1x12=(0.10.3)2 =0.2x21=(0.20.2)2 =0x22=(0.20.3)2 =0.1x31=(00.2)2 =0.2x32=(00.3)2 =0.3x41=(0.50.2)2 =0.3x42=(0.50.3)2 =0.2

所以运行结果为
torch.cdist,pytorch,pytorch,深度学习,python

扩张到2维的情况

如下面示例

import torch

x1 = torch.FloatTensor([0.1, 0.2, 0.1, 0.5, 0.2, -0.9, 0.8, 0.4]).view(4, 2)

x2 = torch.FloatTensor([0.2, 0.3, 0, 0.1]).view(2, 2)

print(torch.cdist(x1,x2))

x1和x2数据是二维的,
torch.cdist,pytorch,pytorch,深度学习,python

x2中的所有元素分别与x1中的每一个元素求欧几里德距离,即有如下步骤

x 11 = ( 0.1 − 0.2 ) 2 + ( 0.2 − 0.3 ) 2 = 0.02 = 0.1414 x 12 = ( 0.1 − 0.0 ) 2 + ( 0.2 − 0.1 ) 2 = 0.02 = 0.1414 x 21 = ( 0.1 − 0.2 ) 2 + ( 0.5 − 0.3 ) 2 = 0.05 = 0.2236 x 22 = ( 0.1 − 0.0 ) 2 + ( 0.5 − 0.1 ) 2 = 0.17 = 0.4123 x 31 = ( 0.2 − 0.2 ) 2 + ( − 0.9 − 0.3 ) 2 = 1.2 x 32 = ( 0.2 − 0.0 ) 2 + ( − 0.9 − 0.1 ) 2 = ( 1.04 ) = 1.0198 x 41 = ( 0.8 − 0.2 ) 2 + ( 0.4 − 0.3 ) 2 = ( 0.37 ) = 0.6083 x 42 = ( 0.8 − 0.0 ) 2 + ( 0.4 − 0.1 ) 2 = ( 0.73 ) = 0.8544 x_{11} = \sqrt{ (0.1-0.2)^2 + (0.2-0.3)^2 } = \sqrt{0.02} = 0.1414 \newline x_{12} = \sqrt { (0.1-0.0)^2 + (0.2-0.1)^2 } = \sqrt{0.02} = 0.1414 \newline x_{21} = \sqrt { (0.1-0.2)^2 + (0.5-0.3)^2 } = \sqrt{0.05} = 0.2236 \newline x_{22} = \sqrt { (0.1-0.0)^2 + (0.5-0.1)^2 } = \sqrt{0.17} = 0.4123 \newline x_{31} = \sqrt { (0.2-0.2)^2 + (-0.9-0.3)^2} = 1.2 \newline x_{32} = \sqrt { (0.2-0.0)^2 + (-0.9-0.1)^2} = \sqrt(1.04) = 1.0198 \newline x_{41} = \sqrt { (0.8-0.2)^2 + (0.4-0.3)^2 } = \sqrt(0.37) = 0.6083 \newline x_{42} = \sqrt { (0.8-0.0)^2 + (0.4-0.1)^2 } = \sqrt(0.73) = 0.8544 \newline x11=(0.10.2)2+(0.20.3)2 =0.02 =0.1414x12=(0.10.0)2+(0.20.1)2 =0.02 =0.1414x21=(0.10.2)2+(0.50.3)2 =0.05 =0.2236x22=(0.10.0)2+(0.50.1)2 =0.17 =0.4123x31=(0.20.2)2+(0.90.3)2 =1.2x32=(0.20.0)2+(0.90.1)2 =( 1.04)=1.0198x41=(0.80.2)2+(0.40.3)2 =( 0.37)=0.6083x42=(0.80.0)2+(0.40.1)2 =( 0.73)=0.8544

所以结果如下

torch.cdist,pytorch,pytorch,深度学习,python

p=2的欧几里德距离也是L2范式,如果p=1即是L1范式
上面的例子修改一下p参数

import torch

x1 = torch.FloatTensor([0.1, 0.2, 0.1, 0.5, 0.2, -0.9, 0.8, 0.4]).view(4, 2)

x2 = torch.FloatTensor([0.2, 0.3, 0, 0.1]).view(2, 2)

print(torch.cdist(x1,x2,p=1))

结果如下,这里就不一个一个运算了。
torch.cdist,pytorch,pytorch,深度学习,python文章来源地址https://www.toymoban.com/news/detail-791618.html

到了这里,关于【pytorch】torch.cdist使用说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • torch.cdist高效计算大矩阵相似度

    问题定义 现有矩阵 A ∈ R N × C , B ∈ R M × C Ain R^{Ntimes C}, Bin R^{Mtimes C} A ∈ R N × C , B ∈ R M × C ,需要计算矩阵 A A A 和 B B B 的相似度(欧式距离)矩阵 S ∈ R N × M Sin R^{Ntimes M} S ∈ R N × M , N N N 和 M M M 很大。可以使用pytorch提供的 torch.cdist 方法,记得使用GPU计算。

    2024年02月14日
    浏览(33)
  • 深度学习:Pytorch安装的torch与torchvision的cuda版本冲突问题与解决历程记录

    今天不小心将conda环境中的一个pytorch环境中的torch包给搞混了,将其更新了一下,发生了一些问题: 当时运行了一下这个代码:  pip install torchvision --upgrade 导致了环境中包的混乱: 只能说欲哭无泪,当时这个 pytorch环境中我是安装的CUDA11.8的版本应该,后来安装了cpu版本的将

    2024年02月20日
    浏览(37)
  • 【Qt 学习笔记】Qt常用控件 | 输入类控件 | Text Edit的使用及说明

    博客主页:Duck Bro 博客主页 系列专栏:Qt 专栏 关注博主,后期持续更新系列文章 如果有错误感谢请大家批评指出,及时修改 感谢大家点赞👍收藏⭐评论✍ 文章编号:Qt 学习笔记 / 29 1. 简介 QTextEdit是Qt中的一个可编辑的文本框控件,可以用于显示和编辑多行文本。 它是基于

    2024年04月28日
    浏览(37)
  • pytorch中torch.roll用法说明

    torch.roll(input, shifts, dims=None)  这个函数是用来移位的,是顺移。input是咱们要移动的tensor向量,shifts是要移动到的位置,要移动去哪儿,dims是值在什么方向上(维度)去移动。比如2维的数据,那就两个方向,横着或者竖着。最关键的一句话,所有操作针对的是 第一行或者第一列

    2024年04月24日
    浏览(19)
  • 举例说明PyTorch函数torch.cat与torch.stack的区别

    torch.cat 用于在 给定的维度 上连接多个张量,它将这些张量沿着指定维度堆叠在一起。 torch.stack 用于在 新的维度 上堆叠多个张量,它会创建一个新的维度,并将这些张量沿着这个新维度堆叠在一起。 Example1: Example1: Example2:

    2024年02月09日
    浏览(31)
  • Pytorch中torch.rand()、torch.randn()、torch.randint()、torch.randperm()几个函数的说明

    1. torch.rand(*sizes, out=None) - Tensor 参数 : sizes (int...) :整数序列,定义了输出张量的形状。 out (Tensor, 可选) :输出张量。 返回值 : 一个新的张量,包含了在区间 [0, 1) 上均匀分布的随机数。 用途 : torch.rand 用于生成指定形状的张量,其元素从 [0, 1) 的均匀分布中随机抽取。

    2024年01月19日
    浏览(45)
  • 物联网|按键实验---学习I/O的输入及中断的编程|函数说明的格式|如何使用CMSIS的延时|读取通过外部中断实现按键捕获代码的实现及分析-学习笔记(14)

    1 代码的流程分析 2 代码的实现 库函数HAL_Init(void)分析: HAL_Delay()系统延时的步骤: 它的实现步骤如下: 1.用变量获得系统时钟源计数器的值 2.获得要延迟时间的参数值 3.比较两者大小,若时钟计数器的值大于要实现延迟的值,就会困在循环里;反之,跳出循环,延时完成。

    2024年02月14日
    浏览(40)
  • 【VxWorks】VxWorks系统详细介绍说明,环境搭建说明,使用场景,使用实例

    目录 1.VxWorks 概述 2.详细介绍 2.环境搭建说明 3.使用场景 4.使用实例         VxWorks 是一款实时操作系统(RTOS),广

    2024年02月15日
    浏览(28)
  • 深度学习之pytorch 中 torch.nn介绍

    pytorch 中必用的包就是 torch.nn,torch.nn 中按照功能分,主要如下有几类: 1. Layers(层):包括全连接层、卷积层、池化层等。 2. Activation Functions(激活函数):包括ReLU、Sigmoid、Tanh等。 3. Loss Functions(损失函数):包括交叉熵损失、均方误差等。 4. Optimizers(优化器):包括

    2024年02月22日
    浏览(35)
  • iotop命令使用说明及iotop输出排序操作说明

    iotop是一个用来显示实时的磁盘活动 的工具,可查看哪些程序、进程或线程占用io过多。 iotop监控 Linux 内核输出的 I/O 使用信息,并且显示一个系统中进程或线程的当前 I/O 使用情况。它显示每个进程/线程读写 I/O 带宽。它同样显示当等待换入和等待 I/O 的线程/进程花费的时

    2024年04月12日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包