Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
3
respostas

[Projeto] Sessão 4 - Faça como eu Fiz

Nesta atividade, adaptei o modelo recorrente que anteriormente utilizava uma camada GRU para passar a utilizar uma camada LSTM. A alteração principal foi feita na definição da camada recorrente dentro do método __init__(), substituindo nn.GRU por nn.LSTM, mantendo os mesmos parâmetros de entrada, tamanho da memória e configuração batch_first=True.

Também ajustei o método forward(), pois a LSTM trabalha com dois estados internos: o hidden, que representa a memória oculta, e o cell_state, que representa o estado da célula. Diferente da GRU, que utiliza apenas o estado oculto, a LSTM precisa receber e retornar esses dois elementos durante o processamento da sequência.

Para isso, inicializei tanto o hidden quanto o cell_state com tensores de zeros, respeitando o formato esperado pela camada: quantidade de camadas, tamanho do batch e tamanho da memória. Em seguida, passei esses dois estados para a LSTM junto com a sequência de entrada ajustada com unsqueeze(0), garantindo que o dado estivesse no formato adequado para o processamento em lote.

Após a execução da camada recorrente, utilizei a última saída da sequência, saida[:, -1], como representação final do nome processado. Essa saída foi então encaminhada para a camada linear responsável pela classificação entre as 18 classes disponíveis, seguida da função softmax, mantendo a lógica original do modelo.

Com essa modificação, o modelo passa a explorar a estrutura da LSTM, que é mais adequada para lidar com dependências em sequências, pois consegue controlar melhor quais informações devem ser mantidas, atualizadas ou descartadas ao longo do processamento dos caracteres.

Segue o link com o código: https://github.com/Moquiuti/Redes-Neurais-Recorrentes-Deep-Learning-com-PyTorch/blob/main/Classifica%C3%A7%C3%A3o_de_Sequ%C3%AAncias_LSTM.ipynb

3 respostas

Olá, Leandro! Como vai?

Parabéns pela resolução da atividade!

Vi que você explorou a LSTM para classificação com PyTorch, utilizou muito bem a camada linear para saída e ainda compreendeu a importância da inicialização dos estados para o processamento sequencial.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Regularização: aplicar dropout para reduzir overfitting.
  • Normalização: padronizar entradas para melhorar estabilidade do treinamento.
  • Eficiência: usar pack_padded_sequence para lidar com sequências de tamanhos diferentes.

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Ah, uma pergunta: Você acha que a LSTM trouxe mais clareza no aprendizado de dependências longas ou prefere a simplicidade da GRU para manter o modelo mais leve?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
solução!

A LSTM me ajudou a visualizar melhor o tratamento de dependências longas, principalmente por trabalhar com hidden state e cell state. Ainda assim, vejo a GRU como uma alternativa interessante quando a prioridade é manter o modelo mais simples e leve, desde que o desempenho continue satisfatório.

Respeitosamente.

Olá, Leandro! Tudo bem?

Achei muito interessante a forma como você destacou as diferenças entre LSTM e GRU.

A clareza com que você explicou o papel do hidden state e cell state na LSTM mostra domínio conceitual, e ao mesmo tempo você trouxe uma visão prática ao considerar a GRU como alternativa mais simples e leve, sem perder desempenho. Essa comparação é bastante útil para quem está estudando arquiteturas de redes recorrentes e pensando em aplicabilidade real.

Forte abraço e bons estudos por aí!