You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HuggingFace Transformers替换pad_to_max_length参数报错解决

问题根因

你对官方警告的说明确实存在理解偏差:旧版本的pad_to_max_length=True参数会同时触发两个逻辑:

  • 将短于指定max_length的序列填充到max_length长度
  • 将长于max_length的序列截断到max_length长度
    新版本API把填充和截断拆成了两个独立参数,仅替换成padding='max_length'只会开启填充逻辑,不会自动截断超长文本,所以才会出现部分序列长度超过你设置的60(比如报错里的长度64),最终批量堆叠张量时触发长度不一致的错误。
正确修改方案

移除废弃的pad_to_max_length参数,补上truncation=True即可,修改后代码和旧版本行为完全一致:

encoding = self.tokenizer.encode_plus(
    poem,
    add_special_tokens=True,
    max_length=60,
    return_token_type_ids=False,
    padding='max_length',
    truncation=True,
    return_attention_mask=True,
    return_tensors='pt',
)
新旧参数对应参考

几个常用场景的参数写法可以参考:

  • 固定长度填充/截断(和原pad_to_max_length=True行为一致):传padding='max_length' + truncation=True,可搭配自定义max_length参数指定长度,不传max_length则默认用模型支持的最大输入长度(比如BERT为512)
  • 按batch动态填充:传padding=True(等价于padding='longest'),会把当前batch内所有序列填充到本batch最长序列的长度,一般也建议搭配truncation=True避免超长文本超出模型输入上限
  • 仅截断不填充:传truncation=True,padding=False即可

内容的提问来源于stack exchange,提问作者Peyman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 22:51:17