PyTorch torch.nn.functional.one_hot用法解析

1.用法

在PyTorch中,我们可以使用torch.nn.functional.one_hot函数来实现One-Hot编码。下面是一个简单的例子:

python 复制代码
import torch
import torch.nn.functional as F
# 假设我们有一个包含类别标签的张量
labels = torch.tensor([0, 2, 1, 0, 2])
# 使用torch.nn.functional.one_hot进行One-Hot编码
one_hot = F.one_hot(labels, num_classes=3)
print(one_hot)

重点在于下面的两点:

2.one_hot的输入需要是非负整数张量(小数和负数都不行)

3.经过one_hot处理后张量维度的变化:

假设输入的张量维度是n,那么输出张量维度就是n+1,而且多的这一维度是加在了最后一维。例如,输入张量是1维的,经过one_hot处理后就变成了2维的。关于这最后一维具体是多少,又有两种情况:

python 复制代码
import torch
import torch.nn.functional as F

a = torch.tensor([[1,1,2]])
b = F.one_hot(a)
c = F.one_hot(a,4)
print(b.shape,c.shape)

A.以上面代码为例,如果不指定num_classes,pytorch默认将a中最大值加1作为标签类别最大数,此时最后一维就等于该最大值。例如,a中最大值是2,标签类别最大数就是2+1=3,那么b的形状就是(1,3,3)

B.如果指定了num_classes,此时最后一维就等于num_classes,那么b的形状就是(1,3,4)

其实说白了最后一维就等于num_classes,区别只在于num_classes是否被提前指定而已

相关推荐
一招定胜负3 分钟前
opencv图片处理常见操作
人工智能·opencv·计算机视觉
byzh_rc3 分钟前
[机器学习-从入门到入土] 特征选择
人工智能·机器学习
Hcoco_me4 分钟前
大模型面试题41:RoPE改进的核心目标与常见方法
开发语言·人工智能·深度学习·自然语言处理·transformer·word2vec
Toky丶5 分钟前
【文献阅读】Half-Quadratic Quantization of Large Machine Learning Models
人工智能·机器学习
海棠AI实验室6 分钟前
海光DCU部署全攻略:开箱、配置到AI训练的最佳实践|2026工程化版本
人工智能·dcu·海光
LDG_AGI7 分钟前
【推荐系统】深度学习训练框架(二十三):TorchRec端到端超大规模模型分布式训练+推理实战
人工智能·分布式·深度学习·机器学习·数据挖掘·推荐算法
沛沛老爹10 分钟前
Web开发者快速上手AI Agent:基于Function Calling的提示词应用优化实战
java·人工智能·llm·agent·web·企业开发·function
张彦峰ZYF11 分钟前
提示词工程(Prompt Engineering):核心技巧进阶与工程化流程
人工智能·prompt·提示词工程·用清晰明确的话语表达任务意图·在可能情况下用示例去阐明输出·根据任务类型灵活选择提示策略·提示设计视作迭代工程非单次输入
AI浩11 分钟前
ARConv:用于遥感全色锐化的自适应矩形卷积
人工智能·目标跟踪
海棠AI实验室14 分钟前
本地部署 DeepSeek R1(0528):从“能跑”到“可用、可管、可扩展”的私人 AI 助手指南
人工智能·deepseek