求助:训练模型出现loss=nan及0准确率的原因排查
针对Loss=NaN与0准确率问题的排查方向
以下是几个你可能遗漏的排查点,不一定是dataframe本身不适合建模:
- 特征尺度问题:薪资相关的连续特征(如工作年限、年收入)数值跨度通常很大,如果你的模型是神经网络、逻辑回归这类对尺度敏感的模型,未做标准化/归一化会直接引发梯度爆炸,导致Loss=NaN。检查代码中是否对连续特征使用了
StandardScaler或MinMaxScaler做处理。 - 类别特征编码疏漏:数据集中的类别特征(如职业、学历、地区)若未做正确编码(比如直接传入字符串,或独热编码后出现全零无效列),会导致模型无法学习有效特征,进而出现0准确率。确认所有类别特征都已转换为模型可识别的数值形式,且无无效特征列。
- 标签异常未彻底清理:除了负值,要检查预测标签是否存在极端异常值(如远高于其他样本的薪资),或者标签分布是否极度不均衡(如绝大多数样本属于同一类别),这两种情况都会导致Loss计算异常或模型无法收敛。
- 模型参数与结构问题:学习率过高、模型层数过深都容易引发梯度爆炸。尝试降低学习率(比如从0.1调整至0.001),或简化模型结构,观察Loss是否恢复稳定。
- 数据加载细节:检查训练时的Batch Size是否过大,或者数据加载环节是否残留了隐形异常样本(如非数值型数据、格式错误的行)。可以先用小Batch Size跑几轮,同时打印前几个样本的特征、标签及模型预测值,直观验证数据传递是否正常。
内容的提问来源于stack exchange,提问作者오상윤
相关产品推荐
相关产品推荐

