记忆单元数量(隐藏维度)为 m=5,输入维度为 x_dim=7,因此每个门的权重矩阵形状均为 (m,x_dim+m)=(5,12)。在每个时间步 t,把当前输入 xt∈R7 与上一步隐藏向量 ht−1∈R5 级联成 xc=[xt;ht−1]∈R12。
经典 LSTM 的前向计算如下(与题面描述一致):
$$\begin{aligned} g_t &= \tanh(W_g \, \mathrm{xc} + b_g),\\ i_t &= \sigma(W_i \, \mathrm{xc} + b_i),\\ f_t &= \sigma(W_f \, \mathrm{xc} + b_f),\\$$【问题说明】长短期记忆网络(Long Short−Term Memory, LSTM)是一种特殊的循环神经网络(RNN),旨在解决传统 RNN 中存在的梯度消失和梯度爆炸问题,使其能够有效地学习长期依赖关系。
一个 LSTM 单元(Cell)的核心由三个关键的门和一个细胞状态(Cell State)组成:
细胞状态 (Cell State):这是 LSTM 的“记忆高速公路",信息沿着这条路径从一个时间步传递到下一个。它的更新是一个简单的线性操作(加法和乘法),这使得梯度可以更直接地流动,从而避免了梯度消失。
遗忘门 (Forget Gate):遗忘门决定从上一时间步的细胞状态中丢弃哪些信息。它通过一个 Sigmoid 激活函数,对上一个隐藏状态和当前输入进行处理,输出一个介于 0 和 1 之间的向量。0 表示完全遗忘,1 表示完全保留。
输入门(InputGate):输入门控制新信息写入到细胞状态中。它包含两个部分:
输出门(Output Gate):输出门决定当前时刻的隐藏状态(Hidden State)将输出哪些信息。它首先通过一个 Sigmoid 层来决定细胞状态的哪些部分会被输出,然后对当前的细胞状态应用 Tanh 函数,最后两者相乘得到新的隐藏状态。
【任务要求】请根据下图的 LSTM 结构示意图,实现一个 LSTM 模型的关键函数,并按下列要求输出计算结果。
该 LSTM 模型包含了 5 个 LSTM Cell(上图中 A 单元),每个 LSTM Cell 中的权重的定义如下图所示,分别为 wf,wi,wg,wo, 对应的偏置为 bf,bi,bg,bo。已在 python 代码模板中提供了 5 个 LSTM Cell 的权重和偏置的数据。如果使用非 Python 语言, 需沿用 Python3 代码模板中的参数设置。
该 LSTM 模型会循环地作用于输入序列中的每一个时间步(从 t=1 到 t=sequence_length),每个时间步的计算都会产生一个 5 维的隐藏状态。请针对不同输入矩阵运行 LSTM 模型,计算对应每个时间步隐藏层状态 h 的首元素。其中输入 X 矩阵的形状为 [4,7] ,即输入数据序列时间步长 sequence_length 为 4 ,输入数据维度 X_dim 为 7 。
一共一行数据,用于描述输入矩阵。
其中前两个为整型数据,分别为 sequence_length 行数和 x_dim 列数,后面数据为输入矩阵的参数,均为浮点数,按行平铺 flatten 形式展开为一维序列,数据间以一个空格间隔。
一共一行数据,输出每个时间步隐藏状态的首元素,按时间步顺序组成,数据之间以一个空格间隔。
数据精度要求:且均四舍五入精确到小数点后 3 位,同时若尾部存在 0 结尾需进行舍弃如 0.200 0.310 0.891 0.007 需要舍弃尾部,变为 0.2 0.31 0.891 0.007 。特殊情况:0 或 0.000 或 0.00 或 0.0 需输出为 0.0 。
输入
4 7 -1.153285 -0.081943 0.464549 3.411137 0.594197 1.21088 -0.234899 -0.272196 0.279498 -0.289765 -0.826989 -0.224368 0.711969 -0.067545 0.80226 0.574793 2.458116 0.733628 0.698731 -0.816701 0.533741 -1.756603 -0.123113 -0.550757 0.273727 0.249046 -1.165406 -0.31581
输出
0.001 -0.002 0.012 -0.006
输入
4 7 -1.609352 -0.165708 -0.494005 1.980481 0.316188 -0.005439 -1.108964 0.576463 -0.048573 -0.384642 -1.112576 0.351411 0.698983 0.607453 0.364154 -0.220041 0.345962 -0.274185 -0.784176 -1.740389 1.118046 0.794949 2.249595 -0.038455 0.037336 -0.652332 1.491228 -0.248807
输出
-0.006 -0.012 -0.013 0.014
说明
样例的输入输出均为一行数据,具体格式及输出规范参考上述输入输出描述。经典LSTM模型结构实现