-
Conv 연산량 공식, 곱셈 순서에 담긴 관점 - 28×28×32×5×5×192는 어떻게 읽어야 하나Machine Learning 2026. 8. 17. 12:42

위와 같은 예시에서 conv의 연산량 계산시
이제껏 output의 연산량을 28*28*192*5*5*32로 계산했었다.
그런데 다른 글이나, 논문에서는 (28*28*32)*(5*5*192) 로 계산하는 걸 깨닫고,
무슨 차이인지 생각해봤다.
먼저 논문에서 연산량을 계산하는 방법은 (출력값 수) × (필터 하나의 부피) 이다.
내가 생각한 방법은 (입력값 수) × (투사 영역) × (필터 개수) 이다.
각각의 해석 관점을 정리하면 아래와 같다.
출력 관점
(출력값 수) × (필터 하나의 부피) = (28*28*32)*(5*5*192)
= 출력값 하나당 필터 부피만큼의 연산량이 필요.
= 출력값 하나당 필터 부피만큼을 본다.
입력 관점
(입력값 수) × (투사 영역) × (필터 개수) = (28*28*192)*(5*5)*(32)
= (격자 자릿수) × (투사 영역) × (필터 개수)
= 격자 자리당 (투사영역)*(필터 개수) 만큼의 연산량 필요
출력관점에서 직관적으로 해석할때는 출력값 하나당 필터 부피만큼의 연산량이 필요하다고 말할 수 있다.
이때 '출력'에서 '입력'을 그대로 교체시켜 '입력값 하나당~'으로 해석하면 안된다.
예를들어, 입력값 하나당 5*5=25번 연산하는 과정을 32번 반복한다고 해석하면 안된다.
필터가 커버하는 영역이 입력값 뿐만 아니라 '패딩'을 포함하기 때문이다.
필터가 왼쪽 상단 모서리부터 오른쪽 하단 모서리로 슬라이딩하면서 연산한다.
이때 필터의 일부는 모서리와 가장자리에서 실제 입력 영역을 벗어난다.
계산의 편의를 위해 필터가 지나가는 입력의 바깥영역을 0으로 채우고, 0으로 채워진 바깥 영역을 패딩영역이라 부른다.
예시
7*7 입력에 5*5 필터를 계산하는 예시를 보자.
파란색 영역이 입력값 7*7 이고,
패딩 2에,
출력 7*7이다.
빨간색으로 표시된 입력 픽셀이 필터에 의해 몇 번 덮어지는(계산되는)지 세보자.
빨간색 입력 픽셀은 입력 영역의 가운데에 위치해있고, 해당 영역이 필터의 투사영역에 의해 25번 덮어진다.


그러나,
모서리에 위치한 빨간색 입력 픽셀에 경우 필터의 투사영역에 의해 덮이는 횟수는 9번이다.
"입력값 하나당 5*5=25번 연산하는 과정을 32번 반복한다"
라는 말과는 달리 모서리 입력값은 9번만 연산된다.


입력관점으로 보면, 단위 해석에서 어려움이 발생하므로, 28*28*192를 입력값 수로 보는게 아니라 격자(5*5)가 놓이는 자릿수로 보면 깔끔하다.
즉, (28*28*192)*(5*5)*(32)에서 (입력값 수) × (투사 영역) × (필터 개수)을 굳이 ~당으로 표현하려면 입력값 수 대신에 격자 자릿수로 바꾼다.
(격자 자릿수) × (투사 영역) × (필터 수) = 격자 자리당 투사영역*필터 수 만큼의 연산량 필요
'Machine Learning' 카테고리의 다른 글
3D Gaussian splatting - SuGaR , dockerfile 작성 (0) 2024.08.18 [3dgs] open3d로 point cloud 시각화 (2) 2024.07.04 Logistic regression, cross entropy (2) 2023.12.03 Batch Normalization (배치정규화) (2) 2023.12.03 [DL] Regularization (0) 2023.09.12