基本循环神经网络 (RNN) 单元是将先前隐藏状态 h_{t-1} 和当前输入 x_t 作为输入返回隐藏状态的东西ht−1xt
ht=tanh(Whhht−1+Wxhxt)
LSTM 也是如此,但正如这篇精彩的博客文章中所描述的,它只是稍微复杂一点。因此,回答您的第二个问题,RNN 单元在每一步都会返回一个可用于进行预测的输出。有两种使用 RNN 的方法,您可以处理整个输入序列并仅查看最后的输出状态(例如处理整个句子,然后对句子的情绪进行分类),或者使用中间结果(在 Keras 中,这是return_sequence=True
参数)并进一步处理它们,或进行某种预测(例如,每个句子的每个单词的命名实体识别)。这里唯一的区别是,在第一种情况下,您只需忽略中间状态。如果这太抽象,下图(来自上面提到的博客文章)可能会有所帮助。

如您所见,在每个步骤中,您都有一些输出,它是当前输入和所有历史记录的函数,通过前一个隐藏状态传递。htxtht−1
至于隐藏状态的形状,这是一个矩阵代数,所以形状将取决于输入和权重的形状。如果您使用一些预构建软件,例如Keras,那么这由 LSTM 单元的参数(隐藏的数量units
)控制。如果您手动编码,这将取决于权重的形状。