#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. Ладно, думаю, теперь я все понял! Спасибо! 🙂