Sous-couches feed-forward
Les sous-couches feed-forward projettent les sorties de l’attention vers des représentations non linéaires plus abstraites pour mieux capturer des relations complexes.
Dans cet exercice, vous allez créer une FeedForwardSubLayer pour votre transformeur de type encodeur uniquement. Cette couche sera composée de deux couches linéaires séparées par une activation ReLU. Elle prend également deux paramètres, d_model et d_ff, qui représentent respectivement la dimension des plongements en entrée et la dimension intermédiaire entre les couches linéaires.
d_model et d_ff sont déjà fournis et prêts à être utilisés.
Cet exercice fait partie du cours
Modèles Transformer avec PyTorch
Instructions
- Définissez les première et seconde couches linéaires ainsi que l’activation ReLU pour la classe de sous-couche feed-forward, en utilisant
d_modelet une dimensiond_ffentre les couches. - Faites passer l’entrée à travers les couches et la fonction d’activation dans la méthode
forward(). - Instanciez la
FeedForwardSubLayeren utilisantd_modeletd_fffournis (respectivement512et2048), puis appliquez-la aux plongements d’entréex.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
class FeedForwardSubLayer(nn.Module):
def __init__(self, d_model, d_ff):
super().__init__()
# Define the layers and activation
self.fc1 = ____
self.fc2 = ____
self.relu = ____
def forward(self, x):
# Pass the input through the layers and activation
return self.____(self.____(self.____(x)))
# Instantiate the FeedForwardSubLayer and apply it to x
feed_forward = ____
output = ____
print(f"Input shape: {x.shape}")
print(f"Output shape: {output.shape}")