Sotto-livelli feed-forward
I sotto-livelli feed-forward mappano gli output dell'attenzione in rappresentazioni non lineari astratte per catturare meglio le relazioni complesse.
In questo esercizio, creerai un FeedForwardSubLayer per il tuo transformer solo-encoder. Questo livello sarà composto da due livelli lineari con una funzione di attivazione ReLU tra di loro. Accetta anche due parametri, d_model e d_ff, che rappresentano rispettivamente la dimensionalità degli embedding in input e la dimensione intermedia tra i livelli lineari.
d_model e d_ff sono già disponibili per te.
Questo esercizio fa parte del corso
Modelli Transformer con PyTorch
Istruzioni dell'esercizio
- Definisci il primo e il secondo livello lineare e l'attivazione ReLU per la classe del sotto-livello feed-forward, usando
d_modele una dimensioned_fftra i livelli. - Fai passare l'input attraverso i livelli e la funzione di attivazione nel metodo
forward(). - Istanzia
FeedForwardSubLayerusando i valori forniti did_modeled_ff(impostati rispettivamente a512e2048) e applicalo agli embedding di input,x.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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}")