폴더 구조를 클래스 이름으로 사용해
keras.utils.image_dataset_from_directory는 디스크의 이미지 파일을 배치된 학습 데이터셋으로 바꾸는 표준 진입점이야. 클래스마다 하위 폴더를 하나 만들고 그 안에 이미지를 넣으면, 부모 폴더를 지정하는 한 번의 호출로 클래스 이름 추론, 이미지 읽기, 일정한 image_size로 크기 변경, 배치 구성, 섞기까지 처리해. 별도의 레이블 배열이나 파일 검색 반복문이 필요 없어.
분할할 때는 같은 seed를 사용해
validation_split, subset, seed를 조합하면 같은 폴더에서 학습과 검증 자료를 나눌 수 있어. 함수는 두 번 호출해야 해. 한 번은 subset="training", 다른 한 번은 subset="validation"으로 두고 두 호출에 같은 seed를 전달해. 그래야 두 분할이 겹치지 않고 일관되게 유지돼. label_mode="categorical"은 원-핫 표적과 categorical_crossentropy에, "int"는 정수 레이블과 sparse_categorical_crossentropy에 맞아.
읽기 병목 줄이기
에포크마다 디스크에서 다시 읽고 디코딩하면 느려. .cache()는 첫 통과 뒤의 이미지를 보관하고, .prefetch(tf.data.AUTOTUNE)는 GPU가 현재 배치를 처리하는 동안 CPU가 다음 배치를 준비하게 해. 둘을 함께 쓰면 에포크 시간이 절반 이하로 줄기도 해. 순서도 중요해. 캐시는 무작위 증강보다 앞에 두어 원본을 저장하고 증강은 매 에포크 달라지게 하며, 미리 가져오기는 맨 끝에 둬.