뭔가 어렵게 느껴지는데 앞으로 구현할 코드를 살펴보면 크게 어렵지 않습니다. 다음은 앞으로 다룰 코드입니다. 그중 forward() 부분에 대해서만 살펴보겠습니다.
def forward(self, x): i = x x = self.conv1(x) x = self.bn1(x) x = self.relu(x) x = self.conv2(x) x = self.bn2(x) if self.downsample is not None: i = self.downsample(i) ------ 다운샘플 적용 x += I ------ 아이덴티티 매핑 적용 x = self.relu(x) return x
코드를 살펴보면 입력 x를 i라는 변수에 저장했습니다. 입력 x는 합성곱층을 통과하다가 마지막 x에 I를 더해 주었습니다. 예를 들어 x가 (28, 28, 64)라고 가정해 봅시다. x를 i 변수에 저장했기 때문에 (28, 28, 64)가 될 것입니다. 그리고 합성곱층을 통과하면서 같은 형태를 더하기 때문에 최종 형태는 (28, 28, 64) 그대로가 될 것입니다.