#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.