python - 在 epoch 结束时获取准确度和验证准确度的值时面临的问题
问题描述
我正在 mnist 数据集上使用resnet构建模型。实际上我需要一些图表来处理。完整的代码在这里。
我需要的图表是,
- 时期与验证损失
- 时期与训练损失
- 时期与验证准确性
- 时期与训练准确性
我得到了前两个图表。但我没有画出其余的。当我尝试绘制它们时会发生以下事情。
我建立了一个类来存储 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'))
检查更新的笔记本以获取完整的代码。
推荐阅读
- algorithm - 给定从 1 到 k 的数字,选择 d 个数字,它们的总和等于 v
- autocomplete - Racer 不会自动完成前奏中的代码
- c# - 如何修复 - 应用程序因退出代码 80131506 而崩溃
- sql - CASE 表达式中的语法错误,无法纠正
- kotlin - return@map 的工作原理
- java - 确定从客户端到服务器的有效负载传输的 HTTP 方法
- terminal - 为什么终端将转义表示为 ^[?
- vb.net - 活动代表
- git - Git - 为什么这个命令不会在我的存储库中添加文件?
- docker - 带有本地服务器的 Docker/Kubernetes