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

使用RandomizedSearchCV训练MLPRegressor遇float64数值异常错误

错误成因分析

以下是导致该错误的几种常见原因:

  • 超参数搜索范围引发数值异常
    RandomizedSearchCV的参数空间中可能包含会导致MLP训练过程数值溢出/不稳定的组合:

    • 比如learning_rate_init设置过大,会让权重更新幅度过大,直接产生无穷大值;
    • alpha(L2正则化系数)设置过小,无法约束权重的极端变化;
    • hidden_layer_sizes设置得过于庞大,计算过程中出现浮点溢出。
      你单独用的参数组合是稳定的,但搜索空间里的其他组合可能触发数值问题,进而在交叉验证的某一轮训练中抛出错误。
  • 未正确处理交叉验证中的数据标准化
    如果你是先对整个x_train做StandardScaler标准化,再传入RandomizedSearchCV,会导致数据泄露:交叉验证时的验证集数据信息会提前融入标准化过程,部分折的训练数据分布可能出现异常,结合某些超参数组合就会引发数值问题。正确的做法是用Pipeline将StandardScaler和MLPRegressor封装在一起,让每个交叉验证折单独执行标准化:

    from sklearn.pipeline import Pipeline
    pipeline = Pipeline([
        ('scaler', StandardScaler()),
        ('mlp', MLPRegressor())
    ])
    # 然后用pipeline作为RandomizedSearchCV的estimator
    
  • 超参数组合不兼容
    参数空间中可能存在与MLPRegressor逻辑不兼容的组合:

    • 比如为solver='adam'搭配了仅适用于solver='sgd'的learning_rate='invscaling'或power_t参数;
    • 选择tanh激活函数时搭配过高的学习率,容易引发梯度爆炸,产生无穷值。
      这些不兼容组合会在训练过程中触发数值计算异常。
  • 训练过程中的数值不稳定
    部分超参数组合下,MLP的训练可能无法稳定收敛:

    • max_iter设置过小,模型在未收敛前就出现数值发散;
    • batch_size过小,加上高学习率,导致权重更新波动剧烈,出现极端值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:03:23