Sklearn MLP 分类器超参数优化 (RandomizedSearchCV)

Sklearn MLP Classifier Hyperparameter Optimization (RandomizedSearchCV)

我设置了以下参数:

parameter_space = {
    'hidden_layer_sizes': [(sp_randint(100,600),sp_randint(100,600),), (sp_randint(100,600),)],
    'activation': ['tanh', 'relu', 'logistic'],
    'solver': ['sgd', 'adam', 'lbfgs'],
    'alpha': stats.uniform(0.0001, 0.9),
    'learning_rate': ['constant','adaptive']}

除 hidden_layer_sizes 之外的所有参数都按预期工作。但是,拟合此 RandomizedSearchCV 模型并显示其详细文本表明它将 hidden_layer_sizes 视为:

hidden_layer_sizes=(<scipy.stats._distn_infrastructure.rv_frozen object 并继续抛出:TypeError: '<=' not supported between instances of 'rv_frozen' and 'int'

获得此结果而不是预期的具有 100 到 600 个隐藏层神经元的 1 层或 2 层 MLP。有什么想法/其他相关提示吗?

sp_randint returns rv_discrete的一个实例 class /一个randint对象,为了产生随机数,正确的语法应该是sp_randint.rvs(low, high, size). 为了使其工作,您需要定义 parameter_space 如下:

parameter_space = { 'hidden_layer_sizes': [(sp_randint.rvs(100,600,1),sp_randint.rvs(100,600,1),), (sp_randint.rvs(100,600,1),)], 'activation': ['tanh', 'relu', 'logistic'], 'solver': ['sgd', 'adam', 'lbfgs'], 'alpha': uniform(0.0001, 0.9), 'learning_rate': ['constant','adaptive']}