记录每个批次的keras指标(如损失的keras示例)

2024-04-20 13:22:23 发布

您现在位置:Python中文网/ 问答频道 /正文

在keras文档中,有一个example,其中创建了一个自定义回调来记录每个批的损失。这对我来说很好,但是我也希望记录我添加的度量。你知道吗

例如,对于此代码:

optimizer = Adam()
loss = losses.categorical_crossentropy
metric = ["accuracy"]

model.compile(optimizer=optimizer,
              loss=loss,
              metrics=metric)


class LossHistory(Callback):
    def on_train_begin(self, logs={}):
        self.losses = []

    def on_batch_end(self, batch, logs={}):
        self.losses.append(logs.get('loss'))

loss_history = LossHistory()

history = model.fit(training_data, training_labels,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=2,
                    validation_data=(val_data, val_labels),
                    callbacks=[loss_history])

我不知道如何获取指标


Tags: selfdatamodelondefbatch记录training
1条回答
网友
1楼 · 发布于 2024-04-20 13:22:23

度量历史记录存储在loss_history.losses中:

def on_batch_end(self, batch, logs={}):
  self.losses.append(logs.get('loss'))

此方法将在每个批处理结束时被调用,并将损失度量附加到self.losses中,因此一旦培训完成,您就可以直接使用loss_history.losses访问此列表。你知道吗

我还应该补充一点,如果你想包括准确性,例如,你也可以做如下:

class LossHistory(Callback):
    def on_train_begin(self, logs={}):
        self.losses = []
        self.accuracy= []

    def on_batch_end(self, batch, logs={}):
        self.losses.append(logs.get('loss'))
        self.accuracy.append(logs.get('accuracy'))

然后通过以下方式访问:

loss_history.accuracy

相关问题 更多 >