Почему у меня все скрытые состояния / выходы LSTM всех входов одинаковые? - PullRequest
0 голосов
/ 15 июня 2019

Я использую python3 и pytorch для создания базового LSTM для решения проблемы классификации текста.Тем не менее, я получил результаты, что предсказанные результаты всех входных данных одинаковы.Я проверил скрытое состояние каждой партии и обнаружил, что все скрытые состояния партии одинаковы.Я думаю, что разные входы должны иметь разное конечное скрытое состояние, верно?Так как я могу исправить свой код?

class LSTM(nn.Module):
    def __init__(self):
        super(LSTM,self).__init__()

        self.lstm=nn.LSTM(
            input_size=embedding_dim,
            hidden_size=hidden_size
            )
        self.batch_size=batch_size
        self.hidden_size=hidden_size
        self.word_embeddings = nn.Embedding(vocab_size, embedding_dim)
        self.word_embeddings.weight.requires_grad = True
        self.fc=nn.Linear(self.hidden_size,num_classes)

    def init_hidden(self,batch_size_=None):
        if batch_size_ is None:
            batch_size_=self.batch_size
        h0 = autograd.Variable(torch.zeros(1, batch_size_, self.hidden_size))
        c0 = autograd.Variable(torch.zeros(1, batch_size_, self.hidden_size))
        return (h0,c0)

    def forward(self,X):
        X=self.word_embeddings(X)
        X=X.permute(1,0,2)
        print(X)
        self.hidden=self.init_hidden(X.size()[1])
        output, (final_hidden_state, final_cell_state) = self.lstm(X,self.hidden)
        return self.fc(final_hidden_state[-1])
...