2016-11-26 5 views
3

В настоящее время я пытаюсь организовать регрессионную сеть с использованием keras. Для обеспечения надлежащего обучения я хочу тренироваться с использованием перекрестного подтверждения.Keras and cross validation

Проблема в том, что, похоже, что у keras нет каких-либо функций, поддерживающих перекрестное валидность или они?

Единственное решение, которое я, похоже, нашел, это использовать scikit test_train_split и запустить model.fit для каждого k раза вручную. Разве нет уже интегрированных решений для этого, а не вручную?

ответ

2

Нет ... Это похоже на решение. (. Из того, что я знаю)

1

Существует scikit узнать обертку для Keras, который поможет вам сделать это легко: https://keras.io/scikit-learn-api/

Я рекомендую прочитать пример доктора Джейсона Браунли в: https://machinelearningmastery.com/regression-tutorial-keras-deep-learning-library-python/

def baseline_model(): 
     # create model 
     model = Sequential() 
     model.add(Dense(13, input_dim=13, kernel_initializer='normal', activation='relu')) 
     model.add(Dense(1, kernel_initializer='normal')) 
     # Compile model 
     model.compile(loss='mean_squared_error', optimizer='adam') 
     return model 

estimator = KerasRegressor(build_fn=wider_model, nb_epoch=100, batch_size=5, verbose=0) 
kfold = KFold(n_splits=10, random_state=seed) 
results = cross_val_score(pipeline, X, Y, cv=kfold) 
+0

В этом работает только для того, чтобы X был двумерным, а не трехмерным, например, для LSTM. [Ссылка] (https://github.com/fchollet/keras/issues/1711) – shadi