深度学习入门文档深度页
输出层与损失函数搭配
根据回归、二分类、多分类和多标签选择输出形状、标签格式与损失。
学习目标
- 列出四类任务搭配
- 解释 logit
- 检查 shape/dtype
为什么需要这个概念
输出、标签、dtype 和损失不匹配会直接导致错误训练。
- 决定任务数学含义
- 避免重复激活
学习前需要掌握
激活函数内容待补充分类概率与决策阈值
背景与问题
输出、标签、dtype 和损失不匹配会直接导致错误训练。
概念定义
输出头表达答案空间,损失把 logits 与目标映射为可优化标量。
直观理解
先决定模型要回答什么格式的问题,再决定最后一层和评分规则。
核心原理
回归直接实数;二分类 1 logit+BCEWithLogits;互斥多分类 C logits+CE;多标签 C logits+BCE。
训练使用 logits 提高数值稳定性,推理再 Sigmoid/Softmax。
数学表达
核心公式
z_y 是真实类别 logit。
变量含义
C类别或标签数z原始 logits
计算步骤
- 1输出 [32,10]
- 2target [32] long
代码对应位置
示例 1输出层与损失函数搭配 · PyTorch 示例:验证输出层与损失函数搭配的输入、计算和输出。
变量解释
| 变量 | 含义 |
|---|---|
C | 类别或标签数 |
z | 原始 logits |
完整数值示例
十分类
已知条件
- N=32
- C=10
- 1
输出 [32,10]
- 2
target [32] long
CrossEntropyLoss 接收二者
处理前后对比
计算与实现步骤
- 1
确认任务
- 2
设置 out_features
- 3
准备标签 dtype
- 4
选择损失
- 5
检查 logits
- 6
推理转换
代码实现
示例 1
输出层与损失函数搭配 · PyTorch 示例
输出层与损失函数搭配 · PyTorch 示例
PyTorch
example_01.py用途:验证输出层与损失函数搭配的输入、计算和输出。
logits=torch.randn(32,10)
target=torch.randint(0,10,(32,))
loss=nn.CrossEntropyLoss()(logits,target)
print(loss.item())代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
验证输出层与损失函数搭配的输入、计算和输出。
loss- 当前预测与目标之间的损失值。
Step 1 · 1–4 行
计算当前预测误差,把模型表现压缩成可优化的标量损失。
logits=torch.randn(32,10)
target=torch.randint(0,10,(32,))
loss=nn.CrossEntropyLoss()(logits,target)
print(loss.item())代码与数学原理
平方误差代码对应均方损失。
预期输出或运行结果
输出正标量损失。
常见错误 · 4 条
- CE 前 Softmax
- BCEWithLogits 前 Sigmoid
- 类别回归成单数
- target dtype 错
实际应用
- 回归/分类/多标签
常见错误
CE 前 Softmax
BCEWithLogits 前 Sigmoid
类别回归成单数
target dtype 错
文档来源
06_输出层与损失函数原始文档
学习资料/deeplearning/06_输出层与损失函数.md- §1 任务表
- §2 Logit
- §3–6 四类任务
- §9 常见错误
常见问题
二分类能否输出两个 logits?
可以配 CE,但一 logit+BCE 更直接。
多标签为何不用 Softmax?
标签不互斥,需要每类独立 Sigmoid。
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。