Как сделать раннюю остановку с tenorflow.models.Sequential ()? - PullRequest
0 голосов
/ 30 января 2019

Используя последовательную модель, сгенерированную следующим образом:

def generate_model():
    model = Sequential()
    model.add(Conv1D(64, kernel_size=10, strides=1,
                     activation='relu', padding='same',
                     input_shape=(MAXLENGTH, NAMESPACELENGTH)))
    model.add(MaxPooling1D(pool_size=4, strides=2))
    model.add(Conv1D(32, 3, activation='relu', padding='same'))
    model.add(MaxPooling1D(pool_size=4))
    model.add(Flatten())
    model.add(Dense(10, activation='relu'))
    model.add(Dense(1, activation='linear'))
    model.compile(loss='mean_squared_error', 
                  optimizer='adam', metrics=['mean_squared_error'])
    return model

Я хочу сделать перекрестное подтверждение Kfold.Итак, я тренирую K моделей в цикле:

models = []
for ndx_train, ndx_val in kfold.split(X, y):
    model = generate_model()
    N_train = len(ndx_train)
    X_batch = X[ndx_train]
    y_batch = y[ndx_train]
    model.fit(X_batch, y_batch, epochs=100, verbose=1, steps_per_epoch=10,
             validation_data=(X[ndx_val], y[ndx_val]), validation_steps=100)

    models.append(model)

Теперь я могу видеть, когда я хочу, чтобы каждая модель остановилась, посмотрев на результат.Т.е. когда ошибка проверки снова увеличивается.Можно ли сделать это легко с чистым tf и с этой настройкой API более высокого уровня?Есть несколько советов, используя строчку tflearn здесь .

1 Ответ

0 голосов
/ 30 января 2019

Используя EarlyStopping обратный вызов:

from tensorflow.keras.callbacks import EarlyStopping
callbacks = [
    EarlyStopping(monitor='val_mean_squared_error', patience=2, verbose=1),
]
model.fit(..., callbacks=callbacks)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...