Construire un U-Net : méthode forward
Avec les couches d’encodeur et de décodeur définies, vous pouvez maintenant implémenter la méthode forward() du U-Net. Les entrées ont déjà été passées dans l’encodeur pour vous. Cependant, vous devez définir le dernier bloc du décodeur.
L’objectif du décodeur est de suréchantillonner les cartes de caractéristiques afin que sa sortie ait la même hauteur et la même largeur que l’image d’entrée du U-Net. Cela vous permettra d’obtenir des masques sémantiques au niveau des pixels.
Cet exercice fait partie du cours
Deep Learning pour l’image avec PyTorch
Instructions
- Définissez le dernier bloc du décodeur, en utilisant
torch.cat()pour créer la connexion de raccourci (skip connection).
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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)