我设置了以下参数:
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
返回rv_discrete
类的实例/randint对象,为了生成随机数,正确的语法应该是sp_randint.rvs(low ,高,尺寸)
。
为了使其工作,您需要定义 parameter_space
如下:
参数空间 = {
'hidden_layer_sizes': [(sp_randint.rvs(100,600,1),sp_randint.rvs(100,600,1),),
(sp_randint.rvs(100,600,1),)],
'激活': ['tanh', 'relu', '后勤'],
'求解器': ['sgd', 'adam', 'lbfgs'],
“阿尔法”:均匀(0.0001,0.9),
'learning_rate': ['常量','自适应']}
关于python - Sklearn MLP 分类器超参数优化 (RandomizedSearchCV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52029408/