Rust in Everything
基于 burn 0.22.1

数据加载

训练主线的每一步都从一个 batch 开始。PyTorch 里这是 Dataset 加 DataLoader,collate 自动完成,worker 是子进程;burn 里是 Dataset 加 Batcher 加 DataLoaderBuilder,把样本拼成张量的那一步要自己写,worker 是线程。

  1. 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 与数据;同一个种子顺序不同的另一个原因见同一个种子,顺序不一样。训练循环本身见训练循环。

💬 关联讨论

发起讨论
加载中...