请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

RuntimeError: 。。does not set or modifies parameter layer_size

接上一个未解决问题:
地址:https://coding.imooc.com/learn/questiondetail/156383.html

查看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回答

正十七 2020-03-01 14:20:32

如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],
}


1 回复 有任何疑惑可以回复我~
  • 因为deep copy这个操作对用户不可见,所以结论是,退回到sklearn 0.21.3版本,或者在param_distribution中使用普通列表
    回复 有任何疑惑可以回复我~ 2020-03-01 14:22:23
  • 提问者 jandy_chen #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-03-01 15:37:58
LHF 2020-02-28 17:19:58

我也遇到了这个问题,sklearn换成0.21.3就可以,而0.22则不行

0 回复 有任何疑惑可以回复我~
  • 多谢指出能运行的sklearn版本号。
    回复 有任何疑惑可以回复我~ 2020-03-01 14:14:51
正十七 2020-02-26 10:22:01

同学你好,好像这是个通用问题,我一天之内看到三四个这样的问题,怀疑是版本问题,不知道是否能将使用的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



0 回复 有任何疑惑可以回复我~
  • 提问者 jandy_chen #1
    如上补充贴图,sklearn是0.22版本了
    回复 有任何疑惑可以回复我~ 2020-02-26 10:30:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信