НачатьНачать бесплатно

Подслои прямого распространения

Подслои прямого распространения преобразуют выходы механизма внимания в абстрактные нелинейные представления, что позволяет лучше улавливать сложные зависимости.

В этом упражнении вы создадите класс 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}")
Редактировать и запускать код