用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
错误提示如下: