class DataLoader(Dataset):
def __init__(self, root, image_files, labels, transform=None):
self.root = root
self.image_files = image_files
self.labels = labels
self.transform = transform
def __getitem__(self, idx):
# read the iterable image
img_pil = Image.open(os.path.join(self.root, self.image_files[idx])).convert("RGB")
if self.transform is not None:
img = self.transform(img_pil)
# label
label = self.labels[idx]
return img, label
def __len__(self):
return len(self.image_files)
__init__
: 설명
__getitem__
: 설명
__len__
: 설명
if __변수__ is not None
: 설명
커스텀 Dataset만들기
: 링크, 링크2
# Training Transformations
trainTransform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize((0.485, 0.456, 0.406),
(0.229, 0.224, 0.225))])
# Testing Transformations
testTransform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize((0.485, 0.456, 0.406),
(0.229, 0.224, 0.225))])
transforms.Normalize((0.485, 0.456, 0.406)
데이터 마다 구하는 코드 있음
class AverageMeter(object):
"""Computes and stores the average and current value"""
def __init__(self):
self.reset()
def reset(self):
self.val = 0
self.avg = 0
self.sum = 0
self.count = 0
def update(self, val, n=1):
self.val = val
self.sum += val * n
self.count += n
self.avg = self.sum / self.count
Computes and stores the average and current value
-> 이말에 주목!