我正在尝试调整我的模型,但是我得到了这个值错误。我试图更改激活函数,但当我这样做时,学习率返回了相同的错误。我不确定我是不是错过了什么。
>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 parameterdef 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)发布于 2021-02-11 14:37:55
之所以提出ValueError,是因为activation不是整个模型的参数,而是它的某些层的参数。因此,当RandomizedSearchCV试图传递它时,Model对象无法接受它。
KerasClassifier wrapper,并将激活作为其功能之一。然后使用像optuna这样的专用优化包RandomizedSearchCV.上有又好又简单的文档
附注: 10折的RandomizedSearchCV是一种过度杀伤力,如果样本足够大,则将其设置为2折甚至单折。
发布于 2021-07-18 21:17:51
我认为您需要在函数中将优化器作为参数提及,例如:
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_modelhttps://stackoverflow.com/questions/66147897
复制相似问题