728x90
제너레이터 구현과 상관없이 시계열 데이터의 학습 방법을 잘 몰라서 발생한 실수였다.
윈도우 사이즈가 10인경우
t ~ t+10, t+1 ~ t+11, t+2 ~ t+12 ... 이런식으로 데이터가 구성되고
가령,
<학습 데이터의 경우>
t ~ t+10, t+2 ~ t+12, t+5 ~ t+15, ...
<검증 데이터의 경우>
t+1 ~ t+11, t+3 ~ t+13, t+4 ~ t+14, ...
이런식으로 구성된다.
그런데 내가 구성한 방식은... 이런 시계열 순서를 무시하고 train/test를 먼저 분리한 후
t~t+10, t+1~t+11 ... 은 train으로
t+20~t+30, t+21~t+31 ... 은 test로 해서
겹치는 데이터가 없어진다. 즉 1초대 부터 10초대까지의 데이터는 3초대부터 13초대까지의 데이터와 겹치게 마련이고 그게 train/val에 나눠 들어간다.
그런데 먼저부터 1초 부터 30초 구간까지는 학습, 31초 부터 50초까지는 테스트로 두면 겹쳐지는 데이터가 없어진다. 그래서 학습이 안됐던 것이다!!!
장황하게 설명했지만 해결책은 간단했다.
나눠진 데이터 자체를 입력값으로 받는게 아닌, 전체 데이터와 나눌 인덱스를 추가적인 입력값으로 받아서 제너레이터를 구성했다. 이럴 경우 전체 데이터에서 계산하므로 겹치는 부분까지 모두 데이터에 포함될 수 있어 앞서 문제가 해결된다.
이를 활용하는 코드는 아래에 있다.
'Data-science > deep learning' 카테고리의 다른 글
[논문 읽기] UIS-RNN 설명, FULLY SUPERVISED SPEAKER DIARIZATION 설명 - 1 (4) | 2021.12.27 |
---|---|
[레이블링 툴] html, flask, python, javascript로 만드는 딥러닝 레이블링 툴 기본 (0) | 2021.12.23 |
[논문 읽기] EfficientDet: Scalable and Efficient Object Detection (0) | 2021.11.18 |
[torch] RuntimeError("{} is a zip archive 에러 해결 방법 (0) | 2021.11.08 |
배경 차이가 뚜렷한 이미지에서, cv2.connectedComponetsWithStats 활용하여 객체 분리하고 자르기 + efficientDet (0) | 2021.08.30 |