Tensorflow 如何在每批之后获得一个时代的历史
我正在用keras培训一个模型,只针对一个时代: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']) 现在的历史显然只包含了一个时代末的价值。如何评估历元期间的训练精度或损失?我希望这些是培训期间控制台中显示的值 需要明确的是:我希望在每一批之后(而不是像往常一样,在每一个历元之后)都写一份
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))
我想你可以写下你的答案,然后每批打印出准确度。这回答了你的问题吗?你的期望是正确的。什么原因让你失望?请看我的编辑。我对每一批历史感兴趣,而不是每一个时代