0

我正在尝试使用 gridsearchCV 调整超参数 kernel_regularizer,但 gridsearchCV 一直告诉我我为 kernel_regularizer 输入的参数名称不是真实参数

我尝试了各种参数名称,例如 l2、kernel_regularizer、kernel、regularizers.l2、regularizers.l2(),但都没有奏效。

我也在网上查看过,但似乎找不到有关此问题的任何文档

我的顺序模型使用 kernel_regularizer=l2(0.01)

param_grid = {'kernel_regularizer': [0.01,0.02,0.03]}

grid = GridSearchCV(...)
grid.fit(x_train, y_train) #this is where I get the error: 
                           #ValueError: kernel is not a legal parameter
4

1 回答 1

0

您必须使用KerasClassifiersklearn包装您的模型GridSearchCV才能工作。

def get_model(k_reg):
    model = Sequential()
    model.add(Dense(1,activation='sigmoid', kernel_regularizer=k_reg))
    model.compile(loss='binary_crossentropy',optimizer='adam', metrics=['accuracy'])
    return model

param_grid = {
    'k_reg': [ regularizers.l2(0.01), regularizers.l2(0.001), regularizers.l2(0.0001)]
}

my_classifier = KerasClassifier(get_model, batch_size=32)
grid = GridSearchCV(my_classifier, param_grid)

grid.fit(np.random.rand(10,1),np.random.rand(10,1))

Keras Doc,有一个详细的例子。

于 2019-05-19T16:12:26.007 回答