더북(TheBook)

① 다운샘플(downsample)이 적용되는 부분입니다. 다운샘플은 입력 데이터의 크기와 네트워크를 통과한 후 출력 데이터의 크기가 다를 경우에 사용합니다. 다운샘플을 위해서는 다음과 같이 합성곱층에 스트라이드를 적용합니다.

conv = nn.Conv2d(in_channels, out_channels, kernel_size=1, stride=1, bias=False)

(예제에서는 stride=stride로 되어 있지만, 클래스 속성으로 stride=1이 정의되었기 때문에 stride=1로 작성했습니다)

② 아이덴티티 매핑이 적용되는 부분입니다. 특정 층에 존재하는 출력 결과를 다음 합성곱층을 통과한 출력 결과에 더해 준다고 하여 스킵 연결(skip connection)이라고도 합니다. 예를 들어 다음과 같이 xconv1, bn1, relu, conv2, bn2, relu, conv3, bn3 값이 더해지다가 초기의 x가 다시 더해지는 것을 아이덴티티 매핑 혹은 숏컷 혹은 스킵 연결이라고 합니다.

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)
        x = self.relu(x)
        x = self.conv3(x)
        x = self.bn3(x)

        if self.downsample is not None:
            i = self.downsample(i)

        x += i
        x = self.relu(x)
        return x
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.