TypeError: объект 'tuple' нельзя интерпретировать как целое число при создании генераторов данных PyTorch - PullRequest
1 голос
/ 12 февраля 2020

Я новичок в PyTorch и учусь создавать пакеты данных для сегментации. Код показан ниже:

class NumbersDataset(Dataset):
    def __init__(self):
        self.X = list(df['input_img'])
        self.y = list(df['mask_img'])

    def __len__(self):
        return len(self.X), len(self.y)

    def __getitem__(self, idx):
        return self.X[idx], self.y[idx]


if __name__ == '__main__':
    dataset = NumbersDataset()
    dataloader = DataLoader(dataset, batch_size=50, shuffle=True, num_workers=2)
    # print(len(dataset))
    # plt.imshow(dataset[100])
    # plt.show()
    print(next(iter(dataloader)))

, где df['input_img'] столбец содержит местоположение изображения ('/path/to/pic/480p/boxing-fisheye/00010.jpg'), а df['mask_img'] содержит местоположение всех изображений маски. Я пытаюсь загрузить изображения, но получаю сообщение об ошибке:

TypeError: объект 'tuple' не может быть интерпретирован как целое число

Однако, если я этого не сделаю используйте DataLoader и просто сделайте следующее:

     dataset = NumbersDataset()
     print(len(dataset))
     print(dataset[10:20])

тогда я получу то, что ожидаю. Может кто-нибудь сказать мне, что я делаю не так?

1 Ответ

2 голосов
/ 12 февраля 2020

Вы не можете вернуть tuple для метода __len__. Ожидаемый тип: int

# perhaps you can add the list length's for the total length
# but no matter how you choose to implement the method you can
# only return on value of type integer `int`
def __len__(self):
    return len(self.X) + len(self.y)
...