深入浅出pytorch学习记录4

损失函数调整4

损失函数并不是一成不变的,对应特定项目可能有各种损失函数合适。

均方误差(MSE):计算的是预测值与目标值之间差值的平方和的平均值,适用于回归问题。

交叉熵损失:衡量的是概率分布之间的差异,常用于分类问题。

Dice损失:基于Dice系数,计算的是两个集合之间的相似度。

Dice损失相比MSE方法的特点:直接考虑了正负样本的比例,对类别不平衡的数据集更加鲁棒。它通过交集与并集之比来评估模型性能,因此对于少数类别的表现更为关注。


Dice损失特别适用于图像分割任务,因为它直接优化的是预测结果与实际标记区域之间的重叠程度,而不是单纯的像素级别的误差或概率分布差异。

医学影像分析等领域,往往存在严重的类别不平衡问题(例如背景像素远多于前景病变区域)。Dice损失能够更好地处理这种情况,因为它不仅考虑到了正确预测的部分,还考虑到了错误预测的影响。


其他几种loss-function的研究方向

BCE-Dice Loss:特别适用于图像分割任务,尤其是在医学影像分析等存在严重类别不平衡的任务中表现优异。

Jaccard/IoU Loss:主要用于图像分割任务,特别是当需要精确地评估模型在不同大小物体上的表现时。

Focal Loss:广泛应用于对象检测和分类任务,特别是在处理具有大量背景样本和少量前景样本的情况时表现出色。


一些常用的学习率相关文献

StepLR 和 MultiStepLR 适合需要定期手动降低学习率的情况。

ExponentialLR 提供了一种平滑的学习率衰减方式。

CosineAnnealingLR 有助于模型跳出局部最优解,尤其是在长时间训练中。

ReduceLROnPlateau 根据验证集的表现动态调整学习率,非常灵活且易于使用。

CyclicLR 可以加速收敛,并有助于找到更好的权重更新步长。

在每个epoch中:

调用 train_one_epoch 进行训练。

调用 validate 获取当前模型在验证集上的损失。

使用 scheduler.step(val_loss) 根据验证集的损失调整学习率。

注:

我们在使用官方给出的torch.optim.lr_scheduler时,需要将scheduler.step()放在optimizer.step()后面进行使用。


微调的相关原理

(1)下载预训练相关权重。

(2)冻结所有参数

(3)替换最后的全连接层

(4)定义损失函数和优化器


@autocast() 装饰器被应用于 forward 方法,表示在这个方法内部执行的操作将自动应用自动混合精度策略。

在 forward 方法内部的所有张量运算都会根据需要自动转换为 FP16 或 FP32,而不需要手动进行类型转换。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容