了解 LSTM 预测的输出

Understanding the output of LSTM predictions

模型(from main docs)如下:

import torch.nn as nn

class RNN(nn.Module):
    def __init__(self, vocab_size, embedding_dim, hidden_dim, output_dim):
        
        super().__init__()
        
        self.word_embeddings = nn.Embedding(vocab_size, embedding_dim)
        self.lstm = nn.LSTM(embedding_dim, hidden_dim)
        self.hidden2tag = nn.Linear(hidden_dim, output_dim)
        
    def forward(self, text):
                
        embeds = self.word_embeddings(text)
        lstm_out, _ = self.lstm(embeds.view(len(text), 1, -1))
        tag_space = self.hidden2tag(lstm_out.view(len(text), -1))
        tag_scores = F.log_softmax(tag_space, dim=1)   

        return tag_scores

参数:

INPUT_DIM = 62288
EMBEDDING_DIM = 64
HIDDEN_DIM = 128
OUTPUT_DIM = 15

Pytorch 中的 LSTM 函数 returns 不只是最后一个时间步的输出而是所有输出(这在某些情况下很有用)。因此,在您的示例中,您似乎正好有 100 个时间步长(时间步长的数量就是您的序列长度)。

但是既然你在做分类,你只关心最后的输出。你通常可以这样得到它:

outputs, _ = self.lstm(embeddings)
# shape: batch_size x 100 x 15
output = outputs[:, -1]    
# shape: batch_size x 1 x 15