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