本人亲测:模型不变,用别人代码中自定义的loss函数和test_smooth_l1函数真的天差地别!
选择适合的损失函数
- MSE:适用于需要显著惩罚大偏差的情况。
- MAE:适用于数据中存在异常值,并且你希望对异常值不那么敏感的情况。
- Smooth L1 Loss:适用于既有一定抗噪声能力又能对大偏差适当惩罚的情况。
最终选择Smooth L1 Loss这个损失函数
然后反向传播和optuna时,都以这个测试集中的Smooth L1 Loss作为参数,经过optuna调优,即可得到好的结果。