pytorch分类任务训练的一些问题

本文介绍了深度学习模型训练中的一些关键优化策略,包括调整精度计算时机、避免重复softmax计算、优化模型结构和参数,以及如何处理CUDA错误。针对类别不平衡的数据集,建议增大batch_size和增加模型复杂度,同时采用数据增强技术提升模型性能。对于CUDA错误,特别是输出维度不匹配的问题,应正确设置模型的最后一层线性层。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.将训练函数的精度计算挪到1个epoch之后,这样就可以计算得到正常的训练集精度和测试集精度

2.将模型输出的softmax去掉,因为交叉熵函数会自己计算softmax值,如果不去掉,相当于计算两次softmax,导致模型不收敛

3.对于类别较多并且每个类别数据较少的数据集,增大batch_size,增加模型的复杂程度,多加线性层等,能够提高分类效果。还可以做数据增强

4.对于报错:RuntimeError: CUDA error: device-side assert triggered
这一般是模型最后的线性层输出数量小于标签数量带来的越界,这类问题必须要用下面这条语句更改:

 model.fc = nn.Linear(input_features, output_features)

我在增加类别后,如果用下面这条语句

model.fc.out_features += new_class_num

虽然能够改变model的线性层输出大小,但是不知为啥还是会报错,这应该是nn.Module类里面一些私有变量的原因,所以最好用上面那条语句更改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值