【问题标题】:Volatile was removed and now has no effect. Use `with torch.no_grad():` instead挥发性物质已被移除,现在没有效果。改用`with torch.no_grad():`
【发布时间】:2021-01-02 21:39:49
【问题描述】:

我尝试使用带有 COCO 数据集的 Show And Tell 模型。但是,在某一时刻,我的 Torch 计划暂停了。谁能修复我的代码?这是我的代码导致训练暂停。

def to_var(x, volatile=True):
if torch.cuda.is_available():
    x = x.cuda()
return Variable(x, volatile=volatile)

警告如下。

utils.py:114: UserWarning: volatile 已被删除,现在无效。与 torch.no_grad(): 一起使用。返回变量(x, volatile=volatile)

【问题讨论】:

标签: deep-learning pytorch torchvision mscoco


【解决方案1】:

在新版本的 Pytorch 中,volatile 被删除,Variable 也不再需要。 volatile=True 的任何张量计算都不会被 autograd 跟踪。 所以你的函数可以重写为:

import torch
def to_var(x, volatile=True):
    if torch.cuda.is_available():
        x = x.cuda()
    x.requires_grad = not volatile
    return x

x = torch.tensor(1.0)
print(x.requires_grad)
x = to_var(x, volatile=True)
print(x.requires_grad)
x = to_var(x, volatile=False)
print(x.requires_grad)

输出:

>>> False
>>> False
>>> True 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多