用途:面向 PyTorch 工程实践的一组模式与代码范例,帮助构建数据管线、设计模块、做迁移学习微调、编写自定义反向传播并排查训练瓶颈。
主要能力:
- 自定义 Dataset:基于 pandas DataFrame 与图像目录实现 Dataset,配合 albumentations 的 train/val 转换管线,并给出基于类频率的 WeightedRandomSampler 处理类别不平衡。DataLoader 设置 num_workers、pin_memory、persistent_workers、prefetch_factor;注意 sampler 与 shuffle 不能同时使用。
- nn.Module 设计:演示参数与 register_buffer 缓冲区注册、Xavier 初始化、MultiheadAttention 前向、extra_repr。
- 模型改造:冻结预训练 ResNet50 主干、替换分类头、按 epoch 分层解冻,并用 filter(lambda p: p.requires_grad, ...) 只把可训练参数交给优化器。
- 自定义 autograd:继承 torch.autograd.Function 实现数值稳定的 Softmax 前向与反向,并用 torch.autograd.gradcheck 校验梯度。
- DataLoader 吞吐量基准:统计平均批次耗时、每秒样本数与 p95,用于判断数据管线是否为瓶颈。
反模式提醒:训练循环中频繁调用 .item() 会引入 GPU 同步;磁盘 I/O 数据集用 num_workers=0 会拖慢 GPU 利用率;在 forward() 内创建张量会触发额外传输;验证前忘记 model.eval() 会使 BatchNorm 统计被污染。
限制:资料仅覆盖上述模式与代码片段,未提供安装命令、依赖版本、收费或平台信息,这些内容暂未提供。使用前需自行准备 PyTorch、torchvision、albumentations、pandas、numpy、PIL 等环境。