저는 CNN을 사용하면서 필터의 개수와 출력 feature map의 개수 등과 parameter 등을 제대로 알아야 CNN을 제대로 이해할 수 있다고 생각했습니다.
그래서 오늘은 개수 세는 법 총정리입니다!
예를 들어 28X28X1 의 input feature map이 있다고 가정해봅시다.
마지막 차원이 1이므로 gray_scale이라고 볼 수 있습니다! ( 보통 RGB 3가지 색상이므로 마지막 차원은 3입니다. )
필터는 여러 개의 커널 묶음이고,
필터 하나 당 한 개의 feature map
을 출력해냅니다.
따라서 첫번째 conv2D layer는 32개의 filter 수를 가지고 있었기 때문에, output feature map의 개수가 32개가 된 것입니다.
즉,필터의 개수 == 출력 feature map
의 커널 개수인 것입니다.
Param은 커널 사이즈가 3X3으로 가정했을 때, 3X3X32개의 파라미터
와 32개의 bias 파라미터
를 더하여 320개
가 되는 것입니다 !
( 첫번째 conv2D layer는 padding = 'same' 설정을 하였습니다. )
두번째 conv2D layer를 살펴볼까요??
우선, padding 설정이 안 되어있고
, 커널 사이즈가 3X3
이므로 28X28에서 26X26
으로 줄어들었습니다.
또한, 64개의 filter를 가지고 있어서, 총 26X26X64의 출력 feature map
으로 구성되었습니다.
그렇다면, param의 개수는 3X3X32X64 + 64 이므로 18496개 입니다. (3X3 커널 사이즈 * 32개의 커널 * 64개 filter + 64개 bias
)
(참고로, filter 하나 당 bias가 하나 있습니다.)
오늘은 이렇게 CNN에서 헷갈릴 수 있는 차원 개수에 대해 정리해보았습니다!