使用 tf.keras.callbacks,我只能通過選擇一個要監(jiān)控的屬性(通常是驗證準確性)來自動保存最佳模型,但有時,我需要根據驗證和訓練準確性的比較來保存它。我怎樣才能做到這一點?tf.keras.history 文件是否在每個時期記錄模型的權重?如果是這樣,我如何通過指定我想要的時代來從歷史文件中保存我的模型?這是另一種可能的解決方案。這就是我遇到的情況:有時,我的驗證準確率在早期階段非常高(我認為純屬偶然),而我的訓練準確率仍遠低于它。這個時代最終成為自動保存的模型。這是一個糟糕的模型,因為它的訓練準確性很差,但由于其高驗證準確性而被保存下來。如果它保存在訓練和驗證精度滿足的地方,它會是一個非常好的模型。因此,在每個時期,我更愿意比較訓練準確度和驗證準確度,選擇兩者中最低的,并基于此決定我的最佳模型。關于如何做到這一點的任何建議?
2 回答

江戶川亂折騰
TA貢獻1851條經驗 獲得超5個贊
您可以像這樣實現自定義回調:
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]...)

寶慕林4294392
TA貢獻2021條經驗 獲得超8個贊
添加回答
舉報
0/150
提交
取消