CNN Basics ML lab11-1-TensorFlow

 CNN은 이미지와 텍스트 분류 시 매우 좋은 성능으로 수행해 준다.크게 3단계로 분류할 수 있는데, 1. 어떤 입력된 이미지 또는 벡터를 여러 필터를 사용하여 여러 겹의 Conv 레이어로 만들어 준다.2. 추출한 값은 상당히 많아지기 때문에 subsampling을 해 준다.3. 이를 반복한 후 feature extraction(특징 빼내기)을 해주는 것이다.4. Fully Connected 네트워크를 형성하여 classification이나 regression을 해줄 수 있다.

출처: 모두를 위한 디플러닝 강좌 그렇다면 간단한 CNN을 구성해 보자.

출처: 모든 것을 위한 딥러닝 강좌 위의 그림과 동일한 조건으로 구성해 본다.일단 이미지를 만들어야 한다.

출처: 모두를 위한 딥러닝 강좌의 위와 같은 형태로 사진을 「1」매 만든다.

출처: 모든 것을 위한 딥러닝 강좌 이미지는 1, 3, 1의 shape이다.첫째는 사진의 수, 둘째 셋째는 사진의 크기, 둘째는 색이다.필터는 2, 2, 1, 1의 shape이며, 여기서 처음의 2번째 2는 필터의 크기이다.세 번째 1은 색이고, 마지막 1은 필터의 수이다.필터의 값은 계산하기 쉽도록 1로 되어 있다.stride는 1이므로 계속 필터를 이동시키면서 그 값에 필터 값을 곱해서 모두 더하는 방식으로 진행한다.Shape를 구하는 과정이 좀 까다로운 것 같아.

출처: 모든 것을 위한 딥러닝 강좌의 위와 같이 코드를 짜면 되지만, 함수에 그대로 대입하는 정도로 CNN 과정을 쉽게 실현할 수 있다.구현해 보면 필터를 적용했을 때의 값을 출력시킬 수 있다.

이제 Padding에 대해 살펴보자.

위 코드에서는 padding으로 Valid를 해주었는데, padding을 SAME에서 처리해 주면 필터 적용 후 이미지의 크기와 앞의 크기가 동일해진다.

출처: 모든 것을 위한 디플러닝 강좌 이것도 텐서 플로우로 실현되기는 쉽다.padding을 SAME로 바꾸고 shape를 3×3로 바꾸기만 하면 된다.

출차: 모든 것을 위한 딥러닝 강좌 출력 값이 padding 적용으로 3×3가 된 것을 확인할 수 있다.

필터도 간단히 여러 장으로 늘릴 수 있다.

출처: 모든 것을 위한 딥러닝 강좌 필터가 늘면서 출력 값도 늘어나게 되었다.이제 Cone 작업을 끝냈어

다음에는 Pooling을 해보자.

출처 : 모든 것을 위한 딥러닝 강좌와 같이 간단히 구현할 수 있다.간단하게 Pooling을 구현한 것이다.

다음은 Minist를 이용해 CNN을 구현해 보자.

출처: 모든 것을 위한 디플러닝 강좌 위와 같은 방식으로 데이터를 불러온다.그 후 Convlayer를 통과시킨다.

출처 : 모두를 위한 디플러닝 강좌

Conv레이어를 통과시켜 Max pooling을 한다.

출처:모든것을위한딥러닝강좌pooling방법이다.

참고 : 모두를 위한 딥러닝 강좌