Подслои прямого распространения
Подслои прямого распространения преобразуют выходы механизма внимания в абстрактные нелинейные представления, что позволяет лучше улавливать сложные зависимости.
В этом упражнении вы создадите класс FeedForwardSubLayer для трансформера, работающего только в режиме энкодера. Слой будет состоять из двух линейных слоёв с функцией активации ReLU между ними. Он принимает два параметра: d_model и d_ff — размерность входных эмбеддингов и размерность между линейными слоями соответственно.
Переменные d_model и d_ff уже доступны для использования.
Это упражнение является частью курса
Трансформерные модели с PyTorch
Инструкции к упражнению
- Определите первый и второй линейные слои, а также функцию активации ReLU для класса подслоя прямого распространения, используя
d_modelи размерностьd_ffмежду слоями. - В методе
forward()передайте входные данные последовательно через слои и функцию активации. - Создайте экземпляр
FeedForwardSubLayer, используя предоставленные значенияd_modelиd_ff(равные512и2048соответственно), и примените его к входным эмбеддингамx.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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}")