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

TensorFlow中LSTM单元RNN输出变量维度为何多1?

解答:LSTM Kernel维度为何多了1?

嘿,其实这个问题的核心是你没把输入特征维度和LSTM内部的权重计算逻辑结合起来看~我来给你拆解清楚:

首先,先明确TensorFlow里BasicLSTMCell的kernel是怎么定义的:LSTM内部有4个核心计算模块——输入门、遗忘门、输出门,还有候选细胞状态($\tilde{C}_t$),每个模块都需要一组权重来计算。为了高效计算,TensorFlow把这4组权重合并成了一个大的kernel矩阵,所以第二个维度是4*隐藏单元数(也就是你说的$4*80=320$),这部分你理解的没错。

那第一个维度为什么是81而不是80呢?原因在这里:
LSTM每个时间步的计算,是把**上一步的隐藏状态($h_{t-1}$,维度80)和当前时间步的输入($x_t$,维度1)**拼接在一起,得到一个总维度为$80+1=81$的向量,然后用这个大向量去乘kernel矩阵,得到4个门+候选状态的总输出。

对应你的代码:

  • 输入nlu_input的shape是[4,1607,1],最后一维的1就是每个时间步的输入特征维度
  • 隐藏单元数是80,所以拼接后的向量维度是$1+80=81$
  • 因此kernel的形状就是(81, 320)——第一个维度是输入特征+隐藏状态的总维度,第二个维度是4个门各自的输出维度之和

举个验证例子:如果你把输入改成shape=[4,1607,5](特征维度5),那kernel的第一个维度就会变成$5+80=85$,第二个维度还是320,你可以试试修改代码确认这个规律~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:44:31