Feed-forward sublayers
Feed-forward-sublagen zetten attention-uitvoer om in abstracte, niet-lineaire representaties om complexe relaties beter te vangen.
In deze oefening maak je een FeedForwardSubLayer voor je encoder-only transformer. Deze laag bestaat uit twee lineaire lagen met daartussen een ReLU-activatiefunctie. Hij neemt ook twee parameters, d_model en d_ff, die respectievelijk staan voor de dimensionaliteit van de input-embeddings en de dimensie tussen de lineaire lagen.
d_model en d_ff zijn al voor je beschikbaar.
Deze oefening maakt deel uit van de cursus
Transformermodels met PyTorch
Oefeninstructies
- Definieer de eerste en tweede lineaire laag en de ReLU-activatie voor de feed-forward-subslaagklasse, met
d_modelen een dimensied_fftussen de lagen. - Laat de input door de lagen en de activatiefunctie gaan in de
forward()-methode. - Maak een instantie van de
FeedForwardSubLayermet de gegevend_modelend_ff(respectievelijk ingesteld op512en2048) en pas die toe op de input-embeddings,x.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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}")