深度学习进阶文档深度页
深度学习数据管道与预处理
划分、拟合训练统计、变换、组批、传输和输入模型的完整链路。
学习目标
- 区分训练/验证 transform
- 只用训练统计
- 正确统计 epoch loss
为什么需要这个概念
错误归一化、增强错位和 batch 统计会让模型训练失真。
- 防止数据泄漏
- 保证训练/推理一致
学习前需要掌握
背景与问题
错误归一化、增强错位和 batch 统计会让模型训练失真。
概念定义
数据管道保证训练、验证、测试使用一致且无泄漏的输入契约。
直观理解
模型只能看到最终张量,所有上游处理都是模型的一部分。
核心原理
训练可随机增强,验证测试确定性;逐 batch 传设备,按样本加权统计 loss。
预训练权重需配套 resize/crop/mean/std。
数学表达
核心公式
训练统计复用于所有分块。
变量含义
μ_train训练均值σ_train训练标准差
计算步骤
- 1(64×1+16×2)/80
代码对应位置
示例 1深度学习数据管道与预处理 · PyTorch 示例:验证深度学习数据管道与预处理的输入、计算和输出。
变量解释
| 变量 | 含义 |
|---|---|
μ_train | 训练均值 |
σ_train | 训练标准差 |
完整数值示例
尾批加权
已知条件
- 批 loss 1.0,size64
- 批 loss 2.0,size16
- 1
(64×1+16×2)/80
epoch loss=1.2
处理前后对比
计算与实现步骤
- 1
先划分
- 2
拟合统计
- 3
分别 transform
- 4
组批
- 5
传设备
- 6
样本加权统计
代码实现
示例 1
深度学习数据管道与预处理 · PyTorch 示例
深度学习数据管道与预处理 · PyTorch 示例
PyTorch
example_01.py用途:验证深度学习数据管道与预处理的输入、计算和输出。
total=0.;count=0
for x,y in loader:
loss=criterion(model(x),y)
total+=loss.item()*x.size(0);count+=x.size(0)
print(total/count)代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
验证深度学习数据管道与预处理的输入、计算和输出。
y- 目标标签或连续目标值。
model- 组合预处理和估计器的模型对象。
loss- 当前预测与目标之间的损失值。
Step 1 · 1–5 行
计算当前预测误差,把模型表现压缩成可优化的标量损失。
total=0.;count=0
for x,y in loader:
loss=criterion(model(x),y)
total+=loss.item()*x.size(0);count+=x.size(0)
print(total/count)代码与数学原理
平方误差代码对应均方损失。
预期输出或运行结果
输出按样本加权的 epoch loss。
常见错误 · 4 条
- 全数据标准化
- 验证随机增强
- 直接平均 batch loss
- 通道/值域错
实际应用
- 所有训练项目
常见错误
全数据标准化
验证随机增强
直接平均 batch loss
通道/值域错
文档来源
11_数据管道与预处理原始文档
学习资料/deeplearning/11_数据管道与预处理.md- §5 划分
- §6 transform
- §9 设备
- §11 完整训练
- §13 错误
常见问题
标准化统计从哪来?
只从训练集。
pin_memory 必然更快吗?
不一定,应实测。
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。