Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Definieer de eerste en tweede lineaire laag en de ReLU-activatie voor de feed-forward-subslaagklasse, met d_model en een dimensie d_ff tussen de lagen.
  • Laat de input door de lagen en de activatiefunctie gaan in de forward()-methode.
  • Maak een instantie van de FeedForwardSubLayer met de gegeven d_model en d_ff (respectievelijk ingesteld op 512 en 2048) 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}")
Code bewerken en uitvoeren