0

我不明白为什么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 请解释

4

1 回答 1

0

原因是 LSTM 层是双向的,即实际上有两个 LSTM,每个 LSTM 处理来自每个方向的输入。它们都返回维度向量,config.hidden_dim这些向量被连接成 的向量 2 * config.hidden_dim

于 2020-04-07T07:43:23.323 回答