Data Feeding
Data Feeding
모델 개발 전 데이터를 다루는 방법과 팁에 대하여 알아보자.
- Feed : 먹이를 주다, 모델에 먹이(Data)를 주다?
- 대상의 상태를 고려해서 적정한 양을 준다.
EDA (Exploratory Data Analysis)
- 데이터를 처리하기 전 데이터를 탐색하는 단계
- 탐색적 데이터 분석
- 데이터를 이해하기 위한 노력
- 데이터를 이해함으로써 앞으로의 모델링, 훈련 등에 큰 밑거름이 된다
EDA의 목적
- 데이터를 이해하기 위한 여러가지 방법 중에 궁금한 것을 알아보는 과정이다.(무엇이든 간에)
- 데이터를 처음 봤을때 의문점등 다양한 질문들에 대한 답을 찾아 나가는것.
- 도구는 도구일 뿐 위의 목적을 잊어버리지 말자.
Data Set
데이터 셋을 어떻게 활용하면 훈련에 잘 적용 할 수 있을까?
- 주어진 데이터를 모델이 좋아하는 데이터 셋으로 만들자. -> 이해하기 어려운 데이터를 이해하기 쉬운 형태로 바꾸어 주자.
Pre-processing
학습 전 데이터를 좀 더 이해하기쉽고, 훈련에 적합한 데이터로 만들기 위한 과정
- ex) null값을 평균치로 적용하는것, 이상치를 제외하고 훈련등등
Resize
계산의 효율성을 위해 적절한 사이즈로 변경
Generalization 일반화
Bias & Variance
- 학습이 너무 안 됐거나, 학습이 너무 됐거나를 확인 할 수 있다.
Train / Validation
- 훈련 셋 중 일정 부분을 따로 분리, 검증 셋으로 활용
- 학습을 했을 때 검증을 할 수 있는 방법이 없음 -> 학습이 되지않은 데이터로 검증을 해봐야댐 -> 검증 셋 필요 -> 학습전 학습셋 중 학습셋과 검증셋을 나눠 뽑아 사용한다.
Data Augmentation
- 위의 사진에서 맨왼쪽이 원본이고, 어둡게하고, 비오는 환경을 만들었다.
- 주어진 데이터가 가질 수 있는 경우, 상태의 다양성
- 원본 데이터를 조작함으로써 데이터의 정보량을 늘려 다양한 데이터를 학습한 효과를 누릴 수 있다.
- torchvision.transforms을 사용하여 손쉽게 augmentation적용가능하다.
- torchvision.transforms
- transforms이외에도 Albumentations을 이용하여 다양하고 빠르게 적용가능.
- Albumentations
Data Generation
Generator 와 Model의 관계
- 위 그림에서 첫번째 그림은 Generator가 초당 10개의 배치를 생산하고, Model이 초당 20배치를 처리하게 되면 결국엔 최대 초당 10개의 배치만 처리가능하다.
- 아래 그림에서 첫번째 그림은 초당 30배치의 생산, 초당 20배치의 처리량 -> 최대 20배치를 처리할 수 있다.
- 이 내용을 통해서 모델의 처리량 만큼 데이터 generator의 생산량을 고려해야한다.
torch.utils.data
파이토치를 통해 Dataset과 DataLoader을 사용해보고 어떻게 만들어나가는지, 어떻게 튜닝 해야하는지에 대하여 알아보자.
Datasets
torch.utils.data
의 Dataset 라이브러리를 상속한다.(Dataset 클래스의 기능들을 사용하기 위해)__init__
-> 클래스가 처음 선언 되었을 때 호출__getitem__
-> 데이터 중 index 위치의 아이템을 리턴__len__
-> MyDatast의 아이템의 전체 길이
DataLoader
- Dataset을 효율적으로 사용할 수 있도록 관련 기능을 추가한다.
- Batch 사이즈 설정, Channel, Shuffle할지 안할지, 배치사이즈에 맞지 않으면 버릴지 않버릴지(drop_last)등을 통해 많은 기능들이 있으며 데이터를 모델에 올릴때 적절하게 커스텀 가능하다.
- collate_fn : 배치마다 함수를 다르게 적용하고싶다, 취합해서 적용하고 싶다.
Dataset VS DataLoader
- Dataset -> 데이터를 원하는 형태로 출력해준다.
- DataLoader -> Dataset을 조금 더 효율적으로 사용하기 위한 클래스.
- 데이터 로더를 하나 잘 만들어 놓으면 다른 데이터 셋에도 적용할 수 있다.(데이터 로더는 한개 셋은 새롭게)
Comments