728x90
반응형
1. Dataloader shuffle=False일 때,
dataset = torchvision.datasets.ImageFolder(<folder_path>, transforms=<transforms>)
dataloader = torch.utils.data.DataLoader(dataset, batch_size=<batch_size>, shuffle=False)
# 이미 기존 DataLoader에서 shuffle을 사용하지 않을 경우, "dataloader.dataset.samples"안에
# (파일경로, 라벨) 튜플로 이루어진 list형태로 저장되어 있다.
allFiles, _ = map(list, zip(*dataloader.dataset.samples))
for i, (inputs, labels) in enumerate(dataloader):
inputs = inputs.to(device)
labels = labels.to(device)
for j in range(inputs.size()[0]):
print("현재 파일에 대한 파일경로")
print(allFiles[ i * <batch_size> + j ])
2. Dataloader shuffle=True일 때,
# 별도의 Dataset을 기존 ImageFolder dataset과 동일한 역할을 수행하도록 만들어준다.
class CustomDataset(torch.utils.data.Dataset):
def __init__(self, root_dir, transforms=None):
self.root_dir = root_dir
self.classes = os.listdir(self.root_dir)
self.transforms = transforms
self.data = []
self.labels = []
for idx, cls in enumerate(self.classes):
cls_dir = os.path.join(self.root_dir, cls)
for img in glob(os.path.join(cls_dir, '*.jpg')):
self.data.append(img)
self.labels.append(idx)
def __getitem__(self, idx):
img_path, label = self.data[idx], self.labels[idx]
img = PIL.Image.open(img_path)
if self.transforms:
img = self.transforms(img)
sample = {'image':img, 'label':label, 'filename':img_path}
return sample
def __len__(self):
return len(self.data)
custom_dataset = CustomDataset(root_dir=<folder_path>, transforms=<transforms>)
dataloader = torch.utils.data.DataLoader(custom_dataset, batch_size=<batch_size>,shuffle = True)
for i, (sample) in enumerate(dataloader):
inputs = sample['image'].to(device)
labels = sample['label'].to(device)
names = sample['filename']
for j in range(inputs.size()[0]):
print(names[j])
출처, 도움 주신 블로그 : https://hayunjong83.tistory.com/46
728x90
반응형
'머신러닝 > Pytorch 딥러닝 기초' 카테고리의 다른 글
[Tensor] Tensor value index / Tensor에서 특정 값에 대응되는 index 번호 반환하기 (0) | 2023.05.18 |
---|---|
LR scheduler 추천 : Cosine Annealing Warmup Restarts (0) | 2023.03.31 |
[python, pytorch] dataloader 시간 지연, time delay (0) | 2021.09.13 |
[Pytorch-기초강의] 9. 주어진 환경과 상호작용하며 성장하는 DQN (2) | 2021.06.18 |
[Pytorch-기초강의] 8. 경쟁하며 학습하는 GAN (3) | 2021.06.13 |