PyTorch 简单易懂的实现 CosineSimilarity 和 PairwiseDistance - 距离度量的操作

目录

torch.nn子模块Distance Functions解析

nn.CosineSimilarity

功能

主要参数

输入和输出的形状

使用示例

nn.PairwiseDistance

功能

主要参数

输入和输出的形状

使用示例

总结


torch.nn子模块​​​​​​​Distance Functions解析

nn.CosineSimilarity

torch.nn.CosineSimilarity 是 PyTorch 中的一个模块,用于计算两个输入之间的余弦相似度。余弦相似度是一种常用的相似度度量方式,特别适用于高维空间中的向量,如在自然语言处理、推荐系统等领域中用于比较文档或用户偏好的相似性。以下是对 CosineSimilarity 模块的功能、用法和特点的详细说明。

功能

  • 计算余弦相似度:该模块计算两个输入向量在指定维度上的余弦相似度。
  • 多维支持:可以在多维张量上操作,并在指定的维度 dim 上计算相似度。

主要参数

  • dim(int,可选):指定计算相似度的维度。默认值为1。
  • eps(float,可选):为了避免除以零,引入的一个小的数值。默认值为1e-8。

输入和输出的形状

  • 输入:两个输入张量的形状应为 (*1, D, *2),其中 D 是在 dim 维度上的大小。这两个张量在 dim 维度上的大小应该相同,而在其他维度上可以广播。
  • 输出:输出张量的形状为 (*1, *2),不包含 dim 维度。

使用示例

import torch
import torch.nn as nn# 创建输入张量
input1 = torch.randn(100, 128)
input2 = torch.randn(100, 128)# 创建 CosineSimilarity 实例
cos = nn.CosineSimilarity(dim=1, eps=1e-6)# 计算两个输入之间的余弦相似度
output = cos(input1, input2)

在这个示例中,CosineSimilarity 用于计算两个 100x128 维度张量在第一个维度(dim=1)上的余弦相似度。这种方法在比较两组高维数据的相似性时非常有用,如比较不同文档的语义相似度或用户偏好的相似度。

nn.PairwiseDistance

torch.nn.PairwiseDistance 是 PyTorch 中的一个模块,用于计算输入向量对之间的成对距离,或者输入矩阵列之间的成对距离。该模块主要用于计算两组数据之间的距离,例如在聚类、近邻搜索等应用中。接下来,我将详细介绍 PairwiseDistance 模块的功能、用法和特点。

功能

  • 成对距离计算:计算两个输入之间的成对距离,通常使用 p-范数。
  • 适用于多维数据:可以处理高维数据,计算多组数据之间的成对距离。

主要参数

  • p(实数,可选):范数的度数,可以是负数。默认值为2,表示使用欧几里得距离。
  • eps(浮点数,可选):用于避免除零的小数。默认值为1e-6。
  • keepdim(布尔值,可选):确定是否保持向量维度。默认值为 False。

输入和输出的形状

  • 输入:两个输入张量的形状可以是 (N, D)(D),其中 N 是批次维度,D 是向量维度。
  • 输出:基于输入维度的输出形状为 (N)()。如果 keepdim 为 True,则输出形状为 (N,1)(1)

使用示例

import torch
import torch.nn as nn# 创建 PairwiseDistance 实例
pdist = nn.PairwiseDistance(p=2)# 创建两组输入数据
input1 = torch.randn(100, 128)
input2 = torch.randn(100, 128)# 计算成对距离
output = pdist(input1, input2)

 在这个示例中,PairwiseDistance 用于计算两个 100x128 维度张量之间的欧几里得距离(p=2)。这种方法适用于需要比较两组数据之间距离的场景,如在机器学习中的距离度量、近邻搜索或者在计算损失函数时评估预测与实际值之间的距离。

总结

 本篇博客全面探讨了 PyTorch 框架中的两个关键的距离函数模块:nn.CosineSimilaritynn.PairwiseDistancenn.CosineSimilarity 模块专注于计算两个高维数据集之间的余弦相似度,适用于评估文档、用户偏好等在特征空间中的相似性。而 nn.PairwiseDistance 模块提供了一种计算两组数据点之间成对欧几里得距离的有效方式,这在聚类、近邻搜索或预测与实际值之间距离度量的场景中非常有用。这两个模块共同构成了在多种机器学习和数据科学应用中处理和比较数据集的基础工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/605423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【图神经网络导论】之第9章模型变体(刘知远)

第9章不同图类型的模型变体 文章目录 第9章不同图类型的模型变体9.1 有向图9.2 异构图9.3 带有边信息的图9.4 动态图9.5 多维图 第4章介绍的基础GNN模型"被用于处理无向图,这些图包含具有标签的节点,是最简单的图。然而,在现实世界中还有…

Linux基础知识点(八-POSXI互斥锁)

目录 一、互斥锁基本概念 1.1 互斥相关背景概念 1.2 互斥锁(mutex) 1.3 死锁 二、初始化互斥锁 2.1 静态初始化 2.2 动态初始化 三、获取与释放互斥锁 四、销毁互斥锁 一、互斥锁基本概念 1.1 互斥相关背景概念 临界资源:多线程执行流共享的资源就叫做…

【事务】事务传播级别

