MaxPool2d 계층에서의 출력 크기 구하는 공식
• 출력 크기 = IF/F
• IF: 입력 필터의 크기(input_filter_size, 또한 바로 앞의 Conv2d의 출력 크기이기도 합니다)
• F: 커널 크기(kernel_size)
예를 들어 첫 번째 MaxPool2d 계층은 다음과 같습니다.
nn.MaxPool2d(kernel_size=2, stride=2)
따라서 출력 크기는 다음과 같이 계산할 수 있습니다.
784 / 2 = 392
(784는 첫 번째 Conv2d에서 계산한 결과입니다)
계산 결과를 적용하면 출력의 형태는 [32, 392, 392]가 됩니다. 그리고 가장 앞의 32는 바로 앞 Conv2d 계층의 out_channels입니다.
ⓑ out_features: 출력 데이터의 크기를 의미합니다.
⑥ 합성곱층에서 완전연결층으로 변경되기 때문에 데이터의 형태를 1차원으로 바꾸어 줍니다.
이때 out.size(0)은 결국 64*6*6을 의미합니다. 따라서 (64*6*6, ?) 크기의 텐서로 변경하겠다는 의미입니다. out.view(out.size(0), -1)에서 ‘-1’은 행(row)의 수는 정확히 알고 있지만 열(column)의 수를 알지 못할 때 사용합니다.