시작하기무료로 시작하기

U-Net 만들기: forward 메서드

인코더와 디코더 레이어가 정의되어 있으므로 이제 U-Net의 forward() 메서드를 구현할 수 있어요. 입력은 이미 인코더를 거쳐 제공됩니다. 이제 마지막 디코더 블록을 정의해야 합니다.

디코더의 목표는 피처 맵을 업샘플링하여 출력의 높이와 너비가 U-Net 입력 이미지와 같아지도록 만드는 것입니다. 이렇게 하면 픽셀 단위의 시맨틱 마스크를 얻을 수 있어요.

이 연습은 강의의 일부입니다

PyTorch로 배우는 이미지 딥러닝

강의 보기

연습 안내

  • torch.cat()을 사용해 스킵 커넥션을 구성하면서 마지막 디코더 블록을 정의하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

def forward(self, x):
    x1 = self.enc1(x)
    x2 = self.enc2(self.pool(x1))
    x3 = self.enc3(self.pool(x2))
    x4 = self.enc4(self.pool(x3))

    x = self.upconv3(x4)
    x = torch.cat([x, x3], dim=1)
    x = self.dec1(x)

    x = self.upconv2(x)
    x = torch.cat([x, x2], dim=1)
    x = self.dec2(x)

    # Define the last decoder block with skip connections
    x = ____
    x = ____
    x = ____

    return self.out(x)
코드 편집 및 실행