torch.autograd.Variable 的目的是什么?

yuj*_*ao 10 python deep-learning pytorch

我从我的训练数据集中加载features和labels。它们最初都是 numpy 数组,但我使用torch.from _numpy(features.copy())和将它们更改为火炬张量torch.tensor(labels.astype(np.bool))。

而且我注意到,torch.autograd.Variable是一样的东西placeholder在tensorflow。

当我训练我的网络时,我首先尝试

features = features.cuda()
labels = labels.cuda()

outputs = Config.MODEL(features)
loss = Config.LOSS(outputs, labels)
Run Code Online (Sandbox Code Playgroud)

然后我试过了

features = features.cuda()
labels = labels.cuda()

input_var = Variable(features)
target_var = Variable(labels)
outputs = Config.MODEL(input_var)
loss = Config.LOSS(outputs, target_var)
Run Code Online (Sandbox Code Playgroud)

两个块都成功激活训练,但我担心可能会有细微差别。

Flo*_*ume 13

根据这个问题,您不再需要变量来使用 Pytorch Autograd。

Autograd 自动支持requires_grad设置为True.

而且更重要的是

Variable(tensor)并且Variable(tensor, requires_grad)仍然按预期工作,但它们返回张量而不是变量。

这意味着,如果您的featuresandlabels已经是张量(它们似乎在您的示例中),您的Variable(features)andVariable(labels)只会再次返回张量。

Variables 的最初目的是能够使用自动微分(Source):

变量只是张量的包装器,因此您现在可以轻松地自动计算梯度。