【发布时间】:2021-01-16 18:48:05
【问题描述】:
我对神经网络还很陌生,对于以下内容的任何含糊之处,请事先深表歉意。
在语言任务的“标准”LSTM 实现中,我们有以下内容(抱歉,草图非常粗略):
class LSTM(nn.Module):
def __init__(*args):
...
def forward(self, input, states):
lstn_in = self.model['embed'](input)
lstm_out, hidden = self.model['lstm'](lstm_in,states)
return lstm_out, hidden
稍后,我们在训练步骤中调用此模型:
def train(*args):
for epoch in range(epochs):
....
*init_zero_states
...
out, states = model(input, states)
...
return model
假设我有 3 个句子作为输入:
sents = [[The, sun, is, shiny],
[The, beach, was, very, windy],
[Computer, broke, down, today]]
model = train(LSTM, sents)
所有句子中的所有单词都被转换为嵌入并加载到模型中。
现在的问题:
-
self.model['lstm'] 是否会遍历所有文章中的所有单词并在每个单词之后生成一个输出?还是每句话?
-
模型如何区分这 3 个句子,例如在得到“The”、“sun”、“is”、“shiny”之后,在 'lstm' 重置和开始中做某事(例如状态)重新来过?
-
out, states = model(input, states)之后训练步骤中的“输出”是运行所有 3 个句子后的输出,因此是所有 3 个句子的组合“信息”?
谢谢!
【问题讨论】:
标签: pytorch lstm recurrent-neural-network