lmw0320 2019-08-14 19:11 采纳率: 75%
浏览 525
已采纳

keras的网格搜索调参疑问

用keras的sklearn接口的网格搜索法,对keras的模型进行调参。。发现学习率和momentum无法调参,提示非法参数。。关于学习率我试了learning_rate,lr,learn_rate都没用。。
很是搞不懂。。求指点~~
(我前面先调了batch_size和nb_epoch两个参数,都成功了。这个是第二组参数,发现报错)
代码如下:

def create_model():
    gru = Sequential()
    gru.add(GRU(units = layers[1],input_shape =(trainX.shape[1],trainX.shape[2]), return_sequences=True)) 
    gru.add(BatchNormalization())
    gru.add(GRU(units =layers[2],return_sequences=False)) 
    gru.add(BatchNormalization())
    gru.add(Dense(units = layers[3],kernel_initializer='normal'))
    gru.add(BatchNormalization())
    gru.add(Dense(1))
    optimizer = SGD(lr = 0.01,momentum = momentum) #设置优化器
    gru.compile(loss = 'mse',optimizer = optimizer)
    return gru

model2 = KerasRegressor(create_model,batch_size = batch_size,epochs = epoch,verbose =0)
lr = [10**x for x in range(-3,1)]
layers = [[1,32,64,1],[1,64,64,1],[1,64,128,1]]
momentum  = [(2*x).round(2) for x in np.arange(0.,0.5,0.1)]
param_grid2 = dict(neurons=layers, momentum=momentum,lr = lr)
grid2 = GridSearchCV(estimator=model2,param_grid = param_grid2,cv = 10,n_jobs = -1) 
grid2_result = grid2.fit(trainX,trainY)
best_param2 = grid2_result.best_params_
best_param2

错误提示如下:
图片说明
图片说明

  • 写回答

2条回答 默认 最新

  • lmw0320 2019-08-20 16:42
    关注

    自己搞定了。。折腾了一周。。最终发现是定义模型时,忘记传参了。。
    感觉自己简直是超级垃圾

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备