我正在尝试使用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
答案 0 :(得分:0)
您必须使用KerasClassifier
包装模型,才能使sklearn 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,有一个详细的示例。