Как я могу преобразовать сглаженное значение в значение с плавающей точкой для построения графика с использованием pyplot?

#python #neural-network #pytorch #smoothing

#python #нейронная сеть #pytorch #сглаживание

Вопрос:

Я пытаюсь построить график потерь и эпох из моей нейронной сети, используя matplotlib.pyplot, но я сталкиваюсь с проблемой. После каждой эпохи потери собираются в массив и являются сглаженными объектами Value (из 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)
  

После обучения в каждую эпоху я получаю значение, соответствующее ключу ‘loss’ в словаре metric_logger.meters, которое я затем добавляю в свой массив loss_axis. Однако элементы в metric_logger.meters имеют тип SmoothedValue, который затем моя программа не может интерпретировать для его построения. Как я могу преобразовать этот сглаженный тип значения в float, чтобы я мог его отобразить?

Ответ №1:

Это должно сработать, если вы замените loss_axis.append(loss_list) на loss_axis.append(loss_list.value) .

Комментарии:

1. Большое вам спасибо! Это решило мою проблему. Не могу поверить, что у меня был ответ передо мной, и я не понял, ха-ха