Я не могу добавить параметр оптимизатора в gridsearch - PullRequest
0 голосов
/ 17 декабря 2018
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import GridSearchCV
def build_classifier():
  classifier = Sequential()
  classifier.add(Dense(units = 6 , init='uniform' , activation= 'relu'))
  classifier.add(Dense(units = 6 , init='uniform' , activation= 'relu'))
  classifier.add(Dense(units = 1 , init='uniform' , activation= 'sigmoid'))
  classifier.compile(optimizer='adam' , loss = 'binary_crossentropy' , 
  metrics=['accuracy'])
  return classifier
KC = KerasClassifier(build_fn=build_classifier)
parameters = {'batch_size' : [25,32],
          'epochs' : [100,500],
          'optimizer':['adam','rmsprop']}
grid_search = GridSearchCV(estimator=KC , 
param_grid=parameters,scoring='accuracy',cv=10)
grid_search.fit(X_train,y_train)

Я хочу протестировать модель с другим оптимизатором, но не могу добавить оптимизатор при поиске по сетке. Он показывает ошибку, когда пытается соответствовать обучающему набору

ValueError: оптимизатор не является допустимым параметром

1 Ответ

0 голосов
/ 17 декабря 2018

Документация keras для scikit-learn гласит:

sk_params принимает как параметры модели, так и параметры подгонки.Параметры легальной модели являются аргументами build_fn .Обратите внимание, что, как и все другие оценщики в scikit-learn, build_fn должен предоставлять значения по умолчанию для его аргументов, чтобы вы могли создать оценщик, не передавая никаких значений в sk_params .

GridSearchCV вызовет get_params() для KerasClassifier, чтобы получить список допустимых параметров, которые могут быть переданы ему, которые согласно вашему коду:

KC = KerasClassifier(build_fn=build_classifier)

будут пустыми (так какВы не указываете какие-либо параметры в build_classifier).

Измените это на что-то вроде:

# Used a parameter to specify the optimizer
def build_classifier(optimizer = 'adam'):
  ...
  classifier.compile(optimizer=optimizer , loss = 'binary_crossentropy' , 
  metrics=['accuracy'])
  ...
  return classifier

После этого оно должно работать.См. этот пример, демонстрирующий использование Keras с scikit-learn.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...