【发布时间】:2018-10-09 18:23:13
【问题描述】:
Pytorch 0.4.0 引入了 Tensor 和 Variable 类的合并。
在此版本之前,当我想使用 numpy 数组中的 autograd 创建 Variable 时,我会执行以下操作(其中 x 是一个 numpy 数组):
x = Variable(torch.from_numpy(x).float(), requires_grad=True)
在 PyTorch 版本 0.4.0 中,the migration guide 展示了我们如何在启用 autograd 的情况下创建张量,示例显示您可以执行诸如
x = torch.ones(3, 4, requires_grad=True)
并将requires_grad 设置为现有张量
existing_tensor.requires_grad_()
我尝试了以下三件事来尝试使用requires_grad=True 创建一个张量,这会产生错误(其中x 是一个numpy 数组):
第一个是
x = FloatTensor(x, requires_grad=True)
这给出了错误
TypeError: new() received an invalid combination of arguments - got
(numpy.ndarray, requires_grad=bool), but expected one of:
* (torch.device device)
* (tuple of ints size, torch.device device)
didn't match because some of the keywords were incorrect:
requires_grad
* (torch.Storage storage)
* (Tensor other)
* (object data, torch.device device)
didn't match because some of the keywords were incorrect:
requires_grad
二是做
x = FloatTensor(x)
x.requires_grad()
第三个是
x = torch.from_numpy(x).single()
x.requires_grad()
两者都在第二行引发以下错误:
TypeError: 'bool' object is not callable
这些错误几乎没有提示我做错了什么,而且由于最新版本太新了,因此很难在网上找到可以提供帮助的内容。如何使用 PyTorch 0.4.0 从 numpy 数组中创建 FloatTensor 和 requires_grad=True,最好在一行中?
【问题讨论】: