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 capter les relations complexes.
Dans cet exercice, vous allez créer une FeedForwardSubLayer pour votre transformeur de type encodeur seulement. Cette couche sera composée de deux couches linéaires avec une fonction d'activation ReLU entre les deux. Elle prend aussi 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 pour que vous puissiez les utiliser.
Cette activité fait partie du cours
Modèles Transformer avec PyTorch
Instructions de l’exercice
- Définissez la première et la deuxième couche linéaire ainsi que l'activation ReLU pour la 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 (réglés respectivement à512et2048) et appliquez-la aux plongements d'entrée,x.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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}")