LSTM输入形式疑问:给定序列与节点数时的输入呈现方式
LSTM输入相关问题解答
嘿,我来帮你理清这两个关于LSTM输入的问题~
1. LSTM的输入究竟是什么?
简单来说,LSTM接收的是带时序属性的特征序列,标准的输入维度一般是 (batch_size, timesteps, input_features):
batch_size:一次喂给模型的样本数量(比如你一次传10条时序数据,这个值就是10)timesteps:每条样本包含的时间步数(也就是你的序列长度,比如例子里的8)input_features:每个时间步对应的特征数量(比如单变量时序数据就是1,要是同时记录温度、湿度,那就是2)
举个直观的例子:你手里的这条输入列表 [0,5,0,4,3,3,2,1] 就是一条单特征的时序数据,它的输入形状就是 (1, 8, 1)(batch_size=1,因为只有这一条样本)。
2. 单特征序列如何喂给多节点LSTM层?
针对你提出的具体场景,你的第一种猜想是正确的,咱们来拆解一下:
LSTM层里的多个节点(也就是记忆单元)是共享输入序列的——每个时间步,整个LSTM层会接收当前时间步的特征值(这里是单特征,所以就是一个数字),层内的所有3个LSTM单元都会基于这个输入,结合自己上一个时间步保存的隐藏状态和细胞状态,计算当前的输出和新的状态。
对应你的例子:
- 时间步1:3个LSTM单元全都接收输入值
0,各自更新自己的状态 - 时间步2:3个单元又同时接收输入值
5,再结合自己上一步的状态计算新输出 - 就这样一步步走下去,直到时间步8,所有单元接收输入值
1
至于你提到的第二种猜想(每个节点在时间步接收不同输入),这种逻辑并不符合LSTM的工作机制:输入特征数和LSTM节点数是完全独立的参数——输入特征数由你的数据本身决定,LSTM节点数是你设置的模型容量参数,就算是多特征输入,每个LSTM单元也会接收完整的特征向量,而非拆分给不同节点。
额外补充一点:3个节点的LSTM层,输入是 (1,8,1) 的话,如果设置返回全序列输出,最终输出的形状会是 (1,8,3)——也就是每个时间步对应3个单元的输出结果;如果只返回最后一个时间步的输出,形状就是 (1,3)。
内容的提问来源于stack exchange,提问作者user312549
相关产品推荐
相关产品推荐

