lmw0320
2019-08-14 19:11
采纳率: 100%
浏览 451

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 打赏 评论
  • 打赏 评论

相关推荐 更多相似问题