如何向量化 LSTM?

How to vectorize LSTMs?

特别是,我对 LSTM 层具有(比如说)50 个单元的含义感到困惑。考虑来自 this awesome blog post 的以下 LSTM 块:

假设我的输入 xt 是一个 (20,) 向量,隐藏层 ht 是一个 (50,) 向量。鉴于单元状态 Ct 在成为新的隐藏状态之前只经历了逐点操作(逐点 tanh*),我收集到 Ct.shape = ht.shape = (50,)。现在遗忘门查看与隐藏层连接的输入,这将是一个 (20+50,) = (70,) 向量,这意味着遗忘门必须具有形状为 (50, 70) 的权重矩阵,使得 dot(W, [xt, ht]).shape = (50,) .

所以我现在的问题是,当 Ct.shape = (50,) 时,我是否正在查看具有 50 个单元格的 LSTM 块?还是我误解了 LSTM 层有 50 个单元的含义?

我明白你对什么感到困惑。所以基本上,连接顶部代表细胞状态的两个框的黑线实际上是一组非常小的 50 条线组合在一起。这些与遗忘门的输出逐点相乘,遗忘门的输出由 50 个值组成。这 50 个值与细胞状态点相乘。