Как определяется количество измерений после LSTM в модели генератора указателей в PyTorch? - PullRequest
0 голосов
/ 05 апреля 2020

Я не понимаю, почему число входных и выходных измерений 2 * config.hidden_dim при применении полностью подключенного слоя в классе кодирования (упомянуто в последней строке)?

class Encoder(nn.Module):
    def __init__(self):
        super(Encoder, self).__init__()
        self.embedding = nn.Embedding(config.vocab_size, config.emb_dim)
        init_wt_normal(self.embedding.weight)

        self.lstm = nn.LSTM(
            config.emb_dim, config.hidden_dim, num_layers=1, 
            batch_first=True, bidirectional=True)
        init_lstm_wt(self.lstm)

        self.W_h = nn.Linear(
            config.hidden_dim * 2, config.hidden_dim * 2, bias=False)

Код имеет взято из https://github.com/atulkum/pointer_summarizer/blob/master/training_ptr_gen/model.py Пожалуйста, объясните

1 Ответ

0 голосов
/ 07 апреля 2020

Причина в том, что уровень LSTM является двунаправленным, то есть фактически существует два LSTM, каждый из которых обрабатывает входные данные с каждого направления. Они оба возвращают векторы размерности config.hidden_dim, которые объединяются в векторы 2 * config.hidden_dim.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...