#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. Большое вам спасибо! Это решило мою проблему. Не могу поверить, что у меня был ответ передо мной, и я не понял, ха-ха