НачатьНачать бесплатно

Построение U-Net: метод forward

После того как слои энкодера и декодера определены, можно реализовать метод forward() сети U-Net. Входные данные уже прошли через энкодер. Вам осталось определить последний блок декодера.

Цель декодера — выполнить повышающую дискретизацию карт признаков так, чтобы выходные данные совпадали по высоте и ширине с входным изображением 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)
Редактировать и запускать код