Feedforward-Teilschichten
Feedforward-Teilschichten bilden Attention-Ausgaben auf abstrakte, nichtlineare Repräsentationen ab, um komplexe Beziehungen besser zu erfassen.
In dieser Übung erstellst du eine FeedForwardSubLayer für deinen reinen Encoder-Transformer. Diese Schicht besteht aus zwei linearen Schichten mit einer ReLU-Aktivierungsfunktion dazwischen. Sie nimmt außerdem zwei Parameter entgegen, d_model und d_ff, die die Dimensionalität der Eingabeeinbettungen bzw. die Dimension zwischen den linearen Schichten darstellen.
d_model und d_ff stehen dir bereits zur Verfügung.
Diese Übung ist Teil des Kurses
<Kurs>Transformer-Modelle mit PyTorch</Kurs>Übungsanweisungen
- Definiere die erste und zweite lineare Schicht sowie die ReLU-Aktivierung für die Feedforward-Teilschichtklasse; verwende
d_modelund eine Dimensiond_ffzwischen den Schichten. - Leite die Eingabe im
forward()-Methode durch die Schichten und die Aktivierungsfunktion. - Instanziiere die
FeedForwardSubLayermit den gegebenend_modelundd_ff(auf512bzw.2048gesetzt) und wende sie auf die Eingabeeinbettungenxan.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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}")