在 PyTorch 的指针生成器模型中,LSTM 之后的维数是如何确定的?
How have the number of dimensions after LSTM been decided in Pointer Generator Model in PyTorch?
我不明白为什么在编码中应用全连接层时输入和输出维度的数量2 * config.hidden_dim
class(在最后一行提到)?
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
请解释
原因是 LSTM 层是双向的,即实际上有两个 LSTM,每个 LSTM 处理来自每个方向的输入。它们都是 return 维度 config.hidden_dim
的向量,这些向量连接成 2 * config.hidden_dim
.
的向量
我不明白为什么在编码中应用全连接层时输入和输出维度的数量2 * config.hidden_dim
class(在最后一行提到)?
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 请解释
原因是 LSTM 层是双向的,即实际上有两个 LSTM,每个 LSTM 处理来自每个方向的输入。它们都是 return 维度 config.hidden_dim
的向量,这些向量连接成 2 * config.hidden_dim
.