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

ValueError:激活不是合法参数
EN

Stack Overflow用户
提问于 2021-02-11 10:18:30
回答 2查看 321关注 0票数 2

我正在尝试调整我的模型,但是我得到了这个值错误。我试图更改激活函数,但当我这样做时,学习率返回了相同的错误。我不确定我是不是错过了什么。

代码语言:javascript
复制
>ValueError                              Traceback (most recent call last)

> <ipython-input-46-5d07e2ad456a> in <module>
>      9   param_distributions = params,
>     10   cv = KFold(10))

> --->11 random_search_results = random_search.fit(X_train, y_train)

ValueError: activation is not a legal parameter
代码语言:javascript
复制
def create_model(learning_rate=0.01):
    opt = 'Adam'
    Tuning_model = Sequential()
    Tuning_model.add(Dense(16, input_shape=(X_train.shape[1],)))
    Tuning_model.add(Dropout(.2))
    Tuning_model.add(BatchNormalization())
    Tuning_model.add(Activation('relu'))
    Tuning_model.add(Dense(32))
    Tuning_model.add(Dropout(.2))
    Tuning_model.add(Dense(1))
    Tuning_model.compile(loss='mse', optimizer=opt, metrics='mse')
    
    return Tuning_model
代码语言:javascript
复制
# Define the hyperparameter space
params = {'activation': ["relu", "tanh"],
          'batch_size': [16, 32, 64, 128], 
          'epochs': [50, 100],
          'optimizer': ["Adam", "SGD", "RMSprop"],
          'learning_rate': [0.01, 0.001, 0.0001]}
# Create a randomize search cv object 
random_search = RandomizedSearchCV(Tuning_model,
                                   param_distributions = params,
                                   cv = KFold(10))
random_search_results = random_search.fit(X_train, y_train)
EN

回答 2

Stack Overflow用户

发布于 2021-02-11 14:37:55

之所以提出ValueError,是因为activation不是整个模型的参数,而是它的某些层的参数。因此,当RandomizedSearchCV试图传递它时,Model对象无法接受它。

  1. 围绕构建函数使用KerasClassifier wrapper,并将激活作为其功能之一。然后使用像optuna这样的专用优化包RandomizedSearchCV.
  2. Use来优化它的性能-它工作得更智能,并且具有更大的定制化程度。试试看--他们在their site.

上有又好又简单的文档

附注: 10折的RandomizedSearchCV是一种过度杀伤力,如果样本足够大,则将其设置为2折甚至单折。

票数 2
EN

Stack Overflow用户

发布于 2021-07-18 21:17:51

我认为您需要在函数中将优化器作为参数提及,例如:

代码语言:javascript
复制
def create_model(opt, learning_rate=0.01):
    Tuning_model = Sequential()
    Tuning_model.add(Dense(16, input_shape=(X_train.shape[1],)))
    Tuning_model.add(Dropout(.2))
    Tuning_model.add(BatchNormalization())
    Tuning_model.add(Activation('relu'))
    Tuning_model.add(Dense(32))
    Tuning_model.add(Dropout(.2))
    Tuning_model.add(Dense(1))
    Tuning_model.compile(loss='mse', optimizer=opt, metrics='mse')

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

https://stackoverflow.com/questions/66147897

复制
相关文章

相似问题

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