Xây dựng U-Net: phương thức forward
Với các lớp encoder và decoder đã được định nghĩa, bây giờ bạn có thể triển khai phương thức forward() của U-Net. Đầu vào đã được đưa qua encoder sẵn cho bạn. Tuy nhiên, bạn cần định nghĩa khối decoder cuối cùng.
Mục tiêu của decoder là upsample các feature map để đầu ra có cùng chiều cao và chiều rộng với ảnh đầu vào của U-Net. Điều này giúp bạn tạo được các mặt nạ ngữ nghĩa ở cấp độ pixel.
Bài tập này là một phần của khóa học
Deep Learning cho Ảnh với PyTorch
Hướng dẫn bài tập
- Định nghĩa khối decoder cuối cùng, dùng
torch.cat()để tạo skip connection.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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)