python - 如何将 SmoothedValue 转换为 float 以使用 pyplot 进行绘图?
问题描述
我正在尝试使用 matplotlib.pyplot 从我的神经网络中绘制损失与历元图,但我遇到了一个问题。在每个 epoch 之后,损失被收集在一个数组中,并且是 SmoothedValue 对象(来自 utils.py)。现在我正试图在每个时期之后获得损失并将其存储在一个数组中,以便稍后我可以将它用作 pyplot 的轴。我这样做是通过以下方式:
for epoch in range(num_epochs):
epoch_list.append(epoch)
# train for one epoch, printing every 10 iterations
metric_logger = train_one_epoch(model, optimizer, data_loader, device, epoch, print_freq=10)
loss_list = metric_logger.meters.get('loss')
loss_axis.append(loss_list)
print("Loss: ", loss_list.value)
print("Loss: ", loss_list.deque)
# update the learning rate
lr_scheduler.step()
# evaluate on the test dataset
coco_evaluator = evaluate(model, data_loader_test, device=device)
在每个时期训练之后,我得到与字典 metric_logger.meters 中的键“loss”相对应的值,然后我将其附加到我的数组 loss_axis。但是,metric_logger.meters 中的元素属于 SmoothedValue 类型,然后我的程序无法解释它来绘制它。如何将此平滑值类型转换为浮点数以便绘制它?
解决方案
如果您替换为 . 它应该可以loss_axis.append(loss_list)
工作loss_axis.append(loss_list.value)
。
推荐阅读
- sql - 从sql中具有多种模式的多个列中提取特定的字符串值
- django - 部署的 Django 项目不加载静态文件
- xaml - 无法从 xamarin 表单中的自定义控件创建 nuget 包
- python - 重塑数据框(列到值)
- mysql - 根据列值将一行分解/拆分为多行
- html - 如何将简单表单输入限制为 50 个字符
- segmentation-fault - torsocks 分段错误 OSX
- android - 并非所有 Android 设备都收到 BLE 通知
- reactjs - 如何修复/忽略此控制台错误“TS2307:找不到模块'@components/common/ButtonBlock'或其相应的类型声明。”
- css - :global() css-module 选择器在 NextJS 中不是纯的问题