Convolutional Neural Network (CNN) 이론
Convolutional Neural Network (CNN)
은 결국 CONV
, ReLU
, POOL
, Dropu-out
을 번갈아서 적용하는 것을 말한다.
마지막에는 Fully connected network
으로 구성 된다.Pooling
은 sampling
과 resizing
을 의미한다.
Start with an image (width x hight x depth)
으로 구성된다.
결국, 32 x 32 x 3 image 이다.3
이라고 하면 red, green, blue
를 나타낸다.gray scale
일 경우 1의 depth를 나타낸다.
결국은 위와 같이 filter
를 상징하는 weight
를 찾는 것이 Convolutional Neural Network(CNN)
의 목적이라고 할 수 있다.
필터를 이미지에 적용 (conv + ReLU)
필터를 이미지에 적용하고 Stride
에 따라서 나오는 이미지의 크기가 달라지게 된다.
필터의 사이즈가 너무 작으면 Weight
를 구하는것이 의미가 없어 진다.
아래의 공식대로 필터가 구해진다.출력 크기 = 1 + (입력 크기 - 필터 크기) / stride 크기
핵심은 구하려고하는 값이 2.33
과 같이 나머지가 존재해서는 안된다.
정수로 딱 떨어져야 이 방법이 적용 가능하다.
실전에서는 위와 같이 Filter를 적용할 때 마다 원본 image의 크기가 작아지는 문제가 발생 한다.stride
크기에 상관 없이 최소한 (필터 크기 -1)
만큼 줄어들 수 밖에 없다.
따라서 padding
을 처리하는 것이 중요 하다.
Max Pooling
Pooling
의 다른 말은 Sampling
또는 Resizing
이다.Pooling
을 거치면 크기가 작아지게 된다.
결국 이전에 filter를 통해서 생성 했던 activation map
이 크기는 1/2
로 작아지고 channel
의 두께는 바뀌지 않게 되는 것이다.
Pooling 기법 중에서 가장 많이 사용하는 Max pooling
이 있다.
여러 개의 값 중에서 가장 큰 값을 꺼내서 모아 놓은것을 말한다.
이전의 Convolutional Layer
에서는 Filter
를 곱해서 새로운 출력 결과를 만들어 낸다.
이와 다르게 polling에서는 단순하게 존재하는 값 중에서 하나를 선택하게 된다.Max pooling
은 여기서 가장 큰 값을 선택하는 것을 말한다.
참고문헌
'AI > TensorFlow, PyTorch, Keras, Scikit' 카테고리의 다른 글
Early Stopping 및 Index Shuffling (0) | 2017.01.03 |
---|---|
Convolutional Neural Network (CNN) 구현 (4) | 2016.12.31 |
AWS의 GPU를 이용한 TensorFlow (1) | 2016.12.31 |
rpy2 Windows 10에 설치 하기 (0) | 2016.12.13 |
Python에서 rpy2를 이용한 ROjbect 불러오기 (3) | 2016.12.12 |