我设置了以下参数:
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。有什么想法/其他相关提示吗?
答案 0 :(得分:3)
sp_randint
返回rv_discrete
类/ 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']}