Tensorflow 如何在每批之后获得一个时代的历史

Tensorflow 如何在每批之后获得一个时代的历史,tensorflow,machine-learning,keras,Tensorflow,Machine Learning,Keras,我正在用keras培训一个模型,只针对一个时代: history = model.fit([x], y, validation_split=0.2, epochs=1, batch_size=2) print(history.history['accuracy']) 现在的历史显然只包含了一个时代末的价值。如何评估历元期间的训练精度或损失?我希望这些是培训期间控制台中显示的值 需要明确的是:我希望在每一批之后(而不是像往常一样,在每一个历元之后)都写一份

我正在用keras培训一个模型,只针对一个时代:

history = model.fit([x], y,
                    validation_split=0.2, epochs=1, batch_size=2)
print(history.history['accuracy'])
现在的历史显然只包含了一个时代末的价值。如何评估历元期间的训练精度或损失?我希望这些是培训期间控制台中显示的值


需要明确的是:我希望在每一批之后(而不是像往常一样,在每一个历元之后)都写一份历史记录。

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

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()]
现在训练一个大纪元。在历元结束时,每个批次的精度和损耗值存储在BCP.batch_精度和BCP.batch_损耗中。你可以把它们打印出来 详情如下:

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


我想你可以写下你的答案,然后每批打印出准确度。这回答了你的问题吗?你的期望是正确的。什么原因让你失望?请看我的编辑。我对每一批历史感兴趣,而不是每一个时代