Pytorch 为什么将输入数据转换为变量类型?

Pytorch 为什么将输入数据转换为变量类型?,pytorch,yolo,Pytorch,Yolo,我正在阅读用Pytorch实现YOLOv3的代码,下面是这样一行代码: 对于枚举(数据加载器)中的批处理i,(u、imgs、目标): 批次完成=len(数据加载器)*历元+批次完成 imgs=变量(imgs.到(设备))#?? targets=变量(targets.to(设备),需要_grad=False) imgs是输入数据,我不明白为什么会存在转换:变量(imgs.to(device)) 这是否意味着应该对输入数据进行训练(因为默认选项是需要_grad=true),还是有其他原因?正如纳塔

我正在阅读用Pytorch实现YOLOv3的代码,下面是这样一行代码:

对于枚举(数据加载器)中的批处理i,(u、imgs、目标):
批次完成=len(数据加载器)*历元+批次完成
imgs=变量(imgs.到(设备))#??
targets=变量(targets.to(设备),需要_grad=False)
imgs是输入数据,我不明白为什么会存在转换:
变量(imgs.to(device))


这是否意味着应该对输入数据进行训练(因为默认选项是需要_grad=true),还是有其他原因?

正如纳塔芬在他的评论中指出的那样,我认为调用变量在场景中没有任何意义

从技术上讲,变量自动成为计算图的一部分。所以,也许它是由来自tensorflow的人写的,或者是考虑到完整计算图形的可视化

变量API已被弃用。 因此,我们不应该再费心使用变量来包装张量了。
你们可以在最新的torch版本中继续使用变量包装器。

是的,这段代码对你们来说毫无意义!但我现在明白了这段代码的要点。此代码试图将GPU的输入数据类型转换为“cuda”类型。因为我使用的权重是torch.cuda.FloatTensor,所以输入数据类型应该保持不变。