在 epoch 结束时获取准确性和验证准确性的值时面临问题

Facing problem in fetching the value of accuracy and validation accuracy on epoch ends

我正在使用 resnetmnist 数据集上构建模型。实际上我需要一些图表来处理。 完整代码为here.

我需要的图表是,

  1. 时期与验证损失
  2. 时期与训练损失
  3. 时代与验证准确性
  4. 时代与训练准确性

我得到了前两张图。但我没能画出其余部分。当我尝试绘制它们时会发生以下情况。

我构建了一个 class 来存储 4 个值(验证损失、训练损失、验证准确性、训练准确性)。代码如下。

class LossHistory(Callback):
def on_train_begin(self, logs={}):
    self.losses = []
    self.val_losses = []
    self.acc = []
    self.val_acc = []
    
def on_epoch_end(self, batch, logs={}):
    self.losses.append(logs.get('loss'))
    self.val_losses.append(logs.get('val_loss'))
    self.acc.append(logs.get('acc'))
    print(logs.get('acc'))                  """ Showing "None" """
    self.val_acc.append(logs.get('val_acc'))
    print(logs.get('val_acc'))              """ Showing "None" """

训练完成后...

predictions, history = run_resNet()

当我做...

print(history.acc)
print(history.val_acc)

我得到的输出...

[None, None, None, None, None,........]
[None, None, None, None, None,........]

有什么问题吗?如何摆脱它?

当您尝试从日志中获取准确度指标时,更新准确度指标的名称(“准确度”而不是 'acc'),如下所示:

def on_epoch_end(self, batch, logs={}):
    self.losses.append(logs.get('loss'))
    self.val_losses.append(logs.get('val_loss'))
    self.acc.append(logs.get('accuracy'))
    print(logs.get('accuracy'))
    self.val_acc.append(logs.get('val_accuracy'))
    print(logs.get('val_accuracy'))

查看更新后的 notebook 以获取完整代码。