令牌索引序列长度问题



我正在运行一个句子转换器模型,并试图截断我的令牌,但它似乎不工作。我的代码是

from transformers import AutoModel, AutoTokenizer
model_name = "sentence-transformers/paraphrase-MiniLM-L6-v2"
model = AutoModel.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

text_tokens = tokenizer(text, padding=True, truncation=True, return_tensors="pt")
text_embedding = model(**text_tokens)["pooler_output"]

我一直收到以下警告:

Token indices sequence length is longer than the specified maximum sequence length 
for this model (909 > 512). Running this sequence through the model will result in 
indexing errors

我想知道为什么设置truncation=True不截断我的文本到所需的长度?

在创建标记器时需要添加max_length参数,如下所示:

text_tokens = tokenizer(text, padding=True, max_length=512, truncation=True, return_tensors="pt")

原因:

不带max_length参数的truncation=True取的序列长度等于模型可接受的最大输入长度。

此型号为1e301000000000000000019884624838656。您可以通过打印tokenizer.model_max_length来检查。

根据Huggingface关于truncation的文档,

True或'only_first'截断到指定的最大长度Max_length参数,如果没有,则为模型接受的最大长度提供max_length (max_length=None)

相关内容

  • 没有找到相关文章

最新更新