如何将 SmoothedValue 转换为浮点数以使用 pyplot 进行绘图?

How can I convert SmoothedValue into float for plotting using 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)

在每个 epoch 中训练后,我得到对应于字典 metric_logger.meters 中的键 'loss' 的值,然后将其附加到我的数组 loss_axis 中。但是,metric_logger.meters 中的元素属于 SmoothedValue 类型,因此我的程序无法解释以绘制它。如何将此平滑值类型转换为浮点数以便绘制它?

如果将 loss_axis.append(loss_list) 替换为 loss_axis.append(loss_list.value),应该可以使用。