【问题标题】:How to get history over one epoch after every batch如何在每批之后获取一个时期的历史
【发布时间】:2021-02-27 00:56:36
【问题描述】:

我正在用 keras 训练一个模型一个时期

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

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

明确一点:我希望在每批之后写入历史记录(而不是像往常一样,在每个时期之后)。

【问题讨论】:

标签: tensorflow machine-learning keras


【解决方案1】:

我假设您想在每批结束时保存准确度和损失。为此,您需要创建一个自定义回调,如下所示

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'))

现在在 model.fit 中包含

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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 2020-03-01
    • 1970-01-01
    • 2013-06-03
    • 2013-02-24
    • 1970-01-01
    相关资源
    最近更新 更多