【问题标题】:Why am I having KeyError: 'val_acc'?为什么我有 KeyError:'val_acc'?
【发布时间】:2019-07-03 06:50:43
【问题描述】:

在我的 Keras 代码中,我执行了以下操作:

model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])
history = model.fit(border_irregularity_features,y, epochs=5, batch_size=1, validation_split=0.33)
...
...
accuracy = history.history['acc']
val_acc = history.history['val_acc']

但是,我遇到了以下错误:

val_acc = history.history['val_acc']
KeyError: 'val_acc'

这是为什么呢?我错过了什么?

谢谢。

EDIT-1

当我这样做时:

print history.history.keys()

我明白了:

['acc', 'loss', 'val_acc', 'val_loss']

【问题讨论】:

  • history.history 没有名为“val_acc”的键。您可以安全地尝试使用history.history.get('val_acc', None) 使用get 键,如果缺少键,None 是默认值。如果您在尝试获取特定密钥之前需要知道名称,您可能需要 print 所有密钥:print(history.history.keys()),假设 history.historydict 的一个实例
  • 无法使用 MNIST 数据重现您的错误;能否请您发布history.history 的结果以及您的 Keras 版本?
  • 感谢您的友好回复。请参阅EDIT-1
  • 您确定错误的来源在以下行吗? val_acc = history.history['val_acc'] 改成val_acc = history.history['val_loss'] 会不会出现同样的错误?

标签: python machine-learning keras deep-learning


【解决方案1】:

从 tensorflow 2 开始,历史键如下:(['val_loss', 'val_accuracy', 'val_precision', 'val_recall', 'loss', 'accuracy', 'precision', 'recall'])

【讨论】:

    【解决方案2】:

    代码本身似乎没有问题。我已经从我拥有的另一个脚本中复制了部分代码。我只是擦掉了“val_acc”和“val_loss”中的下划线,然后再次输入,就成功了!

    在复制和粘贴时可能嵌入了一些特殊字符?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 2019-12-29
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      相关资源
      最近更新 更多