在变压器管道中使用参数 - max_length、截断和填充会影响输出吗?

问题描述 投票:0回答:1

你好,我正在使用 Transformer 预训练模型检查文本的情绪,但这样做给了我错误

RuntimeError: The size of tensor a (1954) must match the size of tensor b (512) at non-singleton dimension 1

我浏览了几篇文章,建议将

max_length
设置为 512 可以对错误进行排序。 它确实解决了错误,但我想知道它如何影响输出质量。它会截断我的文本吗?例如,如果我的文本长度是 1195,它会处理到 512,例如 text[:512] 吗?

python nlp huggingface-transformers sentiment-analysis
1个回答
0
投票

是的。这意味着情绪将基于前 512 个代币,之后的任何代币都不会影响结果。

请注意,这是标记,而不是字符。如果

text
是您的原始字符串,并且假设每个标记平均为 2.5 个字符,那么截断 512 个标记将与
text[:1280]
相同。

(每个标记的字符可能会根据模型、标记生成器、语言、领域的不同而有很大差异,但主要是字符串与用于训练标记生成器的文本相比有多么不寻常。)

顺便说一下,根据https://huggingface.co/docs/transformers/pad_truncation,如果您不指定

truncation
,则不会应用截断;如果您这样做,但不指定
max_length
那么它将默认为模型支持的最大值。因此,设置
max_length
并且不更改其他任何内容不应解决此问题。 (我没有测试任何东西,也没有阅读代码,这只是基于我对文档的理解。)

© www.soinside.com 2019 - 2024. All rights reserved.