如何在每个批次之后获得一个epoch的历史记录



我正在为一个epoch训练一个带有keras的模型只:

history = model.fit([x], y,
validation_split=0.2, epochs=1, batch_size=2)
print(history.history['accuracy'])

历史记录现在显然只包含一个纪元结束时的值。我如何评估训练的准确性或损失?我希望这些值是在训练期间在控制台中显示的。

要明确:我希望在每个批处理之后写入历史(而不是像通常那样在每个epoch之后写入历史)。

我假设您希望在每批结束时保存准确性和损失。要做到这一点,您需要创建一个自定义回调,如下所示

class BCP(keras.callbacks.Callback):
batch_accuracy = [] # accuracy at given batch
batch_loss = [] # loss at given batch    
def __init__(self):
super(BCP,self).__init__() 
def on_train_batch_end(self, batch, logs=None):                
BCP.batch_accuracy.append(logs.get('accuracy'))
BCP.batch_loss.append(logs.get('loss'))

现在在模型。适合包括

callbacks = [BCP()]

现在训练1 epoch。在epoch结束时,每个批的精度和损耗值存储在BCP中。batch_accuracy和BCP.batch_loss。你可以把它们打印出来如下:

print('{0:^4s}{1:^22s}{2:^10s}'.format('Batch', 'Loss', 'Accuracy'))
for i in range (len(BCP.batch_accuracy)):
print('{0:^4s}{1:15.5f}{2:15.2f}'.format(str(i), BCP.batch_loss[i], BCP.batch_accuracy[i]* 100))

最新更新