深度学习
PyTorch 训练流程:数据最终去了哪里
从 Dataset、DataLoader 到 Model、Loss 与 Optimizer,追踪一次训练迭代的输入、输出和参数更新。
原始数据是什么
以四分类表格数据为例,一条样本通常由特征 x 和类别标签 y 组成。Dataset 的 __getitem__() 决定一条样本究竟返回什么结构。
DataLoader 在哪里拼批次
DataLoader 多次调用 __getitem__(),再通过默认规则或 collate_fn 把多条样本组成批次。例如特征可能从 [D] 变为 [B, D],标签从标量变为 [B]。
最终传给模型什么
for x, y in loader:
logits = model(x)
loss = criterion(logits, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
model(x) 返回 logits;Loss 把 logits 与真实标签比较并得到标量损失。
参数在哪里更新
loss.backward() 计算梯度并写入参数的 .grad;optimizer.step() 才真正根据梯度更新参数。两者不能混成一句“反向传播会自动修改权重”。
