对于LSTM输入层、隐含层及输出层参数的个人理解

本文深入解析LSTM网络的参数设置,包括输入层的batch_size、input_dim和time_step,隐含层的n_hidden,以及输出层的output_dim。通过MNIST手写数字识别和时间序列分析两个实例,详细阐述了各参数的具体含义及其在不同场景下的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址

LSTM输入层要求的维度是三维的,其中包含三个参数:batch_size, input_dim和time_step。隐含层有一个参数:n_hidden。输出层有两个参数:n_hidden和output_dim。下面举两个例子:利用LSTM识别MNIST手写数字集和LSTM时间序列分析,谈谈个人对这些参数含义的理解。

1. 利用LSTM识别MNIST手写数字集


输入层:首先说下batch_size。这个参数其实和其他神经网络的batch_size意义相同,都指一次性输入到神经网络中训练的个数。这里batch_size=128,含义是一次性将128个图像输入到LSTM中进行训练,完成一次参数计算和更新。再说说n_steps。n_steps实际上指的是构造的LSTM总共有多少个时间上的输入。在这里取n_step = 28,指的是按时间顺序依次输入28次,在同一时刻输入的个数为batch_size * n_input。在MNIST数据集中,一幅图片表示为28*28的矩阵,因此如果一次输入1行,那么要先后依次输入28行才能将一个图片的信息完全输入。那么同时input_dim(在此处为n_input)的含义也很清楚了,就是一次输入的数据维数,在这里就是1行的数据个数。因此,输入端的操作是,在t时刻输入128幅图片的第1行矩阵,t+1时刻输入128幅图片的第2行矩阵。以此类推直到输入完毕。 
隐含层:隐含层只有一个新的参数:n_hidden。这个参数表示的是用于记忆和储存过去状态的节点个数。 
输出层:输出层也只有一个新的参数:output_dim(在此处为n_classes)。这个参数的含义是输出结果维数。在MNIST数据集中,由于做的是0~9的分类,所以输出维度自然是10,类似于softmax分类。

2. LSTM时间序列分析

输入层:在这个例子中,使用了Keras作为搭建LSTM工具。查看Keras的文档,得知其对输入数据的要求是

形如(samples,timesteps,input_dim)的3D张量
而第二个例子中对于输入数据做的处理为 
x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1)) 
因此不难比较得到:


由于这个例子是给定一个已知序列,对该序列接下来的走势进行预测,因此自然而然想到把一个序列切成训练集和测试集,训练集再根据合适的时间长度分成t~(t+n)的训练集和t+n+1的测试集。那么batch_size的含义是一次性输入训练的序列数。time_step为取的一个时间序列的长度,也就是上一句话的n。在这个例子中,input_dim为1,说明在一个时间点,一个序列只输入1个点。隐含层和输出层类似,不再重复。
 

### LSTM网络架构图 LSTM(长短期记忆网络)是一种特殊的RNN,能够学习长期依赖关系。其核心在于细胞状态和三个门控机制:遗忘门、输入门和输出门[^1]。 #### 输入结构 LSTM接收的输入通常表示为三元组 `(seq_len, batch, input_size)` 当 `batch_first=True` 时,则变为 `(batch, seq_len, input_size)` 。这里 `seq_len` 是序列长度;`batch` 表示批次大小;`input_size` 则指定了每个时间步的特征数量[^2]。 #### 隐藏 隐藏的数量由参数 `num_layers` 控制,默认情况下只有一个隐藏。如果设置了多比如两,则意味着数据会在两个连续的LSTM单元之间传递。每都有自己的权重矩阵,并且这些权重在整个训练过程中被共享[^3]。 #### 输出结构 对于单向LSTM而言,最终的输出形状同样取决于是否将批量尺寸放在第一位 (`batch_first`) ,默认情况下的输出形式为 `(seq_len, batch, hidden_size * num_directions)` 或者当 `batch_first=True` 时为 `(batch, seq_len, hidden_size * num_directions)` 。这里的 `hidden_size` 就是指定的隐含层节点数目,而 `num_directions` 可能是1(如果是单向的话),或者是2(若是双向LSTM)。值得注意的是,在双向模式下,不仅前向传播会产生一组隐藏状态,反向也会产生另一组独立的状态,所以总的输出宽度翻倍。 ```mermaid graph LR; A[Input] --> B{LSTM Cell}; B --> C[Hidden State]; B --> D[Cell State]; E[(Output)] <-- C; F[Time Step t-1 Hidden State] -.->|Feedback Loop|B; G[Time Step t+1 Input] --> H{Next LSTM Cell}; H --> I[Next Hidden State]; J[Previous Time Steps' Information Flow Through Cell States]-.->|Long-Term Memory Pathway|D; ``` 此Mermaid图表展示了基本的LSTM工作流程,包括输入如何进入LSTM单元并影响当前时刻的隐藏状态和细胞状态,同时也体现了来自先前时间步骤的信息流是如何贯穿整个细胞状态来保持长时间的记忆路径。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值