天天看点

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))
           

然后就不报错了

继续阅读