gpt4 book ai didi

Keras 记录每批训练和测试的损失和准确性

转载 作者:行者123 更新时间:2023-12-02 02:59:08 24 4
gpt4 key购买 nike

我正在使用 Keras 训练 cnn,我需要记录每批的准确性和损失。有没有办法保存统计信息?以下是我正在使用的代码,但准确度是 none .此外,回调似乎正在抑制进度条。

class Histories(keras.callbacks.Callback):
def __init__(self, test_data):
self.test_data = test_data

def on_train_begin(self, logs={}):
self.train_acc = []
self.test_acc = []
self.train_loss = []
self.test_loss = []

def on_batch_end(self, batch, logs={}):
train_loss_batch = logs.get('loss')
train_acc_batch = logs.get('accuracy')
self.train_loss.append(train_loss_batch)
self.train_acc.append(train_acc_batch)
print('\nTrain loss: {}, acc: {}\n'.format(train_loss_batch, train_acc_batch))

x, y = self.test_data
test_loss_batch, test_acc_batch = self.model.evaluate(x, y, verbose=0)
self.test_loss.append(test_loss_batch)
self.test_acc.append(test_acc_batch)
print('\nTesting loss: {}, acc: {}\n'.format(test_loss_batch, test_acc_batch))

要使用回调:
histories = my_callbacks.Histories((x_test, y_test))
model.fit(x_train_reduced, y_train_reduced, batch_size, epochs, verbose=1, callbacks=[histories])

最佳答案

我也有同样的问题。我需要每次计算批次的梯度后,计算验证集和集的损失。

在 Keras API 中有显着的参数:

steps_per_epoch, validation_steps

他们分别为时代和验证设置了示例数量。因此,我想在 20 个示例中设置 epoch 的大小,从而人为地将其等同于 batch_size 的大小。 .之后我创建了一个 callback ,每次批处理完成后进行处理:
class LossHistory(Callback):
def __init__(self):
super(Callback, self).__init__()
self.losses = []
self.val_losses = []

def on_train_begin(self, logs=None):
self.losses = []
self.val_losses = []

def on_batch_end(self, batch, logs=None):
self.losses.append(logs.get('loss'))
self.val_losses.append(logs.get('val_loss'))

关于我写的这个错误 here .到目前为止,我正在等待答案。但我有一个仍然需要解决的问题。

由于这个问题没有简单的答案,所以有必要切磋一下。为此,您可以引用类 Callback 的成员。 .这是验证集,您可以在其上进行测试。这是通过这种方式完成的:
class LossHistory(Callback):
def __init__(self):
super(Callback, self).__init__()
self.losses = []
self.val_losses = []

def on_train_begin(self, logs=None):
self.losses = []
self.val_losses = []

def on_batch_end(self, batch, logs=None):
self.losses.append(logs.get('loss'))
self.val_losses.append(self.model.evaluate(self.validation_data[0], self.validation_data[1]))

附言logs.get ( val_loss ) 在每个时代之后被考虑。对此,在它的第一批第一时代将躺着 None .

关于Keras 记录每批训练和测试的损失和准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47479557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com