將數(shù)據(jù)格式化為PyTorch數(shù)據(jù)集對象,以便微調(diào)BERT

我正在使用來自數(shù)據(jù)科學(xué)的fine-tuning一個伯特模型的現(xiàn)有代碼。我面臨的問題屬于代碼的這一部分,它試圖將我們的數(shù)據(jù)格式化為PyTorchdata.Dataset對象:

class MeditationsDataset(torch.utils.data.Dataset):
    def _init_(self, encodings, *args, **kwargs):
        self.encodings = encodings
    def _getitem_(self, idx):
        return {key: torch.tensor(val[idx]) for key, val in self.encodings.items()}
    def _len_(self):
        return len(self.encodings.input_ids)


dataset = MeditationsDataset(inputs)

運行代碼時,我會遇到以下錯誤:

TypeError                                 Traceback (most recent call last)
<ipython-input-144-41fc3213bc25> in <module>()
----> 1 dataset = MeditationsDataset(inputs)

/usr/lib/python3.7/typing.py in __new__(cls, *args, **kwds)
    819             obj = super().__new__(cls)
    820         else:
--> 821             obj = super().__new__(cls, *args, **kwds)
    822         return obj
    823 

TypeError: object.__new__() takes exactly one argument (the type to instantiate)

我已經(jīng)搜索了這個錯誤,但這里的問題是,遺憾的是,我對PyTorch或OOP都不熟悉,所以我無法修復(fù)這個問題。你能告訴我應(yīng)該從這個代碼中添加或刪除什么以便運行它嗎?提前非常感謝。

如果需要,我們的數(shù)據(jù)如下:

{'input_ids': tensor([[   2, 1021, 1005,  ...,    0,    0,    0],
                      [   2, 1021, 1005,  ...,    0,    0,    0],
                      [   2, 1021, 1005,  ...,    0,    0,    0],
                      ...,
                      [   2, 1021, 1005,  ...,    0,    0,    0],
                      [   2,  103, 1005,  ...,    0,    0,    0],
                      [   2,    4,    0,  ...,    0,    0,    0]]), 
 'token_type_ids': tensor([[0, 0, 0,  ..., 0, 0, 0],
                           [0, 0, 0,  ..., 0, 0, 0],
                           [0, 0, 0,  ..., 0, 0, 0],
                           ...,
                           [0, 0, 0,  ..., 0, 0, 0],
                           [0, 0, 0,  ..., 0, 0, 0],
                           [0, 0, 0,  ..., 0, 0, 0]]), 
 'attention_mask': tensor([[1, 1, 1,  ..., 0, 0, 0],
                           [1, 1, 1,  ..., 0, 0, 0],
                           [1, 1, 1,  ..., 0, 0, 0],
                           ...,
                           [1, 1, 1,  ..., 0, 0, 0],
                           [1, 1, 1,  ..., 0, 0, 0],
                           [1, 1, 0,  ..., 0, 0, 0]]), 
 'labels': tensor([[   2, 1021, 1005,  ...,    0,    0,    0],
                   [   2, 1021, 1005,  ...,    0,    0,    0],
                   [   2, 1021, 1005,  ...,    0,    0,    0],
                   ...,
                   [   2, 1021, 1005,  ...,    0,    0,    0],
                   [   2, 1021, 1005,  ...,    0,    0,    0],
                   [   2,    4,    0,  ...,    0,    0,    0]])}
? 最佳回答:

Python中的特殊函數(shù)使用雙下劃線前綴和后綴。在您的情況下,要實現(xiàn)data.Dataset,必須有__init____getitem____len__

class MeditationsDataset(torch.utils.data.Dataset):
    def __init__(self, encodings, *args, **kwargs):
        self.encodings = encodings
    def __getitem__(self, idx):
        return {key: torch.tensor(val[idx]) for key, val in self.encodings.items()}
    def __len__(self):
        return len(self.encodings.input_ids)
主站蜘蛛池模板: 久久人妻内射无码一区三区| 丝袜美腿一区二区三区| 国产一区二区电影在线观看| 亚洲天堂一区二区三区| 国产激情一区二区三区 | 日韩美一区二区三区| 国产精品制服丝袜一区| 国产在线视频一区| 性色AV 一区二区三区| 91精品国产一区| 久久福利一区二区| 国产综合精品一区二区三区| 精品久久综合一区二区| 国产怡春院无码一区二区 | 久久精品无码一区二区WWW| 中日韩一区二区三区| 国产精品 视频一区 二区三区 | 亚洲一区二区三区免费| 午夜一区二区在线观看| 日韩精品一区二区三区中文3d| 亚洲乱码一区二区三区国产精品| 无码av免费一区二区三区| 国产综合一区二区| 亚洲一区二区三区香蕉| 寂寞一区在线观看| 美女视频在线一区二区三区| 国产亚洲3p无码一区二区| 国产一区二区精品久久| 亚洲欧洲一区二区| 午夜性色一区二区三区免费不卡视频| 久久久久人妻精品一区二区三区| 亚洲福利视频一区| 国产精品福利一区二区久久| 日韩最新视频一区二区三| 国精产品一区一区三区MBA下载 | 日韩精品一区二区午夜成人版 | 国产福利一区二区精品秒拍| 日本一区二区三区在线观看视频| 韩国一区二区三区| 国产精品一区二区久久精品无码| 中文字幕永久一区二区三区在线观看 |