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)