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 |





