2D-LSTM

LSTM

Understanding LSTM Networks人人都能看懂的LSTM 这两篇文章介绍了 LSTM 的原理。

2D-LSTM

2D-LSTM 是作用于三维输入( W × H × D W \times H \times D W×H×D )的 LSTM ,分别取横向和纵向上一时刻的隐藏状态和输出作为该时刻的输入,如下图所示
在这里插入图片描述
数据传播的顺序依靠对角线原则,如下图所示
在这里插入图片描述
图中的数字表示计算的顺序。
下图展示了 2D-LSTM 单元的结构,蓝线表示与标准单元不同的地方。
在这里插入图片描述
上图中 x j , i x_{j, i} xj,i 为当前的输入, s j , i − 1 s_{j, i-1} sj,i1 为上一时刻横向的输出, s j − 1 , i s_{j-1, i} sj1,i 为上一时刻纵向的输出。
input gate
i j , i = σ ( W 1 x j , i + U 1 s j − 1 , i + V 1 s j , i − 1 ) i_{j, i} = \sigma(W_1x_{j, i} + U_1s_{j-1, i} + V_1s_{j, i-1}) ij,i=σ(W1xj,i+U1sj1,i+V1sj,i1)
output gate
o j , i = σ ( W 2 x j , i + U 2 s j − 1 , i + V 2 s j , i − 1 ) o_{j, i} = \sigma(W_2x_{j, i} + U_2s_{j-1, i} + V_2s_{j, i-1}) oj,i=σ(W2xj,i+U2sj1,i+V2sj,i1)
candidate value
c ^ j , i = g ( W 3 x j , i + U 3 s j − 1 , i + V 3 s j , i − 1 ) \hat{c}_{j, i} = g(W_3x_{j, i} + U_3s_{j-1, i} + V_3s_{j, i-1}) c^j,i=g(W3xj,i+U3sj1,i+V3sj,i1)
forget gate
f j , i = σ ( W 4 x j , i + U 4 s j − 1 , i + V 4 s j , i − 1 ) f_{j, i} = \sigma(W_4x_{j, i} + U_4s_{j-1, i} + V_4s_{j, i-1}) fj,i=σ(W4xj,i+U4sj1,i+V4sj,i1)
2D-LSTM 新加入了一个系数,用于比较 s j − 1 , i s_{j-1, i} sj1,i s j , i − 1 s_{j, i-1} sj,i1 的重要程度。
λ j , i = σ ( W 5 x j , i + U 5 s j − 1 , i + V 5 s j , i − 1 ) \lambda_{j, i} = \sigma(W_5x_{j, i} + U_5s_{j-1, i} + V_5s_{j, i-1}) λj,i=σ(W5xj,i+U5sj1,i+V5sj,i1)
新状态
c j , i = f j , i ∘ [ λ j , i ∘ c j − 1 , i + ( 1 − λ j , i ) ∘ c j , i − 1 ] + c ^ j , i ∘ i j , i c_{j, i} = f_{j, i} \circ [\lambda_{j, i} \circ c_{j-1, i} + (1 - \lambda_{j, i}) \circ c_{j, i-1}] + \hat{c}_{j, i} \circ i_{j, i} cj,i=fj,i[λj,icj1,i+(1λj,i)cj,i1]+c^j,iij,i
输出
s j , i = g ( c j , i ∘ o j , i ) s_{j, i} = g(c_{j, i} \circ o_{j, i}) sj,i=g(cj,ioj,i)

Reference

[1] Bahar, P. , C. Brix , and H. Ney . “Towards Two-Dimensional Sequence to Sequence Model in Neural Machine Translation.” (2018).
[2] Voigtlaender, P. , P. Doetsch , and H. Ney . “Handwriting Recognition with Large Multidimensional Long Short-Term Memory Recurrent Neural Networks.” 2016 15th International Conference on Frontiers in Handwriting Recognition (ICFHR) IEEE, 2017.

### 2D CNN-LSTM 架构原理 2D CNN-LSTM 结合了二维卷积神经网络 (CNN) 和长短期记忆网络 (LSTM),旨在处理具有时空特性的数据集。这种架构特别适用于视频分析、动作识别等领域,在这些领域中,每一帧图像的空间结构和时间上的变化都非常重要。 #### 卷积层的作用 在2D CNN-LSTM 中,先通过一系列的2D卷积操作来自动提取输入数据中的空间特征[^1]。对于视频数据而言,这意味着可以从每一张图片中抽取出有意义的信息片段,比如物体边缘、纹理或其他视觉模式。 #### LSTM 层的功能 随后,经过编码后的特征图被送入到LSTM单元里去捕捉时间维度上的动态特性。由于LSTM具备记忆功能,因此非常适合用来理解连续帧之间的关联性并做出相应的预测或分类决策[^3]。 --- ### 实现方法 为了构建一个有效的2D CNN-LSTM模型,通常会遵循以下设计原则: - **输入准备**:将原始视频剪辑转换成固定长度的时间序列样本集合,其中每个样本由若干连续帧组成。 - **搭建框架**:采用Keras等高级API快速定义网络拓扑结构。具体来说就是堆叠多个Conv2D层作为前端处理器负责特征抽取工作;紧接着连接几层Bidirectional(LSTM())以增强对双向上下文的理解能力[^4]。 ```python from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, TimeDistributed, Bidirectional, LSTM, Dense model = Sequential([ # Space feature extraction with CNNs TimeDistributed(Conv2D(64, kernel_size=(3, 3), activation='relu'), input_shape=(None, img_height, img_width, channels)), TimeDistributed(MaxPooling2D(pool_size=(2, 2))), # Temporal modeling using LSTMs Bidirectional(LSTM(units=100, return_sequences=True)), ]) # Add output layer according to task requirements if classification_task: model.add(Dense(num_classes, activation="softmax")) else: pass # Define regression head accordingly ``` 上述代码展示了如何创建一个基础版本的2DCNN-LSTM模型。这里`TimeDistributed()`允许我们将标准的2D卷积应用于每一个时间步的数据上,而不仅仅是单张静态图像。之后再接上一层或多层双向LSTM来进行更深层次的学习。 --- ### 应用场景 2D CNN-LSTM广泛应用于各种涉及时间和空间双重属性的任务当中,例如但不限于以下几个方面: - **行为/活动识别**:通过对一段视频流内人物的动作进行实时监测与解析,可用于智能家居监控系统或是体育赛事转播中的精彩瞬间抓取等功能; - **医疗影像诊断辅助工具开发**:帮助医生更快捷准确地定位病变部位及其发展趋势评估; - **自动驾驶车辆环境感知模块建设**:提高汽车对外界路况变化响应速度的同时也增强了安全性保障措施的有效实施可能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值