属性错误:'list'对象没有'size'属性。Hugging-Face transformers。

5

我正在尝试使用Huggingface将英文转换为印地语。以下是代码片段:

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)

在调用'model'的generate方法时,我遇到了以下错误:

属性错误:'list'对象没有'size'属性。

我正在运行transformer版本4.3.3。

1个回答

15

这个模型需要使用pytorch张量而不是Python列表。只需在prepare_seq2seq函数中添加return_tensors='pt'即可:

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)

输出:

आप आज कैसे कर रहे हैं?

谢谢你的解决方案,我遇到了同样的问题并尝试了你的解决方案,但是出现了另一个错误:'RuntimeError: 张量a的大小(522)必须与张量b的大小(512)在非单例维度1上匹配'。 - user
请你开一个单独的问题,并提供一个可重现的例子吗?你的模型只能处理最多512个标记,但你提供的文本有522个标记。因此,你需要将输入分割或截断(根据你的任务而定),使其保持在512个标记以内。 - cronoik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接