Мне нужно оценить точность моей глубокой нейронной сети с помощью различных алгоритмов оптимизации. Я могу использовать 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