【问题标题】:Why are input data transferrd to Variable type?为什么将输入数据传输到变量类型?
【发布时间】:2020-10-22 09:09:04
【问题描述】:

我正在阅读使用 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)))
这是否意味着应该训练输入数据(因为默认选项是 requires_grad=true)还是还有其他原因?

【问题讨论】:

  • 是的,这段代码没有意义
  • 谢谢你们!但我现在明白了这段代码的意义。此代码正在尝试将输入数据类型转换为 GPU 的“cuda”类型。由于我使用的权重是torch.cuda.FloatTensor,并且输入数据类型应该保持不变。

标签: pytorch yolo


【解决方案1】:

正如 Natthaphon 在他的评论中指出的那样,我真的认为对 Variable 的调用在场景中没有任何意义。

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

【讨论】:

    【解决方案2】:

    如果您阅读文档here

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 2022-08-02
      • 2013-01-21
      • 1970-01-01
      • 2019-04-26
      • 2018-10-22
      • 2021-09-12
      相关资源
      最近更新 更多