Почему входные данные передаются в тип переменной?

#pytorch #yolo

#pytorch #yolo

Вопрос:

Я читаю код, который реализует YOLOv3 с помощью Pytorch, и получаю строку, подобную этой:

     for batch_i, (_, imgs, targets) in enumerate(dataloader):
            batches_done = len(dataloader) * epoch   batch_i
            imgs = Variable(imgs.to(device))  # ??
            targets = Variable(targets.to(device), requires_grad=False)
  

imgs — это входные данные, и я не могу понять, почему они завершают преобразование: Variable(imgs.to(device)))
Означает ли это, что входные данные должны быть обучены (поскольку по умолчанию используется параметр requires_grad=true) или есть другая причина?

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

1. Да, этот код не имеет смысла

2. Спасибо вам, ребята! Но теперь я понимаю смысл этого кода. Этот код пытается преобразовать тип входных данных в тип «cuda» для графического процессора. Поскольку веса, которые я использую, — torch.cuda. Плавающий, и тип входных данных должен оставаться неизменным.

Ответ №1:

Как указал Наттафон в своем комментарии, я действительно не вижу, чтобы вызовы переменной имели какой-либо смысл в сценарии.

Технически переменная автоматически становится частью вычислительного графика. Так что, возможно, это написано кем-то, кто перешел из tensorflow или с учетом визуализации полного вычислительного графика.

Ответ №2:

если вы читаете документ здесь

API ПЕРЕМЕННЫХ устарел. Следовательно, нам больше не нужно беспокоиться об использовании переменной для переноса тензора. вы можете продолжить работу с оболочкой переменной в последней версии torch.