PyTorch 新手也可以实现 CosineSimilarity 和 PairwiseDistance - 距离度量的操作

目录

[torch.nn子模块Distance Functions解析](#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 维度。

使用示例

python 复制代码
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)。

使用示例

python 复制代码
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 模块提供了一种计算两组数据点之间成对欧几里得距离的有效方式,这在聚类、近邻搜索或预测与实际值之间距离度量的场景中非常有用。这两个模块共同构成了在多种机器学习和数据科学应用中处理和比较数据集的基础工具。

相关推荐
二川bro4 小时前
Windows下Claude Code从安装到落地完整踩坑记录
人工智能
ZzT4 小时前
Claude Code Mods 是什么:给 Claude 加工具、在终端画界面
人工智能·ai编程·claude
I'mChloe4 小时前
Windows部署BiliNote:Docker安装、AI视频转写、Markdown笔记与cpolar远程访问
人工智能·windows·docker
喜欢打篮球的普通人4 小时前
MiniMind 学习笔记(十二):Pretrain 实操——从版本梳理到 8GB 显卡上的真实训练
人工智能·笔记·学习
YOLO数据集集合4 小时前
无人机视角行人与车辆检测数据集 | 无人机航拍 行人检测 车辆检测 智慧城市 公共安全9140期
人工智能·目标检测·无人机·智慧城市·车辆识别·无人机视角
老歌老听老掉牙4 小时前
斜抛运动问题分析:给定最大高度与墙面位置的轨迹与时间求解
python·斜抛运动
Joecien4 小时前
【2026实测】百炼 CLI 托管 Agent 教程:bl managed-agent 配置校验、版本回滚与变更预演(附完整命令)
人工智能·git·阿里云·知识图谱·agi
jimmyleeee5 小时前
大模型安全之三十六:大模型数据管理----从投毒防御到偏见治理的完整框架
人工智能·安全
言乐65 小时前
Python自动去除水印
开发语言·python·django·virtualenv·pygame
czq_26867194875 小时前
Python打卡第31天
开发语言·python