为啥我有 KeyError:'val_acc'?
Posted
技术标签:
【中文标题】为啥我有 KeyError:\'val_acc\'?【英文标题】: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.history
是 dict
的一个实例
无法使用 MNIST 数据重现您的错误;能否请您发布history.history
的结果以及您的 Keras 版本?
感谢您的友好回复。请参阅EDIT-1
您确定错误的来源在以下行吗? val_acc = history.history['val_acc']
改成val_acc = history.history['val_loss']
会不会出现同样的错误?
【参考方案1】:
从 tensorflow 2 开始,历史键如下:(['val_loss', 'val_accuracy', 'val_precision', 'val_recall', 'loss', 'accuracy', 'precision', 'recall'])
【讨论】:
【参考方案2】:代码本身似乎没有问题。我已经从我拥有的另一个脚本中复制了部分代码。我只是擦掉了“val_acc”和“val_loss”中的下划线,然后再次输入,就成功了!
在复制和粘贴时可能嵌入了一些特殊字符?
【讨论】:
以上是关于为啥我有 KeyError:'val_acc'?的主要内容,如果未能解决你的问题,请参考以下文章