使用Keras回归时,sckitlearn RandomizedSearchCV没有“最佳估计量”属性

2024-09-28 05:26:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用tf.kerastensorflow 2.x,并尝试在scikit-learn中使用RandomizedSearchCV调整简单MLP模型的超参数。
包和python版本:python 3.7.5scikit-learn 0.22.2tensorflow 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

Tags: fromimportsearch数量modellayerstensorflowscikit

热门问题