我正在阅读使用Pytorch实现YOLOv3的代码,并附带如下代码:
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)))
这是否意味着应该对输入数据进行训练(因为默认选项是require_grad = true),还是有其他原因?
答案 0 :(得分:0)
正如Natthaphon在他的评论中指出的那样,在这种情况下,我真的看不到对Variable的调用是有意义的。
从技术上讲,变量自动成为计算图的一部分。因此,也许它是由从tensorflow过来的人编写的,或者是考虑到完整计算图的可视化。
答案 1 :(得分:0)
如果您阅读文档here
不推荐使用Variable API。 因此,我们不应再使用Variable来包装张量。 您可以继续使用最新的割炬版本的变量包装器。