Тензор факела и конфликт ввода: объект тензора не может быть вызван

Из-за кода torch.tensor я получаю сообщение об ошибке Tensor object is not callable при добавлении ввода. Кто-нибудь знает, как я могу это исправить?

import torch
from torch.nn import functional as F
from transformers import GPT2Tokenizer, GPT2LMHeadModel


tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2LMHeadModel.from_pretrained('gpt2')

text0 = "In order to"
text = tokenizer.encode("In order to")
input, past = torch.tensor([text]), None


logits, past = model(input, past = past)
logits = logits[0,-1]
probabilities = torch.nn.functional.softmax(logits)
best_logits, best_indices = logits.topk(5)
best_words = [tokenizer.decode([idx.item()]) for idx in best_indices]
text.append(best_indices[0].item())
best_probabilities = probabilities[best_indices].tolist()

for i in range(5):
    f = ('Generated {}: {}'.format(i, best_words[i]))
    print(f)


option = input("Pick a Option:")
z = text0.append(option)
print(z)

Трассировка стека ошибок:

TypeError                                 Traceback (most recent call last)

<ipython-input-2-82e8d88e81c1> in <module>()
     25 
     26 
---> 27 option = input("Pick a Option:")
     28 z = text0.append(option)
     29 print(z)

TypeError: 'Tensor' object is not callable

person Johnny    schedule 27.08.2020    source источник


Ответы (1)


Проблема в том, что вы уже определили переменную с именем input, которая будет использоваться вместо функции input. Просто используйте другое имя для вашей переменной, и она будет работать, как и ожидалось.

Также строка Python не имеет метода добавления.

import torch
from torch.nn import functional as F
from transformers import GPT2Tokenizer, GPT2LMHeadModel


tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2LMHeadModel.from_pretrained('gpt2')

text0 = "In order to"
text = tokenizer.encode("In order to")
myinput, past = torch.tensor([text]), None


logits, past = model(myinput, past = past)
logits = logits[0,-1]
probabilities = torch.nn.functional.softmax(logits)
best_logits, best_indices = logits.topk(5)
best_words = [tokenizer.decode([idx.item()]) for idx in best_indices]
text.append(best_indices[0].item())
best_probabilities = probabilities[best_indices].tolist()

for i in range(5):
    f = ('Generated {}: {}'.format(i, best_words[i]))
    print(f)


option = input("Pick a Option:")
z = text0 + ' ' + option
print(z)
person cronoik    schedule 27.08.2020
comment
Большое спасибо. Это работает отлично. Если вы не могли сказать, я явно новичок в кодировании. - person Johnny; 27.08.2020