class CustomDataset(Dataset):
def __init__(self, img_path_list, label, train_mode=True):
self.img_path_list = img_path_list
self.label = label
self.train_mode = train_mode
def __len__(self):
return len(self.img_path_list)
def __getitem__(self, index):
image = Image.open(self.img_path_list[index]).convert('RGB')
if self.train_mode:
image = self.train_transform(image)
target = np.array(self.label[index])
target = torch.tensor(target).long()
else:
image = self.test_transform(image)
if self.label is not None:
return image, target
else:
return image
# Image Augmentation
def train_transform(self, image):
transform_ops = transforms.Compose([
transforms.ToTensor(),
transforms.Resize((224,224)),
#transforms.RandomCrop(25),
transforms.RandomHorizontalFlip(),
transforms.ColorJitter(brightness=0.4, contrast=0.4, saturation=0.4, hue=0.1),
# 일반적인 이미지에서 잘 되는 정규화 방법
transforms.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))
])
return transform_ops(image)
def test_transform(self, image):
transform_ops = transforms.Compose([
transforms.ToTensor(),
transforms.Resize((32,32)),
transforms.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))
])
return transform_ops(image)
def target_transform(self, target):
transform_ops = transforms.Compose([
transforms.ToTensor(),
])
return transform_ops(target)
이렇게 데이터셋 해놓고 모델 돌리니까 자꾸 'list' object has no attribute 'size' 오류가 나오는데 뭐가 문제일까요..
원래 파이썬 내장 list 클래스엔 size 메서드 없음
typing 좀 써라;;
len