У меня есть модель, которая выглядит следующим образом ...
def baseline_model(initializer='normal', activation='relu'):
model_ = Sequential()
model_.add(Dense(400, input_dim=81, kernel_initializer=initializer, activation=activation))
model_.add(Dropout(0.5))
model_.add(Dense(200, kernel_initializer=initializer, activation=activation))
model_.add(Dropout(0.5))
model_.add(Dense(100, kernel_initializer=initializer, activation=activation))
model_.add(Dropout(0.5))
model_.add(Dense(50, kernel_initializer=initializer, activation=activation))
model_.add(Dropout(0.5))
model_.add(Dense(25, kernel_initializer=initializer, activation=activation))
model_.add(Dropout(0.5))
model_.add(Dense(1, kernel_initializer=initializer))
# Compile model
model_.compile(loss='mean_squared_error', optimizer='adam')
return model_
И я поместил ее в конвейер scikit-learn со стандартным масштабатором ...
std = StandardScaler()
nn = KerasRegressor(build_fn=baseline_model, epochs=40, batch_size=2000, verbose=1)
pl = Pipeline([('std', std), ('nn', nn)])
А потом я пытаюсь запустить его через к-кратную перекрестную проверку ...
kfold = KFold(n_splits=5)
results = cross_val_score(pl, X_train, y_train, cv=kfold)
print("Results: %.2f (%.2f) MSE" % (results.mean(), results.std()))
И это работает. Но я хотел бы иметь возможность получить доступ к этим параметрам в baseline_model. Я попробовал следующее ...
params = {'nn__initializer': 'normal', 'nn__activation': 'softplus'}
results = cross_val_score(pl, X_train, y_train, cv=kfold, fit_params=params)
Но я получаю ошибку, которая заканчивается на
TypeError: Unrecognized keyword arguments: {'initializer': 'normal', 'activation': 'softplus'}
Ну, я думаю, я знаю, что происходит;scikit-learn ищет параметры в функции KerasRegressor, а не в функции модели. Но я прочитал документацию и думаю, что это должно сработать.
sk_params принимает как параметры модели, так и параметры подгонки. Допустимые параметры модели - это аргументы build_fn.
Кто-нибудь знает, как я мог бы получить доступ к этим параметрам build_fn через конвейер таким образом?
Документация KerasRegressor