Я использую 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])