ComeçarComece de graça

Rede LSTM

Como você já sabe, as células RNN simples não são muito usadas na prática. Uma alternativa usada com mais frequência, que garante um manuseio muito melhor de sequências longas, são as células de memória de curto e longo prazo ou LSTMs. Neste exercício, você mesmo criará uma rede LSTM!

A diferença de implementação mais importante em relação à rede RNN que você construiu anteriormente vem do fato de que as LSTMs têm dois estados ocultos em vez de um. Isso significa que você precisará inicializar esse estado oculto adicional e passá-lo para a célula LSTM.

torch e torch.nn já foram importados para você, então comece a programar!

Este exercício faz parte do curso

Aprendizagem profunda intermediária com PyTorch

Ver curso

Instruções do exercício

  • No método .__init__(), defina uma camada LSTM e atribua-a a self.lstm.
  • No método forward(), inicialize o primeiro estado oculto da memória de longo prazo c0 com zeros.
  • No método forward(), passe todas as três entradas para a camada LSTM: as entradas da etapa de tempo atual e uma tupla contendo os dois estados ocultos.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

class Net(nn.Module):
    def __init__(self, input_size):
        super().__init__()
        # Define lstm layer
        ____ = ____(
            input_size=1,
            hidden_size=32,
            num_layers=2,
            batch_first=True,
        )
        self.fc = nn.Linear(32, 1)

    def forward(self, x):
        h0 = torch.zeros(2, x.size(0), 32)
        # Initialize long-term memory
        c0 = ____
        # Pass all inputs to lstm layer
        out, _ = ____
        out = self.fc(out[:, -1, :])
        return out
Editar e executar o código