Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AttributeError: 'list' object has no attribute 'size' Hugging-Face transformers

I am trying to use Huggingface to transform stuff from English to Hindi. This is the code snippet

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-en-hi")

model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-en-hi")
text = "Hello my friends! How are you doing today?"
tokenized_text = tokenizer.prepare_seq2seq_batch([text])

# Perform translation and decode the output
translation = model.generate(**tokenized_text)
translated_text = tokenizer.batch_decode(translation, skip_special_tokens=True)[0]

# Print translated text
print(translated_text)

I am getting this error while trying to call the method generate on 'model'.

AttributeError: 'list' object has no attribute 'size'.

I am running on transformer version 4.3.3.

like image 910
Nidutt Avatar asked Aug 28 '26 14:08

Nidutt


1 Answers

The model requires pytorch tensors and not a python list. Simply add return_tensors='pt' to prepare_seq2seq:

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-en-hi")

model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-en-hi")
text = "Hello my friends! How are you doing today?"
tokenized_text = tokenizer.prepare_seq2seq_batch([text], return_tensors='pt')

# Perform translation and decode the output
translation = model.generate(**tokenized_text)
translated_text = tokenizer.batch_decode(translation, skip_special_tokens=True)[0]

# Print translated text
print(translated_text)

Output:

आप आज कैसे कर रहे हैं?
like image 89
cronoik Avatar answered Aug 30 '26 21:08

cronoik