sckit-learn RandomizedSearchCV не имеет атрибута 'best_estimator_' при использовании KerasRegression - PullRequest
0 голосов
/ 26 марта 2020

Я использую tf.keras с tensorflow 2.x и пытаюсь настроить гиперпараметр простой модели MLP с RandomizedSearchCV в scikit-learn.
Pakages и python версия: python 3.7.5, scikit-learn 0.22.2, и tensorflow 2.1.0
Я пытаюсь найти:

  • лучшая глубина (число) скрытых слоев (т.е. n_hidden)
  • лучшее количество нейронных в каждом слой, где каждый скрытый слой имеет одинаковое количество нейронных (т.е. n_neurous)
  • лучшая скорость обучения (т.е. lr)
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import reciprocal
from tensorflow import keras
import tensorflow as tf
import numpy as np

def build_keras(n_hidden = 3, n_neurous = 30, lr = 1e-3, input_shape = [8]):
    # use for building KerasRegression
    model = keras.models.Sequential()
    model.add(keras.layers.InputLayer(input_shape=input_shape))
    # with n_hidden hidden Dense layers
    for i in range(n_hidden):
        model.add(keras.layers.Dense(n_neurous, activation='relu'))
    # Output layer
    model.add(keras.layers.Dense(1))
    model.compile(loss='mse', optimizer=keras.optimizers.SGD(lr=lr))
    return model

keras_reg = keras.wrappers.scikit_learn.KerasRegressor(build_keras)

search_params = {
    'n_hidden':[1,3,5,7],
    'n_neurous':np.arange(1,100),
    'lr':reciprocal(3e-4, 3e-2)
}

rnd_search = RandomizedSearchCV(keras_reg, search_params, cv=3, n_iter=10)
rnd_search.fit(X_train_trans, y_train, epochs=100, validation_data=(X_val_trans, y_val), 
                callbacks=[keras.callbacks.EarlyStopping(patience=5)])
rnd_search.best_params_    #works fine
rnd_search.best_score_    #works fine
rnd_search_cv.best_estimator_    #Error: No attribute
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...