【pytorch】一个DataSet问题的解决

最近使用Hugging Face的BERT模型,遇到了数据加载上的一个问题。

“Unable to create tensor, you should probably activate truncation and/or padding with ‘padding=True’ ‘truncation=True’ to have batched tensors with the same length.”

是在DataLoader中声明的DataSet参数

    train_data_loader = DataLoader(dataset=train_data, batch_size=16, shuffle=True)

这是DataSet的定义


class MyDataSet(Dataset):
 def __init__(self, path):
     self.text_list = []
     self.label_list = []
     self.tokenizer = BertTokenizer.from_pretrained(path)
     with open(path, 'r',encoding='utf-8') as f:
         text, label = f.readline().split('\t')
         label=torch.tensor([ int(label.strip())])
         tokenizer =self.tokenizer(text, padding='max_length',return_token_type_ids=True, return_attention_mask=True,max_length=128, truncation=True, return_tensors='pt')
         self.text_list.append(tokenizer)
         self.label_list.append(label)

 def __getitem__(self, item):
     return self.text_list[item], self.label_list[item]

 def __len__(self):
     return len(self.text_list)

很诧异,到底哪里错了。网上的资料也都语焉不详。
直到我发现把BERT的路径搞错了。

        self.tokenizer = BertTokenizer.from_pretrained(path)

改为

        self.tokenizer = BertTokenizer.from_pretrained(bert_path)
        #这里的bert_path是我电脑上定义的路径,path是要加载的数据的路径。

希望这个报错信息能带给你一些启发。

你可能感兴趣的:(pytorch,深度学习,python)