Каковы все возможные настраиваемые параметры GridSearchCV? (для param_grid) - PullRequest
1 голос
/ 17 апреля 2019

Я построил ANN с keras и использовал GridSearchCV, чтобы попробовать разные параметры и посмотреть, какая комбинация даст мне лучший результат.

Хотелось бы знать, все ли параметры, которые мы определяем в слоях с помощью Dense-модуля, возможны для сетки в GridSearchCV? Я уверен в трех параметрах "batch_size", "epochs" и "optimizer". Но я попробовал его для функции активации, и через два дня мой компьютер не закончил поиск по сетке! Так что я остановил это, и теперь я ищу ответы по этому вопросу.

Код в последних строках выглядит следующим образом:

def classifier_builder(optimizer):

    classifier = Sequential()
    classifier.add(Dense(units = 8, kernel_initializer = 'uniform',
    activation = 'relu', input_shape =(11,)))
    classifier.add(Dense(units = 8, kernel_initializer = 'uniform', 
    activation = 'relu'))
    classifier.add(Dense(units = 1, kernel_initializer = 'uniform', 
    activation = 'sigmoid'))
    classifier.compile(optimizer = optimizer,
    loss = 'binary_crossentropy', metrics = ['accuracy'])  
    return classifier

classifier = KerasClassifier(build_fn = classifier_builder)
parameters = {"batch_size":[25, 32, 50],
              'epochs':[100, 500],
              'optimizer':['adam', 'rmsprop']}
grid_search = GridSearchCV(estimator = classifier,
                           param_grid = parameters,
                           scoring = 'accuracy',
                           cv = 10)
grid_search = grid_search.fit(X_train, y_train)

Итак, мои вопросы: возможно ли дать различные функции активации и инициализаторы ядра, как я делал выше для batch_size & epochs? Или это не очень хорошая идея, чтобы изменить между различными функциями активации, потому что это меняет структуру нейронной сети каждый раз? Например, как это:

def classifier_builder(optimizer,activ_func1,activ_func2):

    classifier = Sequential()
    classifier.add(Dense(units = 8, kernel_initializer = 'uniform',
    activation = activ_func1, input_shape =(11,)))
    classifier.add(Dense(units = 8, kernel_initializer = 'uniform', 
    activation = activ_func1))
    classifier.add(Dense(units = 1, kernel_initializer = 'uniform', 
    activation = activ_func2))
    classifier.compile(optimizer = optimizer,
    loss = 'binary_crossentropy', metrics = ['accuracy'])  
    return classifier

classifier = KerasClassifier(build_fn = classifier_builder)
parameters = {"batch_size":[25, 32, 50],
              'epochs':[100, 500],
              'optimizer':['adam', 'rmsprop']
              'activ_func1':['relu','elu'],
              'activ_func2':['hard_sigmoid','sigmoid','softplus']}

#and the rest of the code is the same

Заранее большое спасибо :)

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