single
Desafio: Estruturando Blocos de Codificador e Decodificador
Deslize para mostrar o menu
Compreender a estrutura dos blocos codificadores e blocos decodificadores é fundamental para dominar como os Transformers processam e geram texto. Cada bloco codificador em um Transformer é projetado para transformar sequências de entrada em representações ricas em contexto, enquanto cada bloco decodificador gera sequências de saída ao considerar tanto as saídas anteriores quanto as representações do codificador. Em tarefas de texto do tipo sequência para sequência, como tradução ou sumarização, o codificador recebe o texto de entrada e o codifica em uma série de estados ocultos. O decodificador então utiliza esses estados ocultos, juntamente com sua própria autoatenção, para gerar a sequência alvo passo a passo. Essa interação entre blocos codificadores e decodificadores permite ao modelo capturar dependências complexas no texto, tornando os Transformers altamente eficazes para uma ampla variedade de tarefas de processamento de linguagem natural.
A tabela a seguir resume a sequência de operações em um bloco codificador de Transformer e destaca sua importância para dados textuais:
| |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Each operation ensures that the encoder builds increasingly abstract and context-aware representations of the input text, which are essential for downstream sequence-to-sequence tasks. |
Deslize para começar a programar
Sua tarefa é completar as partes ausentes da classe TransformerEncoderBlock, inicializando corretamente seus principais componentes e garantindo que sejam utilizados no cálculo do forward.
A classe TransformerEncoderBlock modela um único bloco codificador em uma arquitetura Transformer. Você deve inicializar adequadamente dois componentes principais no construtor da classe (método __init__):
- A camada de self-attention utilizando
MultiHeadAttention(hidden_dim). Esta camada permite que cada token na entrada atenda a todos os outros tokens, capturando relações contextuais; - A rede feed-forward utilizando
FeedForward(hidden_dim). Esta camada aplica transformações não lineares individualmente a cada representação de token, processando ainda mais a saída da camada de self-attention; - No método
forward, aplique essas duas camadas sequencialmente:- primeiro, passe a entrada
xpela camada de self-attention; - em seguida, passe a saída da camada de self-attention pela rede feed-forward;
- retorne a saída final.
- primeiro, passe a entrada
Certifique-se de instanciar tanto MultiHeadAttention quanto FeedForward com o parâmetro hidden_dim fornecido à classe. Esses componentes representam a estrutura central de um bloco codificador e devem ser aplicados na ordem correta para o funcionamento adequado do bloco.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo