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

LSTM中点乘与加法运算机制疑问:针对timesteps=4等参数场景

LSTM细胞状态的点运算逻辑(结合参数timesteps=4, features=2, units=3)

明确各状态维度

  • 输入维度:(batch_size, 4, 2)(单个时间步输入为(batch_size, 2))
  • 隐藏状态h_t、细胞状态c_t维度:(batch_size, 3)(units=3,None对应批量维度batch_size)

时间步t1的核心计算流程

  1. 输入与隐藏状态拼接
    时间步t1的输入x_t1((batch_size,2))和上一时间步隐藏状态h_t0((batch_size,3))在特征轴拼接,得到(batch_size, 5)的张量(2+3=5)。

  2. 生成门控与候选状态
    拼接后的张量通过3组独立全连接层(共享权重矩阵,偏置不同),分别输出:

    • 遗忘门f_t1:(batch_size,3),sigmoid激活(输出0-1区间值)
    • 输入门i_t1:(batch_size,3),sigmoid激活
    • 候选细胞状态~c_t1:(batch_size,3),tanh激活(输出-1到1区间值)
    • 输出门o_t1:(batch_size,3),sigmoid激活
  3. 细胞状态的点运算(核心困惑解答)
    这里的点运算是逐元素运算(element-wise),即同维度张量对应位置元素直接计算:

    • 遗忘阶段(乘法):上一步细胞状态c_t0((batch_size,3))和遗忘门f_t1逐元素相乘,c_t0 * f_t1,作用是选择性丢弃旧细胞状态的信息。
    • 更新阶段(加法):输入门i_t1和候选细胞状态~c_t1逐元素相乘后,与遗忘后的细胞状态相加,得到新细胞状态c_t1 = (c_t0 * f_t1) + (i_t1 * ~c_t1)。
      所有参与运算的张量维度均为(batch_size,3),维度完全匹配,因此可直接执行逐元素运算。
  4. 隐藏状态更新
    新细胞状态c_t1经tanh激活后,与输出门o_t1逐元素相乘,得到当前时间步隐藏状态h_t1 = o_t1 * tanh(c_t1)。

常见理解错误修正(基于标准LSTM逻辑)

如果你的附图存在以下问题,需要调整:

  • 若拼接后未生成门控与候选状态,直接和细胞状态运算:错误,必须先通过全连接层生成门控与候选状态,再执行细胞状态的逐元素运算。
  • 若运算采用矩阵乘法而非逐元素运算:错误,矩阵乘法会改变维度,不符合LSTM的设计逻辑,细胞状态与门控的交互只能是逐元素计算。
  • 若细胞状态更新顺序颠倒:错误,必须先完成旧状态的遗忘,再添加新的候选状态,顺序不可调换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:12:18