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

Skorch NeuralNetRegressor与GridSearchCV自定义参数调优报错求助

问题解决方法

错误核心是参数命名格式不符合层级规则:自定义模型(Regressor)的参数需要通过[Pipeline步骤名]__module__[参数名]的格式传递,而非直接写[步骤名]__[参数名]。

修正步骤:

  1. 调整参数网格的命名格式
    将属于自定义模型的参数(n_layers、activation)的命名修正为model__module__xxx格式,其他属于NeuralNetRegressor本身的参数(如optimizer、max_epochs)保持原有格式即可:
param_grid = {
    'model__optimizer': [optim.Adam, optim.Adamax, optim.NAdam],
    'model__max_epochs': list(range(30,40)),
    'model__module__activation': [nn.Identity, nn.ReLU, nn.ELU, nn.ReLU6, nn.GELU, nn.Softplus, nn.Softsign, nn.Tanh, 
                               nn.Sigmoid, nn.Hardsigmoid],
    'model__batch_size': [10,12,15,20],
    'model__module__n_layers': list(range(11,30)),
    'model__lr': [0.0001, 0.0008, 0.009, 0.001, 0.002, 0.003, 0.004, 0.01],
}
  1. 修正Pipeline中的模型类名笔误
    你定义的模型类是Regressor,但代码中写了module=FatRegressor,这是明显笔误,需要修正:
pipeline = Pipeline(steps=[('scaler', StandardScaler()),
                           ('model', NeuralNetRegressor(module=Regressor, device='cuda'))])

原理说明:

  • Skorch的NeuralNetRegressor通过module__参数名的格式传递自定义模型的初始化参数;
  • 当模型处于Scikit-learn的Pipeline中时,必须在参数前加上Pipeline步骤的名称(此处为model),形成步骤名__module__参数名的完整层级路径,这样GridSearchCV才能正确识别参数所属的对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:05:26