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

Keras LSTM如何将3D输入转换为2D输出?核心疑问解析

Keras LSTM输入输出维度问题解答

先明确问题场景:
Keras官方文档说明LSTM输入是(batch, timesteps, feature)的3D张量,默认输出为(batch, units),其中units是层定义时指定的特征数量。结合示例代码:

inputs = np.random.random((32, 10, 8))
lstm = keras.layers.LSTM(4)
output = lstm(inputs)
output.shape  # 结果为(32, 4)

针对两个核心疑问解答如下:

1. 向量表示是如何传入LSTM的?

你这里的理解有误:Keras的LSTM(units)不是按输入特征数并行对应单元,而是该层包含units个独立的LSTM单元。每个时间步传入的是完整的feature维向量(这里是8维),每个LSTM单元都会接收这个完整的8维向量,再结合上一步的隐藏状态h(t-1),通过门控逻辑(输入门、遗忘门、输出门)计算当前的细胞状态和新的隐藏状态。

简单说:每个时间步是把整个8维特征向量喂给这一层的所有4个LSTM单元,而非每个特征对应一个单元。

2. 忽略batch size时,最终输出尺寸为何是4?

这是由两个关键因素决定的:

  • 你定义LSTM层时设置了units=4,意味着这一层有4个独立的LSTM单元,每个单元会输出一个隐藏状态值;
  • LSTM层默认参数return_sequences=False,这个参数控制是否返回所有时间步的输出序列——默认关闭时,只返回最后一个时间步的所有单元的隐藏状态。

所以每个样本会得到一个4维的向量(4个单元各输出一个值),忽略batch size后,输出尺寸就是4。如果开启return_sequences=True,输出形状会变成(32, 10, 4),即每个时间步都输出4个单元的隐藏状态。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:55:11