ValueError: activation不是合法参数



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

>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
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
# 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)

ValueError会被抛出,因为activation不是整个模型的参数,而是它的某一层的参数。因此,当RandomizedSearchCV试图通过它时,Model对象不能接受它。

我建议两个解决方案:

  1. 在构建函数周围使用KerasClassifier包装器,并使激活成为其之一。然后使用RandomizedSearchCV优化其性能。
  1. 使用专用的优化包,如optuna-它工作更智能,具有更大程度的自定义。试试吧——他们的网站上有很好很简单的文档。

旁注:RandomizedSearchCV与10倍是多余的,如果样本足够大,使其2倍甚至单倍。

相关内容

  • 没有找到相关文章

最新更新