如何使用tensorflow.models.Sequential()提前停止?

如何使用tensorflow.models.Sequential()提前停止?,tensorflow,keras,deep-learning,Tensorflow,Keras,Deep Learning,使用如下生成的顺序模型: def generate_model(): model = Sequential() model.add(Conv1D(64, kernel_size=10, strides=1, activation='relu', padding='same', input_shape=(MAXLENGTH, NAMESPACELENGTH))) model.add(MaxP

使用如下生成的顺序模型:

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

from tensorflow.keras.callbacks import EarlyStopping
callbacks = [
    EarlyStopping(monitor='val_mean_squared_error', patience=2, verbose=1),
]
model.fit(..., callbacks=callbacks)
通过使用回调:

from tensorflow.keras.callbacks import EarlyStopping
callbacks = [
    EarlyStopping(monitor='val_mean_squared_error', patience=2, verbose=1),
]
model.fit(..., callbacks=callbacks)