簡體   English   中英

是否可以使用張量流回調將紀元結果記錄在tf.keras模型中,以便在訓練結束時保存?

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

我正在嘗試保存在每個時期結束時傳遞到tf.keras回調中的logs值,以跟蹤模型在此過程中的行為。

我嘗試編寫一個自定義tf.keras回調,該回調將傳遞給該回調的logs值附加到在訓練開始時使用同一回調初始化的數組。 但是,在第一個時期之后進行調試時,我在模型中初始化的數組在第二個時期結束時為None 以下是我創建的自定義回調。

class LogEpochScores(tf.keras.callbacks.Callback):
    def __init__(self):
        super(LogEpochScores, self).__init__()

    def on_train_begin(self, logs=None):
        self.model.epoch_log = []

    def on_epoch_end(self, epoch, logs=None):
        self.model.epoch_log = self.model.epoch_log.append(logs)

我預計培訓結束時將進行以下排列

[
{loss: 1, acc:1, val_loss:1, val_acc:1},
{loss: 2, acc:2, val_loss:2, val_acc:2},
{loss: 3, acc:1, val_loss:3, val_acc:3},
{loss: 4, acc:1, val_loss:4, val_acc:4},
{loss: 5, acc:1, val_loss:5, val_acc:5},
{loss: 6, acc:1, val_loss:6, val_acc:6}
]

每個條目都是來自各個時期的結果。

輸出實際上是None

編輯:格式化

顯然我不聰明。 我使用錯誤的方法追加。 它具有破壞性,因此您在使用后不必將其設置為變量。 更正后的代碼如下:

class LogEpochScores(tf.keras.callbacks.Callback):
    def __init__(self):
        super(LogEpochScores, self).__init__()

    def on_train_begin(self, logs=None):
        self.model.epoch_log = []

    def on_epoch_end(self, epoch, logs=None):
        self.model.epoch_log.append(logs)

請注意,在on_epoch_end我進行了更改

self.model.epoch_log = self.model.epoch_log.append(logs)

self.model.epoch_log.append(logs)

另外,在tf.kera模型對象中,有一個名為history的屬性,正是我所需要的。 因此最終不需要此回調

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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