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.CosineSimilarity 和 nn.PairwiseDistance。nn.CosineSimilarity 模块专注于计算两个高维数据集之间的余弦相似度,适用于评估文档、用户偏好等在特征空间中的相似性。而 nn.PairwiseDistance 模块提供了一种计算两组数据点之间成对欧几里得距离的有效方式,这在聚类、近邻搜索或预测与实际值之间距离度量的场景中非常有用。这两个模块共同构成了在多种机器学习和数据科学应用中处理和比较数据集的基础工具。
相关文章:
PyTorch 简单易懂的实现 CosineSimilarity 和 PairwiseDistance - 距离度量的操作
目录 torch.nn子模块Distance Functions解析 nn.CosineSimilarity 功能 主要参数 输入和输出的形状 使用示例 nn.PairwiseDistance 功能 主要参数 输入和输出的形状 使用示例 总结 torch.nn子模块Distance Functions解析 nn.CosineSimilarity torc…...
app加载不到aar中的so库
如何将so文件打入到aar包中 1 在main下面新建jniLibs目录并将so放进去 2 在android{}中添加 sourceSets {main {jniLibs.srcDir file(jni/)}}app引用不到aar中的so文件(巨坑,不去查谁知道啊) 在aar 的manifeset application标签中中添加 android:extractNativeLi…...
vue-springboot基于java的实验室安全考试系统
本系统为用户而设计制作实验室安全考试系统,旨在实现实验室安全考试智能化、现代化管理。本实验室安全考试管理自动化系统的开发和研制的最终目的是将实验室安全考试的运作模式从手工记录数据转变为网络信息查询管理,从而为现代管理人员的使用提供更多的…...
mysql+关掉密码过期
mysql关掉密码过期 要在MySQL中关闭密码过期功能,可以按照以下步骤进行操作: 登录到MySQL服务器。 使用管理员账户(如root)连接到数据库。 mysql -uroot -ppassword 运行以下命令来查看当前的密码过期设置: SHOW…...
实际项目中的环形缓冲区
在实际项目中,环形缓冲区的设计要比之前讲到的原型稍微复杂一些,需要一些接口函数来实现数据结构封装。GitHub上有个大帅哥写了一个轻量的环形缓冲区库,可以学习参考,也可以直接集成到自己的项目中,功能已经非常完善。…...
输出回文数-第11届蓝桥杯选拔赛Python真题精选
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第23讲。 输出回文数&#…...
内存溢出会导致模块测试正常,植入系统失败
前些天,遇到了一个问题:需要在系统中添加一个小功能,单独测试,然后植入系统。 代码使用了从网上下载的函数,模块单独运行,没有问题,但是放在系统中运行就会出问题。 不得已的情况下,…...
【taro react】 ---- QRCode 二维码生成
1. 需求分析 需要将输入的值转换为图片资源;由于只是单纯的展示,所以不需要很多比如加 logo 等复杂功能;不需要后端生成,直接前端操作;使用的第三方库尽可能小,功能单一;最后选择使用 qrcode-generator 库,只有 40kb。2. 使用第三方库 qrcode-generator 3. 转换 base…...
rk3566 armbian修复usb2.0并挂载U盘
文章目录 usb接口修复一 执行命令二 修改rk3566-panther-x2.dts⽂件三 查看是否识别 U盘格式化、挂载一 U盘格式化1.1 查看U盘1.2 查看U盘文件系统类型1.3 格式化为ext4系统 二 挂载U盘2.1 手动挂载2.2 自动挂载(可选) usb接口修复 一 执行命令 将位于…...
猫头虎博主第9期赠书活动:《YOLO目标检测》计算机AI视觉实战YOLO人工智能目标检测与跟踪图像处理深度学习图像检测书籍
博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…...
python 如何将英语单词翻译成中文
要将英语单词翻译成中文,可以使用 Python 的第三方库 googletrans。该库使用 Google Translate 提供的 API 来进行翻译。 首先,需要安装 googletrans 库。可以使用以下命令在终端或命令提示符中安装: pip install googletrans4.0.0-rc1然后…...
Linux_CentOS_7.9_MySQL_5.7配置数据库服务开机自启动之简易记录
前言: 作为运维保障,都无法准确预估硬件宕机的突发阶段,其生产数据实时在产出,那作为dba数据库服务的其重要性、必要性就突显而出。这里拿虚拟机试验做个配置记录,便于大家学习参考。 # 如出现服务器重启后登入报错无…...
js实现拖动盒子查看内容 内容拖动
一.分析实现过程 1.鼠标拖动的操作是,按下鼠标不松,拖动鼠标,就需要监听鼠标点击事件(onmousedown),鼠标拖动事件(onmousemove) 2.鼠标拖动事件的监听时机,是在按下鼠标之后监听的,所以鼠标拖动事件需要放在鼠标按下事…...
[C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测
【官方框架地址】 https://github.com/ViewFaceCore/ViewFaceCore 【算法介绍】 SeetaFace6是由中国科技公司自主研发的一款人脸识别技术,它基于深度学习算法,能够快速、准确地识别出人脸,并且支持多种应用场景,如门禁系统、移动…...
c++ execl 执行 重定向
#include <unistd.h>int main() {pid_t childPid fork(); // 创建子进程if (childPid 0) {// 子进程// 关闭标准输入、输出和错误流close(STDIN_FILENO);close(STDOUT_FILENO);close(STDERR_FILENO);// 打开要写入的文件int fd open("output.txt", O_WRONLY…...
uni-app中实现元素拖动
uni-app中实现元素拖动 1、代码示例 <template><movable-area class"music-layout"><movable-view class"img-layout" :x"x" :y"y" direction"all"><img :src"musicDetail.bgUrl" :class&…...
Java系列-Class.forName和ClassLoader.loadClass的区别
Class.forName 和 ClassLoader.loadClass 是 Java 中两种加载类的方式,它们的主要区别在于加载类的时机和对异常的处理。 1.Class.forName Class.forName 是一个静态方法,用于在运行时加载类。它返回一个 Class 对象,但在加载类的过程中&am…...
找不到模块 “path“ 或其相对应的类型声明
src别名的配置 在开发项目的时候文件与文件关系可能很复杂,因此我们需要给src文件夹配置一个别名 // vite.config.ts import {defineConfig} from vite import vue from vitejs/plugin-vue import path from path export default defineConfig({plugins: [vue()],r…...
Linux第17步_安装SSH服务
secure shell protocol简称SSH。 目的:在进行数据传输之前,SSH先对联级数据包通过加密技术进行加密处理,然后再进行数据传输,确保数据传输安全。 1、在安装前,要检查虚拟机可以上网,否则可能会导致安装失…...
C语言—数据类型
变量和基本数据类型 变量类型的概念 变量是在程序中可以发生变化的量,变量是有类型的,变量的类型决定了变量存储空间的大小以及如何解释存储的位模式。 1字节(Byte)8位(bit) 定义格式 存储类型 数据…...
RimWorld模组管理终极指南:从混乱到秩序的专业解决方案
RimWorld模组管理终极指南:从混乱到秩序的专业解决方案 【免费下载链接】RimSort RimSort is an open source mod manager for the video game RimWorld. There is support for Linux, Mac, and Windows, built from the ground up to be a reliable, community-man…...
LightOnOCR-2-1B GPU算力方案:单卡A10部署 vs 双卡T4分片部署成本效益对比
LightOnOCR-2-1B GPU算力方案:单卡A10部署 vs 双卡T4分片部署成本效益对比 1. 项目背景与需求分析 LightOnOCR-2-1B 是一个拥有10亿参数的多语言OCR识别模型,支持包括中文、英文、日文、法文、德文、西班牙文、意大利文、荷兰文、葡萄牙文、瑞典文和丹…...
万象熔炉 | Anything XL部署教程:ARM架构(Jetson Orin)边缘端适配记录
万象熔炉 | Anything XL部署教程:ARM架构(Jetson Orin)边缘端适配记录 1. 项目简介与核心价值 最近在折腾边缘计算设备,手头的Jetson Orin Nano开发者套件性能不错,但一直想找个能稳定跑起来的图像生成模型。SDXL效果…...
醒醒吧,你当不了AI的老板-AI时代重新思考普通程序员的职业之路
“人是BOSS,AI是员工”——这话听着爽,但轮得到你吗?最近,AI大神Karpathy发了一条推文,分享如何用LLM构建个人知识库,引发了不少讨论。而真正让我反复琢磨的,是一个更底层的问题:人和…...
3个步骤实现BetterGenshinImpact多账号协同管理:高效掌控多角色游戏体验
3个步骤实现BetterGenshinImpact多账号协同管理:高效掌控多角色游戏体验 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条…...
Qwen3.5-2B网络编程应用:构建基于WebSocket的实时多模态聊天服务
Qwen3.5-2B网络编程应用:构建基于WebSocket的实时多模态聊天服务 1. 实时聊天服务的价值与挑战 想象一下这样的场景:电商客服需要同时处理图片咨询和文字提问,在线教育平台要实时解答学生上传的题目截图,或是设计团队需要AI即时…...
大模型学习第5天--python基础(练习题)
# 作业三:类型转换练习# 任务描述:# 编写一个程序,实现以下功能:# 1. 定义以下变量(初始值都是字符串):# - 学号:"2024001"# - 数学成绩:"85"…...
Qwen3-14B系统优化指南:解决C盘空间清理与系统性能问题
Qwen3-14B系统优化指南:解决C盘空间清理与系统性能问题 1. 引言:Windows用户的共同烦恼 "您的C盘空间不足"——这个弹窗可能是Windows用户最不愿看到的提示之一。随着使用时间增长,系统盘空间被各种临时文件、日志和冗余程序蚕食…...
3步掌握Adobe-GenP:开源工具助力创意工作流效率提升
3步掌握Adobe-GenP:开源工具助力创意工作流效率提升 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 在数字创意领域,Adobe Creative Cloud套…...
别再肉眼找不同了!3步教你快速对比两个txt/word(即doc、docx)文档的差异
🚀 欢迎来到我的Office高效办公指南!📚 亲爱的访客,你好呀!👋 很高兴能在CSDN的海洋里与你相遇~ ✨ 无论你是正在摸索Office的「职场萌新」 💼,还是希望技能更上一层楼的…...
