gpt4 book ai didi

tensorflow - Keras ModelCheckpoint 是否会在多个拟合 session 中保存最佳模型?

转载 作者:行者123 更新时间:2023-12-04 12:56:57 24 4
gpt4 key购买 nike

如果我有一个装有 ModelCheckpoint 的 Keras 模型回调并将其安装在几个“拟合 session ”中(即我多次调用 model.fit()),回调会保存最近拟合 session 中的最佳模型还是所有拟合 session 中的最佳模型?
谢谢。

最佳答案

好问题。我用现有的模型和数据集做了一个实验。我创建了一个检查点回调,如图所示并在 model.fit 中使用它

file_path1=r'c:\temp\file1'
mchk=tf.keras.callbacks.ModelCheckpoint( filepath=file_path1, monitor="val_loss", verbose=1,
save_best_only=True, save_weights_only=True, mode="auto", save_freq="epoch" )

history = model.fit(X_train, Y_train, validation_data=val_data,
batch_size= 128, epochs= 5, verbose= 1, callbacks=[mchk])
我只保存了权重,并且只保存了验证损失最低的时代的权重。我在回调中设置了 verbose=1 以便我可以看到每个时期的验证损失值。接下来我再次运行了基本相同的代码,但我改变了
file2 的文件路径的名称。代码如下
file_path2=r'c:\temp\file2'
mchk=tf.keras.callbacks.ModelCheckpoint( filepath=file_path2, monitor="val_loss", verbose=1,
save_best_only=True, save_weights_only=True, mode="auto", save_freq="epoch" )

history = model.fit(X_train, Y_train, validation_data=val_data,
batch_size= 128, epochs= 5, verbose= 1, callbacks=[mchk])
现在 model.fit 会在 session 结束时保留其状态,因此如果您第二次运行它
它从它停止的地方开始。但是它不保留回调的状态。
因此,在第二次运行时,回调将验证损失初始化为 np.inf,因此它将
确保在第一个纪元结束时保存权重。如果您不更改文件名,它将覆盖您在第一次运行时保存的文件。如果在第二次运行中保存权重的验证损失值低于第一次运行的验证损失值,那么您最终会得到最好的保存权重。但是,如果在第二次运行中验证损失高于第一次运行时,您最终不会保存总体最佳权重。所以这就是它在回调具有 save_weights_only=True 的情况下的工作方式。我认为如果您保存整个模型,它的行为可能会有所不同,因为在这种情况下它可能会保留回调的状态。所以我用 save_weights_only=False 重新运行实验。结果表明保存整个模型并没有保存回调的状态。现在我正在使用 Tensorflow 2.0。不同版本的结果可能不同。我会在你的版本上运行这个实验,看看它的行为是否相似。

关于tensorflow - Keras ModelCheckpoint 是否会在多个拟合 session 中保存最佳模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65418738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com