你好,我正在使用 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] 吗?
是的。这意味着情绪将基于前 512 个代币,之后的任何代币都不会影响结果。
请注意,这是标记,而不是字符。如果
text
是您的原始字符串,并且假设每个标记平均为 2.5 个字符,那么截断 512 个标记将与 text[:1280]
相同。
(每个标记的字符可能会根据模型、标记生成器、语言、领域的不同而有很大差异,但主要是字符串与用于训练标记生成器的文本相比有多么不寻常。)
顺便说一下,根据https://huggingface.co/docs/transformers/pad_truncation,如果您不指定
truncation
,则不会应用截断;如果您这样做,但不指定 max_length
那么它将默认为模型支持的最大值。因此,设置 max_length
并且不更改其他任何内容不应解决此问题。 (我没有测试任何东西,也没有阅读代码,这只是基于我对文档的理解。)