※ 본 내용은 개인적인 공부기록장으로, 틀린내용이 있을 수 있습니다.
[CNN의 주요 특성]
컨볼루션 레이어(Convolution Layer)
+ 풀링 레이어(Pooling Layer)
를 반복하여 구성CNN의 핵심인
(1)컨볼루션 레이어
,(2)Pooling
에 대해 간단히 알아보겠습니다.
CS231 강의에서 주로 활용되는 gif 예시를 통해 Conv2D 레이어를 구현해보자.
"""이미지의 Convolution Layer 구성
Args:
filters(int):
* 가중치를 담고있는 kernel 개수랑 동일한 의미를 갖는다.
* 위 그림에서는 (W0, W1) 두개의 필터를 갖고 있는것을 확인할 수 있다.
※ 해당 값은 Output 특징맵의 Channel값이 된다.
kernel_size(tuple):
* filter(kernel)의 size
* (height, widhth)
padding(str):
* 합성곱 연산을 수행하기 전, 입력데이터 주변을 특정값으로 채워 늘리는 것
* 입력값으로 0 | 'valid' | 'same' 값을 선택할 수 있다.
input_shape(tuple):
* conv2d Layer에 입력되는 이미지의 크기
* (height, width, channel|depth) 로, 3개의 원소로 구성
* channel|depth는 컬러이미지(R,G,B)의 경우 3, 흑백이미지의 경우 1값을 갖음
stride(int|tuple):
* 입력데이터에 필터를 적용(합성곱연산)할 때 이동할 간격을 조절
* stirde 높을수록, output특징맵의 차원수가 작아짐
"""
# Conv2D Layer층 구성
keras.layers.Conv2D(
filters=2,
kernel_size=(3, 3),
padding=0,
input_shape=(7, 7, 3),
stride=(2,2))
위에서 구현한 Conv2D Layer 정리
3x3 사이즈의 2개의 kernel(filter)
를 거쳐 이미지의 특징맵output을 추출한다.- 이 때, 2개의 kernel(filter)를 거치기 때문에, output 특징맵은 2개의 Channel을 갖는다.
Conv2D Layer 의 Kerner(filter)에 대한 부연설명
- Kernel은 Filter와 동일한 의미를 갖는다. 또한 가중치값을 의미하기도 한다.
- 활성함수의 경우, relu 또는 tanh를 주로 사용한다.
- 각 kernel(filter)의 가중치의 초기값은 keras 초기값 Default로 설정된 glorot_uniform로 초기화된다.
- 학습을 진행해가며, 해당 층의 2개의 kernel의 가중치는 epoch마다 업데이트 될 것이다.