Transformers使用bert模型预留的[unused*]时遇到的问题:torch.embedding IndexError: index out of range in self

先报错了CUDA error: device-side assert triggered
然后模型放到cpu里查看具体原因,报错了:
torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
IndexError: index out of range in self

最后发现是因为改了bert预留的[unused*]导致的问题:
tokenizer = BertTokenizer.from_pretrained(pretrain_model_path,additional_special_tokens=added_token)
added_token是需要加入的所有token的list
参考

在改了这个之后,需要在模型里resize_token_embeddings

added_token=['##char##']
tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese",additional_special_tokens=added_token)
model.resize_token_embeddings(len(tokenizer))

然后就不报错了

你可能感兴趣的:(NLP,Transformers,embedding)