AttributeError: объект torch.FloatTensor не имеет атрибута item - PullRequest
0 голосов
/ 29 апреля 2018

Вот коды:

    from __future__ import print_function
    from itertools import count

    import torch 
    import torch.autograd
    import torch.nn.functional as F

    POLY_DEGREE = 4
    W_target = torch.randn(POLY_DEGREE, 1) * 5
    b_target = torch.randn(1) * 5


    def make_features(x):
        x = x.unsqueeze(1)
        return torch.cat([x ** i for i in range(1, POLY_DEGREE+1)], 1)


    def f(x):
        return x.mm(W_target) + b_target.item()

Это привело к следующему сообщению об ошибке:

AttributeError: 'torch.FloatTensor' object has no attribute 'item'

Как я могу решить эту проблему, пожалуйста?

1 Ответ

0 голосов
/ 30 апреля 2018

Функция item() является новой от PyTorch 0.4.0. При использовании более ранних версий PyTorch вы получите эту ошибку. Таким образом, вы можете обновить версию PyTorch до вашей, чтобы решить эту проблему.

Edit:

Я снова прошел через твой пример. Что вы хотите архив с item()? В вашем случае item() должен просто дать вам значение (python) в тензоре. Почему вы хотите использовать это? Вы можете просто пропустить item().

Итак:

def f(x):
    return x.mm(W_target) + b_target

вместо:

def f(x):
    return x.mm(W_target) + b_target.item()

Это должно работать для вас, в PyTorch 0.4.0 нет разницы. Также эффективнее не указывать item().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...