데브허브 | DEVHUB | 고수들의 데이터 전처리 방식
- 딥러닝 데이터 전처리, 특히 대규모 데이터셋에서 EDA는 비효율적이며, 파일 경로만으로도 로딩이 느려질 수 있습니다. 🐌
- Generator는 리스트와 달리 모든 데이터를 미리 메모리에 로드하지 않고, 요청 시점에 하나씩 생성하여 반환합니다. 🚀
- 이는 대규모 데이터셋의 초기 파악이나 일부 데이터 샘플링 시 리스트 방식보다 훨씬 빠르고 효율적입니다. ⚡
glob.glob()이 전체 파일 경로를 리스트로 반환하여 느린 반면, pathlib.Path.rglob()은 Generator를 반환하여 즉시 실행되고 필요한 만큼만 데이터를 읽습니다. 📂
- Generator에서 일부 데이터만 보려면
enumerate와 break를 사용하거나, next() 함수로 단 하나의 샘플을 효율적으로 가져올 수 있습니다. 🔍
- Generator의 핵심 개념은 'Lazy Evaluation(지연 평가)'으로, 데이터를 미리 전부 읽지 않고 필요할 때만 계산하여 제공하는 방식입니다. 💡
- Python의
map, filter 함수와 PyTorch의 DataLoader도 Generator처럼 동작하여 대규모 데이터 처리에 유용합니다. 🧠
- Generator를 활용하면 대규모 데이터셋 파악 및 데이터 파이프라인 설계가 훨씬 가볍고 유연해져, 효율적인 딥러닝 학습 및 분석이 가능합니다. ✨
- Generator를 통한 설계 연습은 데이터 처리의 '고수'가 되는 길이며, 전문성을 높여줍니다. 🎓