① ImageFolder에서 사용하는 파라미터는 5장에서 살펴보았습니다. 따라서 여기에서는 ImageFolder의 파라미터가 아닌 언제 사용하면 좋을지에 대해 설명합니다. ImageFolder는 계층적인 폴더 구조를 가지고 있는 데이터셋을 불러올 때 사용합니다. 예를 들어 훈련 데이터셋이 위치한 ‘../chap06/data/catanddog/train’에는 다음과 같은 폴더들이 있습니다.
▲ 그림 6-16 ‘../chap06/data/catanddog/train’ 위치의 하위 폴더
이와 같이 train 폴더 하위에 Cat, Dog 폴더가 계층적으로 위치해 있고 이러한 구조에서 데이터셋을 불러오고 싶을 때 ImageFolder를 사용합니다.
다음은 훈련과 테스트 데이터로 사용될 이미지 수입니다. 훈련 용도의 데이터는 529개가 사용되며, 테스트 용도의 데이터는 12개가 사용됩니다.
529 12 (None, None)
훈련 데이터를 훈련과 검증 데이터로 분할합니다.
코드 6-49 훈련과 검증 데이터 분할
VALID_RATIO = 0.9
n_train_examples = int(len(train_dataset) * VALID_RATIO) ------ 전체 훈련 데이터 중 90%를 훈련 데이터셋으로 사용
n_valid_examples = len(train_dataset) - n_train_examples ------ 전체 훈련 데이터 중 10%를 검증 데이터셋으로 사용
train_data, valid_data = data.random_split(train_dataset, [n_train_examples, n_valid_examples]) ------ ①