![](/img/trans.png)
[英]Is it possible to log the epoch results in the tf.keras model using a tensorflow callback, in order to save at the end of training?
[英]Is there a way to save a model at a specified epoch in tf.keras?
使用tf.keras.callbacks,我只能通过选择一个要监视的属性来自动保存最佳模型(通常是验证准确性),但是有时候,我需要根据验证和训练准确性的比较来保存它。 我怎样才能做到这一点?
tf.keras.history文件是否在每个时期都记录了模型的权重? 如果是这样,如何通过指定所需的时期从历史文件中保存模型? 那是另一种可能的解决方案。
这是我遇到的情况:有时候,我的验证准确性在早期就很高(我想当然是偶然的),而我的训练准确性仍然远远低于它。 该时期最终成为自动保存的模型。 这是一个糟糕的模型,因为它的训练准确度很差,但是由于验证准确性很高,所以得到了保存。 如果将其保存在训练和验证准确性相符的地方,那将是一个很好的模型。 因此,在每个时期,我都希望比较训练的准确性和验证的准确性,选择两者中的最低者,并据此确定最佳模型。 有什么建议吗?
您可以像这样实现Custom回调:
class CustomModelCheckpoint(tf.keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs=None):
# logs is a dictionary
print(f"epoch: {epoch}, train_acc: {logs['acc']}, valid_acc: {logs['val_acc']}")
if logs['val_acc'] > logs['acc']: # your custom condition
self.model.save('model.h5', overwrite=True)
cbk = CustomModelCheckpoint()
model.fit(....callbacks=[cbk]...)
在https://keras.io/callbacks/上签出回调ModelCheckpoint
您可以为每个时期保存模型,并在文件名中包括准确性/ val准确性(或随后检查历史对象)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.