Loading

DataLoader 每次迭代返回BatchEncoding还是dict类型依pytorch的版本而定

发现 DataLoader 在不同的 pytorch 版本上,执行 dataset 的__item__ 会返回不同的效果。

pytorch 在1.12.1 上,每一次迭代会返回BatchEncoding这个类型(可能会比这个版本低也返回)

class MyDataSet(Dataset):
#1.12.1 版本
    def __init__(self, path):
        self.text_list = []
        self.label_list = []
        self.tokenizer = BertTokenizer.from_pretrained(bert_path)
        pass


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

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

而在老旧的1.8 版本中,会返回为一个dict对象。这是我在不同平台上我唯一能发现的不同的地方--pytorch的版本号。

这个BatchEncoding 是 HuggingFace 的东西,是一个dict的子类,但是它可以直接被送入cuda加速,而dict不能。那么为了兼容老旧的平台,把它当做一个dict来用,取出它的值再送入cuda中。做开发嘛,遇到不兼容的问题会很常见。

posted @ 2022-11-11 15:00  翙翙其羽  阅读(295)  评论(0)    收藏  举报