Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法在tf.keras中的指定时间保存模型?_Python_Tensorflow_Keras_Tf.keras - Fatal编程技术网

Python 有没有办法在tf.keras中的指定时间保存模型?

Python 有没有办法在tf.keras中的指定时间保存模型?,python,tensorflow,keras,tf.keras,Python,Tensorflow,Keras,Tf.keras,使用tf.keras.callbacks,我只能通过选择一个要监视的属性(通常是验证精度)来自动保存最佳模型,但有时,我需要根据验证和训练精度的比较来保存它。我该怎么做 tf.keras.history文件是否记录每个历元的模型权重?如果是这样,如何通过指定所需的历元从历史文件中保存模型?这是另一种可能的解决办法 这就是我遇到的情况:有时,我的验证准确率在早期非常高(我想纯粹是偶然的),而我的训练准确率仍然远远低于它。该纪元最终成为自动保存的模型。这是一个蹩脚的模型,因为它的训练精度差,但它是一

使用tf.keras.callbacks,我只能通过选择一个要监视的属性(通常是验证精度)来自动保存最佳模型,但有时,我需要根据验证和训练精度的比较来保存它。我该怎么做

tf.keras.history文件是否记录每个历元的模型权重?如果是这样,如何通过指定所需的历元从历史文件中保存模型?这是另一种可能的解决办法


这就是我遇到的情况:有时,我的验证准确率在早期非常高(我想纯粹是偶然的),而我的训练准确率仍然远远低于它。该纪元最终成为自动保存的模型。这是一个蹩脚的模型,因为它的训练精度差,但它是一个被保存,因为它的高验证精度。如果它保存在一个培训和验证精度满足要求的地方,它将是一个非常好的模型。因此,在每一个阶段,我都会比较训练准确度和验证准确度,从两者中选择最低的一个,并在此基础上决定我的最佳模型。有什么建议吗?


您可以为每个历元保存模型,并在文件名中包含精度/val精度(或随后检查历史对象)。

您可以实现如下自定义回调:

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]...)

正是我要找的!非常感谢。