我想用Keras训练我的模型。我使用的是一个巨大的数据集,其中一个训练时期有超过30000步。我的问题是,我不想等待一个时期,然后再检查验证数据集上的模型改进。有什么办法让Keras评估验证数据每1000步的训练数据?我认为一个选择是使用回调函数,但是Keras有内置的解决方案吗?
if train:
log('Start training')
history = model.fit(train_dataset,
steps_per_epoch=train_steps,
epochs=50,
validation_data=val_dataset,
validation_steps=val_steps,
callbacks=[
keras.callbacks.EarlyStopping(
monitor='loss',
patience=10,
restore_best_weights=True,
),
keras.callbacks.ModelCheckpoint(
filepath=f'model.h5',
monitor='val_loss',
save_best_only=True,
save_weights_only=True,
),
keras.callbacks.ReduceLROnPlateau(
monitor = "val_loss",
factor = 0.5,
patience = 3,
min_lr=0.001,
),
],
)
1条答案
按热度按时间uqdfh47h1#
使用内置的回调函数,你不能这样做,你需要的是实现一个定制的回调函数。
这摘自TensorFlow文档。
您可以覆盖
on_train_batch_end()
函数,并且由于批处理参数是整数,您可以根据需要验证batch % 100 == 0
,然后验证self.model.predict(val_data)
等。请检查我的答案在这里:如何获取Tensorflow 2.0中的其他指标(不仅仅是准确性)?以全面了解如何覆盖自定义回调函数。请注意,在您的情况下,重要的是
on_train_batch_end()
,而不是on_epoch_end()
。