学习率和优化器需谨慎设置:建议从1e-3开始用Adam,配合ReduceLROnPlateau衰减或warmup+余弦退火;batch size宜从32/64起步,合理设置num_workers和pin_memory;辅以早停、梯度裁剪、AMP及BatchNorm、残差连接、权重衰减等策略提升稳定性与泛化。
学习率是深度学习调优中最敏感的超参数。设得太大,损失震荡甚至发散;设得太小,收敛极慢、易陷局部极小。建议从 1e-3 开始尝试 Adam 优化器(默认学习率 0.001),它对大多数任务鲁棒性强、收敛稳定。若训练后期 loss 下降停滞,可启用学习率衰减,如使用 ReduceLROnPlateau(PyTorch 中为 torch.optim.lr_scheduler.ReduceLROnPlateau),在验证 loss 连续若干轮不下降时自动缩小学习率。
对于图像分类等任务,也可尝试带 warmup 的学习率调度(如线性 warmup + 余弦退火),前 5–10 个 epoch 缓慢提升学习率,避免初始梯度爆炸;后续平滑下降,增强泛化。
batch size 不仅影响显存占用,还左右梯度估计质量和训练稳定性。太小(如 8 或 16)导致梯度噪声大、收敛波动;太大(如 512+)虽加速单步计算,但可能降低泛化能力,且需配合更大的学习率(常按线性缩放规则调整:新学习率 = 原学习率 × 新 batch / 原 batch)。
实际操作中:
立即学习“Python免费学习笔记(深入)”;
DataLoader 的 num_workers > 0(如 4–8)并开启 pin_memory=True,加速 CPU 到 GPU 的数据搬运torchvision.transforms.AutoAugment 或 RandAugment 替代手工组合增强,提升泛化同时减少过拟合风险防止过拟合和训练崩溃的关键三招:
torch.nn.utils.
clip_grad_norm_(model.parameters(), max_norm=1.0),防止梯度爆炸torch.cuda.amp.autocast() + GradScaler,自动将部分计算转为 float16,通常提速 1.5–3 倍、节省近一半显存,且几乎不影响精度不盲目堆叠层数,优先关注结构合理性:
model.backbone.requires_grad = False),仅微调分类头;数据量上升后再解冻部分层联合训练weight_decay=1e-4 常见)、Label Smoothing(smooth_factor=0.1)可提升校准性和鲁棒性