소스코드는 여기서 확인가능(macOS에서 동작확인함)
convolution 자체에 대한 좋은 튜토리얼은 여기
일반적인 CNN에 대해서 좋은 튜토리얼 여기(1D CNN포함)
CNN기초
1D CNN
A 1D CNN is very effective when you expect to derive interesting features from shorter (fixed-length) segments of the overall data set and where the location of the feature within the segment is not of high relevance.
짧은 구간에 대해서 흥미로운 패턴을 인식하고 싶고, location에 상관없을 때 좋다고 한다. 2D이미지로 따지자면 고양이가 이미지 상에서 어느 location에 있던지 상관없어야 하니 맞는말인듯 하다. 주식에 대입해보면 어떨까? 아쉽게도 주식은 trend 및 seasonality가 존재하기 때문에 location에 영향을 받는다고 해야할 것 같다. 상승 패턴이라고 하더라도 방금전에 나온것과 한달전에 나온것은 다르기 때문이다.
여기 개념 잘 봐두자.
[첫번째 conv layer]
센서x,y,z를 width로 둔다 따라서 값은 3
feature detector 또는 필터의 경우 가로3, 세로 10의 사이즈를 가진다.
이 필터를 아래쪽으로 height만큼 슬라이딩 한다. (80-10+1 = 71)
필터 하나당 숫자 하나가 나와서 결과적으로 71개의 숫자가 나오고 필터 개수가 100개면 71x100개의 아웃풋이 나온다.
(위의 그림의 경우 height라고 표시하고 개념은 커널사이즈인걸로 보여서 헷갈린다. 문서 뒷부분에 보면 height랑 kernel size를 같은거라고 또 적어놨다 -_-)
아래그림에서 height는 인풋에 들어가는 개수라고 설명되어 있다. 최근 80개의 센서값이 네트웍 인풋으로 들어간다는 듯
[두번째 conv layer]
비슷한 작업을 한차례 더한다. (71-10+1 = 62)
해서 62 x 100 사이즈의 아웃풋이 나온다.
[pooling]
3개당 하나씩 풀링해서 62x100을 20x100으로 만든다 (왜 21이 아니고 20일까?)
그 이후는 트리비얼 한듯
'AI, ML > ML' 카테고리의 다른 글
Word2Vec (0) | 2019.04.24 |
---|---|
weka (0) | 2019.02.28 |
의사결정나무(Decision Tree) (0) | 2019.02.07 |
[데이터 전처리] clipping vs trimming (0) | 2019.01.04 |
Standardization vs normalization (0) | 2019.01.04 |