0

我尝试使用带有 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,易失性=易失性)

4

1 回答 1

0

在新版本的 Pytorchvolatile中被删除,也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 
于 2020-09-16T05:38:48.300 回答