Podwarstwy feed-forward
Podwarstwy feed-forward przekształcają wyjścia mechanizmu uwagi w abstrakcyjne, nieliniowe reprezentacje, co pozwala lepiej uchwycić złożone zależności.
W tym ćwiczeniu zbudujesz klasę FeedForwardSubLayer na potrzeby transfromatora typu encoder-only. Warstwa ta składa się z dwóch warstw liniowych z funkcją aktywacji ReLU pomiędzy nimi. Przyjmuje dwa parametry – d_model i d_ff – które odpowiadają odpowiednio wymiarowości osadzeń wejściowych oraz wymiarowi między warstwami liniowymi.
Zmienne d_model i d_ff są już dostępne i gotowe do użycia.
To ćwiczenie jest częścią kursu
Modele Transformer w PyTorch
Instrukcje do ćwiczenia
- Zdefiniuj pierwszą i drugą warstwę liniową oraz aktywację ReLU dla klasy podwarstwy feed-forward, używając
d_modeloraz wymiarud_ffmiędzy warstwami. - W metodzie
forward()przepuść dane wejściowe kolejno przez warstwy i funkcję aktywacji. - Utwórz instancję klasy
FeedForwardSubLayer, korzystając z podanych wartościd_modelid_ff(odpowiednio512i2048), a następnie zastosuj ją do osadzeń wejściowychx.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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}")