You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras中LSTM单元工作机制解析与疑问解答

LSTM参数与实现相关问题解答

Q0) Keras的LSTM实现是否与Colah博客一致?

Keras的LSTM核心实现和该博客讲解的标准LSTM结构完全一致,都包含输入门、遗忘门、输出门以及细胞状态的更新机制。你提供的示例代码中,输入为单时间步单标量时输出形状(32,1)、参数数量12,完全符合标准LSTM的参数计算逻辑。

示例代码:

import tensorflow as tf
N_u,N_x=1,1
model = tf.keras.Sequential([
    tf.keras.layers.LSTM(N_u, stateful=True, batch_input_shape=(32, 1, N_x))
])
model.summary()

Q1) 此处是否为1个LSTM单元/细胞?按图示计算的12个参数是否正确?

是的,这里定义的是1个LSTM单元(细胞)。参数计算完全正确:
标准LSTM每个单元包含4个门(输入门、遗忘门、输出门、细胞候选门),每个门的参数由三部分组成:

  • 输入特征到门的权重:N_x * N_u
  • 前一时刻隐藏状态到门的权重:N_u * N_u
  • 门的偏置:N_u
    总参数公式为 4 * (N_x*N_u + N_u*N_u + N_u)。代入N_u=1、N_x=1,得到4*(1*1 +1*1 +1)=12,和示例结果一致。

Q2) 当N_u,N_x=1,2时,参数数量变为16,是否因新增x_2与LSTM单元连接的4个权重参数?

完全正确。代入公式计算:4*(2*1 +1*1 +1)=4*(2+1+1)=16。新增的4个参数就是第二个输入特征x₂对应4个门的权重(每个门1个权重,共4个)。

Q3) 当N_u,N_x=2,1时,参数数量为32而非预期的24,两个单元是否相互影响?

是的,两个单元之间存在相互影响。此时总参数按公式计算为4*(1*2 +2*2 +2)=4*(2+4+2)=32。
差异来源在于:每个LSTM单元的门不仅接收输入特征,还会接收所有隐藏单元的前一时刻状态。当有2个单元时,隐藏状态到每个门的权重是N_u*N_u=2*2=4,4个门就是16个参数;而如果单元间无影响,这部分权重会是N_u*1=2,4个门仅8个参数,总参数就会是24。实际的32个参数正说明单元间存在连接权重,即相互影响。

Q4) N_u,N_x=2,2时参数为40,需基于前两点理解原因。

结合Q2和Q3的逻辑,代入公式计算:4*(2*2 +2*2 +2)=4*(4+4+2)=40。拆解来看:

  • 输入特征到4个门的权重:2(输入特征数)*2(单元数)*4(门数)=16
  • 隐藏状态到4个门的权重(单元间相互影响的部分):2*2*4=16
  • 4个门的偏置:2*4=8
    三者相加16+16+8=40,完全符合参数数量。

Q5) Keras的LSTM实现基于哪篇文档或论文?

Keras的LSTM基础实现基于Hochreiter和Schmidhuber在1997年发表的经典论文《Long Short-Term Memory》。同时,其实现也兼容后续的优化变体(比如默认关闭的peephole连接,参考Graves在2013年的相关工作),但核心结构遵循原始的标准LSTM设计。


内容的提问来源于stack exchange,提问作者deltasata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:52:53