Python Huggingface错误:AttributeError:';通过Televelbeptokenizer&x27;对象没有属性';pad_token_id';
我正在尝试使用Python Huggingface错误:AttributeError:';通过Televelbeptokenizer&x27;对象没有属性';pad_token_id';,python,pytorch,tokenize,huggingface-transformers,huggingface-tokenizers,Python,Pytorch,Tokenize,Huggingface Transformers,Huggingface Tokenizers,我正在尝试使用WordLevel/BPE标记器对一些数字字符串进行标记,创建一个数据整理器,并最终在PyTorch数据加载器中使用它从头开始训练一个新模型 然而,我得到了一个错误 AttributeError:“ByTelevelbeTokenizer”对象没有属性“pad\u token\u id” 当运行以下代码时 从transformers导入DataCollatorForLanguageModeling 从Tokenizer通过TelevelbeTokenizer导入 从tokenize
WordLevel
/BPE
标记器对一些数字字符串进行标记,创建一个数据整理器,并最终在PyTorch数据加载器中使用它从头开始训练一个新模型
然而,我得到了一个错误
AttributeError:“ByTelevelbeTokenizer”对象没有属性“pad\u token\u id”
当运行以下代码时
从transformers导入DataCollatorForLanguageModeling
从Tokenizer通过TelevelbeTokenizer导入
从tokenizers.pre_tokenizers导入空白
从torch.utils.data导入数据加载器,TensorDataset
数据=['4814 4832 4761 4523 4999 4860 4699 5024 4788']
#标记器
标记器=ByTelevelbeTokenizer()
tokenizer.pre_tokenizer=空白()
从迭代器训练(数据,语音大小=1000,最小频率=1,
特别代币=[
"",
"",
"",
"",
])
#数据整理器
data_collator=DataCollatorForLanguageModeling(
标记器=标记器,mlm=假
)
train_dataset=TensorDataset(torch.tensor(标记器(数据,…)))
#数据加载器
列车\数据加载器=数据加载器(
列车运行数据集,
collate\u fn=数据整理器
)
此错误是否由于没有为令牌发生器配置pad\u token\u id
?如果是的话,我们怎么做
谢谢
错误跟踪:
AttributeError:在DataLoader工作进程0中捕获AttributeError。
原始回溯(最近一次呼叫最后一次):
文件“/opt/anaconda3/envs/x/lib/python3.8/site packages/torch/utils/data/_-utils/worker.py”,第198行,在“worker”循环中
data=fetcher.fetch(索引)
文件“/opt/anaconda3/envs/x/lib/python3.8/site packages/torch/utils/data/_utils/fetch.py”,fetch中第47行
返回自我整理(数据)
文件“/opt/anaconda3/envs/x/lib/python3.8/site packages/transformers/data/data\u collator.py”,第351行,in\u调用__
如果self.tokenizer.pad_token_id不是None:
AttributeError:“ByTelevelbeTokenizer”对象没有属性“pad\u token\u id”
康达套餐
pytorch 1.7.0 py3.8_cuda10.2.89_cudnn7.6.5_0 pytorch
pytorch-lightning 1.2.5 pyhd8ed1ab_0 conda-forge
tokenizers 0.10.1 pypi_0 pypi
transformers 4.4.2 pypi_0 pypi
该错误告诉您标记器需要一个名为
pad\u token\u id
的属性。您可以将ByTelevelbeTokenizer
包装到具有这样一个属性的类中(…并且遇到了其他丢失的属性),或者使用transformers库中的包装类:
从变压器导入PreTrainedTokenizerFast
#你的代码
标记器。保存(某处)
标记器=PreTrainedTokenizerFast(标记器\u文件=tokenizer\u路径)
这是一个可重复的示例吗?我这样问是因为标记器(数据,…)
抛出错误。我想你需要做的就是:tokenizer.save(某处)
,从transformers导入PreTrainedTokenizerFast
,tokenizer=PreTrainedTokenizerFast(tokenizer\u file=tokenizer\u path)
@crooik你的建议行得通!谢谢