класс набора данных pytorch __getitem__() не вызывается

#python #pytorch #tensorflow-datasets #generative-adversarial-network #torchvision

Вопрос:

У меня есть этот код, в котором я проверяю, вызывается ли метод getitem() при создании экземпляра этого класса, но похоже, что он не вызывается! (Моя программа не печатает GET!)

 class MaleFacesDataset(Dataset):

 def __init__(self, csv_file, root_dir):
    
    self.landmarks_frame = pd.read_csv(csv_file)
    self.root_dir = root_dir
    self.transform = transform

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


 def __getitem__(self, idx):

    print("GET!")

    if torch.is_tensor(idx):
        idx = idx.tolist()


    img_name = os.path.join(self.root_dir,
                            self.landmarks_frame.iloc[idx, 0])

    image = io.imread(img_name)
    sample = image

    sample = Image.fromarray(np.uint8(sample)).convert('RGB')
    sample = Image.fromarray(sample.astype('uint8'), 'RGB')

    if self.transform:
        sample = self.transform(sample)

    return sample
 

Не знаю, почему! Любая помощь будет признательна!

Комментарии:

1. __getitem__() вызывается классом Sampler. Другими словами, как только вы настроите загрузчик данных с помощью некоторого сэмплера, загрузчик данных станет повторяющейся переменной. Когда вы обращаетесь к элементу в итерационной переменной для каждого мини-пакета, __getitem__() будет вызываться количество раз, когда ваш мини-пакет установлен.

2. Ладно, думаю, теперь я все понял! Спасибо! 🙂