Recurrent Neural Networks

nn.RNN(input_dim, hidden_dim, layer_dim, batch_first=True,nonlinearity='tanh')

RNN cell vs RNN forward:

  • RNN cell:

    • Input: a(t-1), x(t)

    • Output: a(t)

  • RNN forward cell:

    • Input: a(t)

    • Output: y(t)

import torch
import torch.nn as nn
import torchvision.transforms as transforms
from torch.autograd import Variable
from sklearn.model_selection import train_test_split

class DKT(nn.Module):
    def __init__(self, input_dim, hidden_dim, layer_dim, output_dim):
        super(DKT, self).__init__()
        self.hidden_dim = hidden_dim
        self.layer_dim = layer_dim
        self.output_dim = output_dim
        self.rnn = nn.RNN(input_dim, hidden_dim, layer_dim, batch_first=True,nonlinearity='tanh')
        self.fc = nn.Linear(self.hidden_dim, self.output_dim)
        self.sig = nn.Sigmoid()

    def forward(self, x):
        h0 = Variable(torch.zeros(self.layer_dim, x.size(0), self.hidden_dim))
        out,hn = self.rnn(x, h0)
        res = self.sig(self.fc(out))
        return res

Pytorch

Last updated