Keras - Как использовать построенные объекты оптимизации вместо имен алгоритмов оптимизации во время Grid Search? - PullRequest
0 голосов
/ 13 января 2020

Мне нужно оценить точность моей глубокой нейронной сети с помощью различных алгоритмов оптимизации. Я могу использовать GridSearchCV функцию scikit-learn благодаря утилите KerasClassifier. Проблема в том, что я могу использовать только имена алгоритмов оптимизации при настройке параметров Grid Search, которые используют конфигурацию по умолчанию для данных алгоритмов. Вместо этого я хочу оценить производительность построенных объектов оптимизации , как показано ниже, и я получаю RuntimeError: Cannot clone object <keras.wrappers.scikit_learn.KerasClassifier object at 0x1824a9438>, as the constructor either does not set or modifies parameter optimizer, когда делаю это. Как я могу их использовать? И следующий вопрос: как я могу оценить влияние learning_rate на модель?

def create_model(optimizer):
    model = Sequential()
    model.add(Dense(128, activation='relu', input_dim=100))
    # other layers

    model.compile(optimizer=optimizer)

    return model

learning_rate = 0.01
adam = Adam(lr=learning_rate)
sgd = SGD(lr=learning_rate, decay=1e-6, momentum=0.9, nesterov=True)
optimizer = [adam, sgd]

model = KerasClassifier(build_fn=create_model, epochs=100, batch_size=64, verbose=2)
param_grid = dict(optimizer=optimizer)
# the execution of Grid Search
...