You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我的二分类LSTM神经网络总是预测同一类别?

核心问题诊断

  • 输出层激活函数选择错误
    二分类任务仅配置1个输出神经元的场景下,使用softmax作为激活函数是完全错误的。softmax的逻辑是将所有输出值归一化到总和为1,当仅存在1个输出神经元时,无论输入是什么,该层的输出恒为1,这是你模型始终预测正类的直接原因。
  • 优化器学习率设置过低
    你给Adam优化器设置的学习率为1e-06,远低于该优化器默认的1e-3,过小的学习率会导致梯度更新极慢,模型长期处于未训练的状态,即便修复激活函数问题也会出现收敛极慢的情况。
  • 可选补充检查点
    1. 检查输入特征是否做了归一化/标准化处理,数值范围过大会导致梯度爆炸或消失,影响模型收敛
    2. 验证标签编码是否正确,确认负类标签为0、正类标签为1,排除数据集标注异常的情况

代码修改方案

首先修正输出层激活函数,单神经元二分类场景需要使用sigmoid激活:

# 原错误代码
dense_3 = Dense(1, activation='softmax')(dense_2)
# 修改后代码
dense_3 = Dense(1, activation='sigmoid')(dense_2)

调整优化器学习率到合理区间,可先使用1e-4测试收敛效果,再根据实际情况微调:

# 原错误代码
opt = Adam(lr=1e-06)
# 修改后代码
opt = Adam(lr=1e-4)

如果需要进一步缓解类别不平衡的潜在影响,可在训练时传入类别权重参数:

class_weight = {0: 0.43, 1: 0.57}
train_history = model.fit([Data_x_train], 
          [Data_y_train], batch_size=batch_size, epochs=epochs, 
          validation_data=(Data_x_val, Data_y_val), 
          callbacks = callbacks, verbose = 2,
          class_weight=class_weight)

内容的提问来源于stack exchange,提问作者MRM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:24:04