“正在使用bos_token,但尚未设置”是什么意思?

you*_*ung 7 multilingual distilbert huggingface-transformers huggingface-tokenizers

当我运行 demo.py 时

\n
from transformers import AutoTokenizer, AutoModel\n    \ntokenizer = AutoTokenizer.from_pretrained("distilbert-base-multilingual-cased")\nmodel = AutoModel.from_pretrained("distilbert-base-multilingual-cased", return_dict=True)\n# print(model)\ndef count_parameters(model):\n    return sum(p.numel() for p in model.parameters() if p.requires_grad)\nprint(count_parameters(model))\ninputs = tokenizer("\xe5\x8f\xb2\xe5\xaf\x86\xe6\x96\xaf\xe5\x85\x88\xe7\x94\x9f\xe4\xb8\x8d\xe5\x9c\xa8\xef\xbc\x8c\xe4\xbb\x96\xe5\x8e\xbb\xe7\x9c\x8b\xe7\x94\xb5\xe5\xbd\xb1\xe4\xba\x86\xe3\x80\x82Mr Smith is not in. He ________ ________to the cinema", return_tensors="pt")\nprint(inputs)\noutputs = model(**inputs)\nprint(outputs)\n
Run Code Online (Sandbox Code Playgroud)\n

代码显示

\n
{'input_ids': tensor([[  101,  2759,  3417,  4332,  2431,  5600,  2080,  3031, 10064,  2196,\n      2724,  5765,  5614,  3756,  2146,  1882, 12916, 11673, 10124, 10472,\n     10106,   119, 10357,   168,   168,   168,   168,   168,   168,   168,\n       168,   168,   168,   168,   168,   168,   168,   168,   168, 10114,\n     10105, 18458,   119,   102]]), 'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])}\n
Run Code Online (Sandbox Code Playgroud)\n

使用bos_token,但尚未设置。\n使用eos_token,但尚未设置。\n为什么打印 bos_token?

\n

Jin*_*ich 2

__call__分词器的方法有一个add_special_tokens默认为 的属性True。这意味着在开头添加 BOS(句子开头)标记,在末尾添加 EOS(句子结尾)标记。如果不想使用这些符号,可以设置add_special_tokensFalse

但请注意,如果模型使用与训练时相同的标记化和特殊符号,则模型的性能最佳。从你的例子来看,在我看来你想为模型提供一对不同语言的句子。此类对通常由特殊标记分隔[SEP]。因此,您可能希望使用分词器的encode_plus方法来为您对句子对进行正确的编码。