Spring事务定义了7种传播机制: PROPAGATION_REQUIRED:默认的Spring事物传播级别,若当前存在事务,则加入该事务,若不存在事务,则新建一个事务。 PAOPAGATION_REQUIRE_NEW:若当前没有事务&#x…

PyTorch 简单易懂的 Embedding 和 EmbeddingBag - 解析与实践

目录 torch.nn子模块Sparse Layers详解 nn.Embedding 用途 主要参数 注意事项 使用示例 从预训练权重创建嵌入 nn.EmbeddingBag 功能和用途 主要参数 使用示例 从预训练权重创建 总结 torch.nn子模块Sparse Layers详解 nn.Embedding torch.nn.Embedding 是 PyTo…

06.函数和模块的使用

函数和模块的使用 在讲解本章节的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解。 事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案。想到这一点问题的答案就呼之欲出了。 可以用Python的程序来…

基于ssm的大湾区旅游推荐系统的设计与实现+vue论文

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统大湾区旅游景点信息管理难度大,容错率低&…

美创科技葛宏彬:夯实安全基础,对医疗数据风险“逐个击破”

导读 解决医疗机构“临床业务数据合规流动”与“重要数据安全防护”两大难题。 2023年11月11日,在2023年南湖HIT论坛上,HIT专家网联合杭州美创科技股份有限公司(以下简称美创科技)发布《医疗数据安全风险分析及防范实践》白皮书…

完成python+neo4j+django踩坑记录

使用Django进行后端控制,Echarts进行前端显示 例子django安装1、django启动2、django初体验3、django踩坑【已解决】You have 18 unapplied migration(s). Your project may not work properly until you apply the migra【已解决】运行neo4j出现报错 Failed to sta…

回车事件怎样绑定?

首先要记住一点,回车事件只能在js代码中绑定,在HTML中绑定是获取不到的,下面是我自己写的一个示例,大家可以参考一下。 importt.onkeydown function(event) {let val document.getElementById(importt).value;let e event || …

目标检测COCO数据集与评价体系mAP

1.mAP 2.IoU IoU也就是交并比,也称为 Jaccard 指数,用于计算真实边界框与预测边界框之间的重叠程度。它是真值框与预测边界框的交集和并集之间的比值。Ground Truth边界框是测试集中手工标记的边界框,用于指定目标图像的位置以及预测的边界框…

浅讲人工智能,初识人工智能几个重要领域。

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

设置5台SSH互免的虚拟机服务器配置

搭建一套集群虚拟机,往往都需要互免设置,过程很简单,避免以后再搭建还得网上搜索,我直接将这一个步骤写成笔记,记录下来,方便后续查阅。 步骤如下—— 1、准备五台机器 服务器名字服务器IPhadoop1192.16…

昇腾多卡通信教程【配置网络检测对象IP】

无法通信会出现的错误如下 一、网络健康状态报错 命令原型 hccn_tool [-i %d] -netdetect -s [address %s]命令功能 本功能支持用户执行命令获取网络健康状态(本端与所配置的检测IP之间的连通状态),用户可指定上报的状态信息名称。 状态信…

Javaweb之Mybatis的XML配置文件的详细解析

2. Mybatis的XML配置文件 Mybatis的开发有两种方式: 注解 XML 2.1 XML配置文件规范 使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在…

kotlin的抽象类和抽象方法

在 Kotlin 中,抽象类和抽象方法是面向对象编程中的概念,用于实现抽象和多态性。以下是有关 Kotlin 抽象类和抽象方法的详细信息: 抽象类: 定义: 抽象类是用 abstract 关键字声明的类,不能直接实例化。它可…

从零开始构建区块链:我的区块链开发之旅

1.引言 1.区块链技术的兴起和重要性 区块链技术,作为数字化时代的一项颠覆性创新,已经成为当今世界最令人瞩目的技术之一。自比特币的问世以来,区块链技术已经从仅仅支持加密货币发展成为一种具有广泛应用前景的分布式账本技术。其核心优势…

顺序表的实现(C语言)

本文章主要对顺序表的介绍以及数据结构的定义,以及几道相关例题,帮助大家更好理解顺序表. 文章目录 前言 一、顺序表的静态实现 二、顺序表的动态实现 三.定义打印顺序表函数 四.定义动态增加顺序表长度函数 五.创建顺序表并初始化 六.顺序表的按位查找 七.顺序表的按值…

如何下载 GOES(Geostationary Operational Environmental Satellite)卫星数据

GOES是指地球静止轨道卫星(Geostationary Operational Environmental Satellite)系统,它是美国国家海洋和大气管理局(NOAA)和美国国家航空航天局(NASA)合作开发和运营的一系列气象卫星。这些卫星…

如何编写高效的正则表达式?

正则表达式(Regular Expression,简称regex)是一种强大的文本处理技术,广泛应用于各种编程语言和工具中。本文将从多个方面介绍正则表达式的原理、应用和实践,帮助你掌握这一关键技术。 正则可视化 | 一个覆盖广泛主题…

19、Kubernetes核心技术 - 资源限制

目录 一、概述 二、Kubernetes 中的资源单位 2.1、CPU资源单位 2.2、内存资源单位 三、Pod资源限制 四、namespace资源限制 4.1、为命名空间配置内存和 CPU 配额 4.2、为命名空间配置默认的内存请求和限制 4.3、为命名空间配置默认的CPU请求和限制 五、超过容器限制的…