Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Huggingface错误:AttributeError:';通过Televelbeptokenizer&x27;对象没有属性';pad_token_id';_Python_Pytorch_Tokenize_Huggingface Transformers_Huggingface Tokenizers - Fatal编程技术网

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你的建议行得通!谢谢