1. embedding 层 index out of range in self
原因: 一般是因为模型的vocab_size与提供的vocab.txt文件的词大小不一致。
检查方法:
可通过以下方法,查看tensor的最大最小值
# print('token_ids', token_ids.max(), token_ids.min()) # (已转变为张量后)
# print('attention_masks', attention_masks.max(), attention_masks.min()) # (已转变为张量后)
# print('token_type_ids', token_type_ids.max(), token_type_ids.min()) # (已转变为张量后)
# print('labels', labels.max(), labels.min()) # (已转变为张量后)
2 Dataloader
File "D:\python\lib\site-packages\torch\utils\data\_utils\collate.py", line 55, in default_collate
return torch.stack(batch, 0, out=out)
RuntimeError: stack expects each tensor to be equal size, but got [2] at entry 0 and [1] at entry 1
原因是text 在tokenizer.encod()之后没有用max_length限制长度。但是input_ids的长短不一样。
class MyDataset(Dataset):
def __init__(self, texts, tokenizer, max_length):
self.texts = texts
self.tokenizer = tokenizer
self.max_length = max_length
def __len__(self):
return len(self.texts)
def __getitem__(self, index): # 这里没有max_length限制
text = self.texts[index]
input_ids = self.tokenizer.encode(text)
input_ids = input_ids[:self.max_length]。# 此处需要基于max_length进行强制截取
3. ImportError: /usr/lib/aarch64-linux-gnu/libgomp.so.1: cannot allocate memory in static TLS block
export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1:$LD_PRELOAD