HuggingFace中如何获取Transformer模型的最大输入序列长度?
获取HuggingFace Transformer模型最大输入序列长度的方法
先把你遇到的报错翻译成中文:
报错翻译:"要求填充至最大长度,但未提供最大长度,且模型无预定义最大长度。默认不进行填充。"
下面是几种确定max_length取值的实用方法:
直接调用tokenizer的内置属性
绝大多数预训练模型的tokenizer都自带model_max_length属性,这就是模型预训练时用的最大序列长度,直接拿来用就行:max_len = tokenizer.model_max_length tokenizer(examples["text"], padding="max_length", truncation=True, max_length=max_len)比如BERT的这个值是512,GPT-2是1024,完全符合模型的输入要求。
从模型配置文件里找
如果tokenizer没这个属性,就加载模型的配置文件,里面的max_position_embeddings字段就是模型支持的最大输入长度:from transformers import AutoConfig config = AutoConfig.from_pretrained("你的模型名称") max_len = config.max_position_embeddings手动指定(针对无预定义长度的模型)
要是碰到一些没有预定义最大长度的模型(比如自定义小模型),可以根据任务需求自己设个合理值,比如256、512;或者先统计数据集里所有文本的token长度,取最大值再加些余量:# 统计数据集文本的最长token数 max_len = max(len(tokenizer.encode(text)) for text in examples["text"]) # 加10个token的余量防止溢出 max_len += 10 tokenizer(examples["text"], padding="max_length", truncation=True, max_length=max_len)
内容的提问来源于stack exchange,提问作者JobHunter69
相关产品推荐
相关产品推荐

