-
CNN 파라미터 수 계산 방법딥러닝/기본 연산들 2022. 6. 4. 14:43
CNN 아키텍처의 컨볼루션 층 파라미터 개수 세는 법을 알아보겠습니다. 컨볼루션 층은 스트라이드가 1 또는 2일 때, 커널 사이즈가 1x1, 3x3, 5x5 일때로 또 다시 구분합니다.
스트라이드=1, 패딩=1, 커널 사이즈=3x3
배치 차원을 뺀 입력 차원 수는 (224, 224, 3)이고 3x3 컨볼루션을 쓰며 출력 차원 수는 (224, 224, 8)이라고 생각해 봅시다. 컨볼루션 연산을 통해 XY 평면 차원수는 그대로 유지하였고 채널 차원 수만 3에서 8로 증가했습니다.
이때 파라미터 수를 계산해 봅시다. 3x3x3 인 커널이 8개 존재하는 것이므로 3x3x3x8이 됩니다.
스트라이드=2, 패딩=2 , 커널 사이즈 5x5
배치 차원을 뺀 입력 차원 수는 (224, 224, 8)이고 3x3 컨볼루션을 쓰며 출력 차원 수는 (112, 112, 16)이라고 생각해 봅시다. 패딩 2를 적용하면 동서남북 +2 엘리먼트가 되어 가로 X는 X+4가 되고 Y는 Y+4가 됩니다.
스트라이드 2라고 한다면 컨볼루션 연산 후에 XY 평면 차원 수가 변하지 않게 됩니다.
스트라이드 2를 적용하면 컨볼루션 연산을 통해 XY 평면 차원수는 반으로 줄어든 (112, 112)가 되었고 채널 차원 수는 8에서 16으로 증가했습니다.
이때 파라미터 수를 계산해 봅시다. 3x3x8 인 커널이 16개 존재하는 것이므로 3x3x8x16이 됩니다. 스트라이드는 단순히 커널을 적용할 때의 간격을 의미하는 것으로 그것이 1이거나 2이거나 커널 자체는 불변입니다. 그래서 파라미터 수에 영향을 주지 않습니다.
스트라이드 1, 커널 사이즈 1x1
배치 차원을 뺀 입력 차원 수는 (112, 112, 16)이고 1x1 컨볼루션을 쓰며 출력 차원 수는 (112, 112, 32)이라고 생각해 봅시다. 이때의 컨볼루션은 채널 차원 수를 늘이기 위해 사용되었습니다. 컨볼루션 연산을 통해 XY 평면 차원수는 변함이 없고 채널 차원 수는 16에서 32로 증가했습니다.
이때 파라미터 수를 계산해 봅시다. 1x1x16인 커널이 32개 있으므로 1x1x16x32가 됩니다.
'딥러닝 > 기본 연산들' 카테고리의 다른 글
컨볼루션의 패딩 적용 (0) 2022.06.03 셔플 연산과 Conv 1x1의 공통점 (0) 2022.06.03 Group Conv 그룹 컨볼루션 (0) 2022.06.03 딥러닝 컨볼루션 conv 이란? (0) 2022.06.03 딥러닝 셔플 Shuffle 연산으로 채널 차원을 섞어주세요. (0) 2022.06.03