簡體   English   中英

有沒有一種方法可以將模型保存在tf.keras中的指定紀元?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM