深度学习

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() 计算梯度并写入参数的 .gradoptimizer.step() 才真正根据梯度更新参数。两者不能混成一句“反向传播会自动修改权重”。