Pytorch 0.4.0 ввел слияние классов Tensor и Variable.
До этой версии, когда я хотел создать Variable
с autograd из массива numpy, я делал бы следующее (где x
- массив numpy):
x = Variable(torch.from_numpy(x).float(), requires_grad=True)
В PyTorch версии 0.4.0, руководство по миграции показывает, как мы можем создавать Tensors с включенным автоматическим обновлением, примеры показывают, что вы можете делать такие вещи, как
x = torch.ones(3, 4, requires_grad=True)
, а также установить requires_grad
для существующих тензоров
existing_tensor.requires_grad_()
Я попробовал следующие три вещи, чтобы попытаться создать Tensor с requires_grad=True
, который выдает ошибки (где x
- это пустой массив):
Первый
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
Эти ошибки дают мне небольшую подсказку о том, что я делаю неправильно, и, поскольку последняя версия настолько нова, трудно найти содержание в Интернете, чтобы помочь. Как я могу сделать FloatTensor
с requires_grad=True
из массива с использованием PyTorch 0.4.0, предпочтительно в одной строке?