RuntimeError: 。。does not set or modifies parameter layer_size
来源:2-18 实战sklearn超参数搜索
jandy_chen
2020-02-22
查看sklearn的官方文档:
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.RandomizedSearchCV.html?highlight=randomizedsearchcv#sklearn.model_selection.RandomizedSearchCV.fit
这个fit方法的入参,对应**fit_params dict of string -> object是字典类型了,看不出epochs值要要调为多少?
我试着根据报错提示,把epochs和validation_data的值各加了有个[],如下:
random_search_cv.fit(x_train_scaled,y_train,epochs = [100],
validation_data = [(x_valid_scaled, y_valid)],callbacks = callbacks)
貌似有作用了,
但是出现新的错误类型如下:
请问:
1、这个加 [100] 的思路是否对?
2、都已经有cv 参数,进行验证集切分了,是否还需要传递 validation_data参数?
3、如上截图,RuntimeError: Cannot clone object,的错误如何解决??
(我试着运行老师github的代码,并且去除后面三个参数,如:random_search_cv.fit(x_train_scaled,y_train),也是运行一段时间后报上面截图错误)
=====
补充贴图:
3回答
-
如LHF同学指出的,sklearn 0.21.3可以工作。
然后经过我调研,发现也可能是新版本tensorflow中的KerasRegressor的问题,新版本的参数在做deep copy的时候出现了问题,导致在拷贝复杂的numpy对象的时候出错,如果把搜索的参数改成普通列表则不会出错:
param_distribution = { "hidden_layers": [1, 2, 3, 4], "layer_size": [5, 10, 20, 30], "learning_rate": [1e-4, 5e-5, 1e-3, 5e-3, 1e-2], }
122020-03-01 -
LHF
2020-02-28
我也遇到了这个问题,sklearn换成0.21.3就可以,而0.22则不行
012020-03-01 -
正十七
2020-02-26
同学你好,好像这是个通用问题,我一天之内看到三四个这样的问题,怀疑是版本问题,不知道是否能将使用的scikit-learn和tensorflow的版本号贴一下?
类似问题集合:
http://coding.imooc.com/learn/questiondetail/168838.html
http://coding.imooc.com/learn/questiondetail/168054.html
http://coding.imooc.com/learn/questiondetail/169274.html
012020-02-26
相似问题