如何使用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)