首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >learning_rate不是合法参数

learning_rate不是合法参数
EN

Stack Overflow用户
提问于 2021-04-14 14:04:06
回答 1查看 744关注 0票数 2

我正在尝试通过实现GridSearchCV来测试我的模型。但我似乎不能在GridSearch中添加学习率和动量作为参数。每当我试图通过添加这些代码来执行代码时,我都会得到一个错误。

下面是我创建的模型:

代码语言:javascript
复制
def define_model(optimizers="SGD"):
    model = models.Sequential()
    model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same', input_shape=(32, 32, 3)))
    model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
    model.add(MaxPooling2D((2, 2)))
    model.add(Flatten())
    model.add(Dense(128, activation='relu', kernel_initializer='he_uniform'))
    model.add(Dense(10, activation='softmax'))
    model.compile(loss='binary_crossentropy', optimizer=optimizers, metrics='accuracy')
    return model

我已经实现的GridSearch:

代码语言:javascript
复制
learn_rate=(0.0001,0.001)
momentum = (0.1, 0.5)
epochs = [5]
batches = [16]

model = KerasClassifier(build_fn=define_model, verbose=2)
param_grid = dict(epochs = epochs, lr = learn_rate, momentum = momentum, batch_size = batches)
grid = GridSearchCV(estimator=model, param_grid= param_grid, n_jobs = 1, cv = 3)

grid_result = grid.fit(trainX, trainY)
print("Best: %f using %s" %(grid_result.best_score_, grid_result.best_params_))

下面是我遇到的错误:

代码语言:javascript
复制
~\anaconda3\envs\tf-gpu\lib\site-packages\tensorflow\python\keras\wrappers\scikit_learn.py in check_params(self, params)
    104       else:
    105         if params_name != 'nb_epoch':
--> 106           raise ValueError('{} is not a legal parameter'.format(params_name))
    107 
    108   def get_params(self, **params):  # pylint: disable=unused-argument

ValueError: lr is not a legal parameter
EN

回答 1

Stack Overflow用户

发布于 2021-07-18 21:33:53

参数中没有优化器。所以,你不需要把它作为参数放在你的函数中。相反,您可能需要在函数中提及learning_rate和momentum作为参数,并直接将SGD添加到它应该在的位置:

代码语言:javascript
复制
def define_model(lr, momentum):
    model = models.Sequential()
    model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same', input_shape=(32, 32, 3)))
    model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
    model.add(MaxPooling2D((2, 2)))
    model.add(Flatten())
    model.add(Dense(128, activation='relu', kernel_initializer='he_uniform'))
    model.add(Dense(10, activation='softmax'))
    model.compile(loss='binary_crossentropy', optimizer=SGD(lr, momentum), metrics='accuracy')

    return model
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67086301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档