我目前正在尝试获取每批次的损失和准确性,以用于我的 Keras 模型的训练和验证。我已经成功地进行了损失和准确性训练,但是在尝试获得验证损失和准确性的等效项时遇到了问题。
我的工作基于这个 query 并针对我的应用程序稍微调整了代码。 issue 是我刚刚收到“无”值列表。
我创建了自己的 LossHistory 类,如下所示。我希望能够获得每个批次的指标,然后是每个时期。
class LossHistory(keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.history = {'loss':[],'val_loss':[], 'accuracy':[],'val_accuracy':[], 'loss_avg':[],'val_loss_avg':[], 'accuracy_avg':[],'val_accuracy_avg':[]}
def on_batch_end(self, batch, logs={}):
self.history['loss'].append(logs.get('loss'))
self.history['val_loss'].append(logs.get('val_loss'))
self.history['accuracy'].append(logs.get('accuracy'))
self.history['val_accuracy'].append(logs.get('val_accuracy'))
def on_epoch_end(self, epoch, logs={}):
self.history['loss_avg'].append(logs.get('loss'))
self.history['val_loss_avg'].append(logs.get('val_loss'))
self.history['accuracy_avg'].append(logs.get('accuracy'))
self.history['val_accuracy_avg'].append(logs.get('val_accuracy'))
我仍然可以得到验证损失和准确性的平均值。换句话说,每个时期之后的验证指标。我只是无法获得每批次的这些指标。
有人知道为什么会这样吗?我试着查看关于 customer callbacks 的 Keras 文档,但找不到关于验证指标的任何信息。
不确定我是否遗漏了任何明显的东西。
验证损失和指标在每个时期结束时进行评估,没有 Keras 计算的每批次验证损失和指标。
API不支持,但你仍然可以做到。下面是一个伪代码。如果时间允许,我会尝试放一个更干净的版本。
def on_batch_end(self, batch, logs={}):
if batch%10 == 0: # Better dont evaluate for all Batch
#pred = model.predict(Validation_X)
#loss = computeLoss(pred,Validation_Y)
#logs.set('BatchLoss',loss)
我不确定,self.model 是否可以访问。