Study

.shape 으로 총 픽셀의 수를 알아보자

honey-vision 2024. 5. 10. 19:15

모델의 각 레이어마다 shape이 맞는지 확인하기 위해 '변수.shape'을 사용하곤 한다.

그 출력의 의미를 알아보자.

 

print(x.shape)을 보면 아래와 같은 출력을 확인할 수 있다.

 

x는 입력이기 때문에 [배치사이즈, rgb채널, 높이, 너비] 로 쓴다.

즉, [32, 3, 224, 224] → 배치사이즈는 32로 rgb는 채널이 3이니까 3, 이미지 사이즈는 224*224 

이렇게 된다.

 

다음 레이어를 보면 [32, 64, 112, 112]이다. 

입력과 마찬가지로 배치사이즈는 32이고

64는 필터의 수다. 나는 아래와 같이 레이어를 쌓았다.

        self.conv = nn.Conv2d(3, 64, 7, padding=3, stride=2)
        self.pool = nn.MaxPool2d(3,2,1)
        self.conv1 = nn.Conv2d(64, 64, 3, padding=1)

 

112*112도 마찬가지로 사이즈를 의미한다. 112*112로 줄어든 이유는 7×7 필터와 컨볼루션을 했기 때문이다.

 

그렇다면 총 픽셀의 수는 몇 개일까?

배치사이즈를 제외하고 필터의 수, 높이와 너비로 알 수 있다.

 

계산하기 쉽게 3×3 컨볼루션으로 예를 들어보자.

3×3 크기의 픽셀 수는 몇 개? 9개다. 3 곱하기 3이니까.

그렇다면 3×3 크기 rgb 채널이라면 픽셀 수는 몇 개일까?

 

rgb의 채널은 3이므로 9개의 픽셀이 3배가 더 추가되는 것이다.

 

(3, 3, 3)에서 픽셀의 수. 즉, feature는 3×3×3 이 된다.

 

그러면 위의 예시 [32, 3, 224, 224] 이 픽셀의 수도 구할 수 있다.

3*(224*224) = 150,528개가 된다.

'Study' 카테고리의 다른 글

Adaptive filter  (0) 2024.06.12
SGD Algorithm  (0) 2024.06.11
LMS와 SGD 차이점  (0) 2024.06.11
LMS Algorithm  (0) 2024.05.21
파라미터 수 계산하기  (0) 2024.05.11