数据加载
训练主线的每一步都从一个 batch 开始。PyTorch 里这是 Dataset 加 DataLoader,collate 自动完成,worker 是子进程;burn 里是 Dataset 加 Batcher 加 DataLoaderBuilder,把样本拼成张量的那一步要自己写,worker 是线程。
- Dataset 与 DataLoader:同一份数据两边的 batch 逐位相同;
drop_last的替代写法;同一个种子两边顺序不同,怎么把 PyTorch 的顺序交给 burn;多 worker 时批的先后和打乱范围;取样本出错时迭代器交出什么。
flowchart TB ds["Dataset get"] --> loader["DataLoaderBuilder"] loader --> shuf["shuffle seed"] loader --> workers["num_workers 线程"] shuf --> batcher["Batcher batch"] workers --> batcher batcher --> batch["batch 张量在设备上"] batch --> step["训练一步"]
DataLoader 在 burn 内部怎么取样本、怎么分给线程、和 Learner 怎么配合,见 burn 卷的 Learner 与数据;同一个种子顺序不同的另一个原因见同一个种子,顺序不一样。训练循环本身见训练循环。
💬 关联讨论
发起讨论加载中...