(Caffe)LSTM层分析

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/mounty_fsc/article/details/53114698

本文内容:

  • 本文描述了Caffe中实现LSTM网络的思路以及LSTM网络层的接口使用方法。
  • 本文描述了论文《Long-term recurrent convolutional networks for visual recognition and description》的算法实验
  • 本文不做LSTM原理介绍,不从数学角度推导反向传播,不进行Caffe详细代码分析
  • 本文基于对Caffe的代码及使用有一定的了解

涉及LSTM算法原理的部分可以参考其他文章见如 理解 LSTM 网络等。

1 简介及相关论文

LSTM为处理具有时间维度以及类似时间维度信息的RNN深度神经网络的一种改进模型,参考文献[1,2],在不少问题上能弥补CNN只能处理空间维度信息的缺陷。不同于CNN的深度体现在网络层数及参数规模上,RNN/LSTM的深度主要体现在时间节点上的深度。

Caffe中的LSTM相关代码由Jeff Donahue基于文献[1]的实验Merge而来。文献[3]中有三个关于使用LSTM的实验:(1)行为识别(介绍及代码) (2)图像描述(图像标注,介绍及代码) (3)视频描述。 三个实验难度依次递增。其中前两个实验代码开源。

论文图片

本文主要从文献[3]第一个实验出发,介绍LSTM的接口的使用。

2 行为识别实验

实验使用UCF-101 数据集。行为识别实验目的为给定一视频片段,判断出视频片段人物的行为。

2.1 算法介绍

如1.1图所示,该实验的方法为:

  1. 首先提取视频的部分帧
  2. 其次根据标注的帧预训练一个图片分类网络(基于AlexNet)
  3. 训练LSTM模型
    • 预训练的共享的CNN提取一段视频序列(时间上相关的帧)的CNN特征
    • 以上特征输入至LSTM单元
    • 对每个LSTM单元的输出取平均得到最后的检测结果

2.2 网络模型

Caffe训练网络的网络结果如下所示:

2.3相关术语及变量

  • NN

3 Caffe 相关类及接口

3.1 相关类

主要类说明见官方文档 RecurrentLayerLSTMLayerLSTMUnitLayer

其中:

  • RecurrentLayer为一个抽象类,定义了处理时间序列的循环神经网络的通用行为
  • LSTMLayer及RNNLayer为RecurrentLayer的具体实现,后者为RNN的一般形式
  • LSTMUnitLayer在LSTMLayer内部使用,处理了部分核心计算

3.2 接口说明

由官方文档可知,一个 RecurrentLayer/LSTMLayer 的输入为三个Blob:

  • 一. 时间变化数据x(T×N×...)x,(T×N×...).

4 LSTMLayer

Caffe中通过展开LSTMLayer网络层,得到另一个网络从而实现LSTM,即一个LSTMLayer即为一个LSTM网络。以实验中测试网络为例,及T=16,N=3T=16,N=3,CNN特征维度为4096,LSTM特征维度为256,来介绍展开网络的各网络层及数据流动情况。

4.1 实现流程

如图所示:

  • 方框为网络层,文字为网络层类型。
  • 椭圆为数据Blob。
  • Blob cici

4.2 公式描述

论文图片

计算公式如下:

it:=sigmoid[Whiht1+Wxixt+bi]ft:=sigmoid[Whfht1+Wxfxt+bf]ot:=sigmoid[Whoht1+Wxoxt+bo]gt:=tanh[Whght1+Wxgxt+bg]ct:=(ft.ct1)+(it.gt)ht:=ot.tanh[ct]it:=sigmoid[Whi∗ht−1+Wxi∗xt+bi]ft:=sigmoid[Whf∗ht−1+Wxf∗xt+bf]ot:=sigmoid[Who∗ht−1+Wxo∗xt+bo]gt:=tanh[Whg∗ht−1+Wxg∗xt+bg]ct:=(ft.∗ct−1)+(it.∗gt)ht:=ot.∗tanh[ct]

注意:

  • 联系前两张图与以上公式,可以描述Caffe的LSTM实现过程
  • 以上公式的[Wxi,Wxf,Wxo,Wxg][Wxi,Wxf,Wxo,Wxg]

5 总结

一个RNN/LSTM网络层可以通过从时间维度上进行展开来进行理解( 理解 LSTM 网络)。同样的,Caffe在实现LSTM时也是通过展开LSTM层来实现,等价于一个LSTM 网络层 即为一个LSTM 网络

6 图像描述实验

实验使用coco caption数据集。给定一张图片,其目标为产生一段语句对该图片进行描述。

6.1 语言模型小实验

这部分实验属于图像描述的基础实验。图像描述在该实验基础上拓展而来,且相对图像描述来说更为简单,因而先介绍该小实验。

语言模型实验为训练一个语言模型,使其能够完成:
(1)给定一个词,如some,该模型能产生下人类语言中能搭配该词的下一个次,如some people, some apple。
(2)在(1)的基础上,该模型能产生一个完整的语句。

链接处为作者给出的该模型的实例与教程。

6.1.1 训练

该模型的训练过程与行为检测的训练过程类似。如图所示,LSTM层的输入为两个Blob:
(1)训练数据Blob,维度为T×N×1000T×N×1000
这里写图片描述

6.1.2 推理

该模型的产生一个完整句子的过程推理如下图所示。

说明:
1. 生成一个完整的句子需要反复多次调用该语言模型,即前一次的结果作为下一次的输入,直至最后的输出为语句终止符EOS
2. 推理时的输入LSTM维度为1×N×10001×N×1000

6.2 使用静态输入xstaticxstatic

不同于行为识别实验以及语言模型小实验,图像描述实验的LSTM层使用了第三个输入参数,静态输入xstaticxstaticLSTM层的训练模型如下图所示:

注意:

  1. 第一个输入Blob同语言模型,维度为(20,100,1000)(20,100,1000)

6.3 图像描述实验

图像描述实验是在语言描述实验的基础上,增加图像的CNN特征作为LSTM的静态输入特征。

文献[1]提出三个组合方式,如下图所示:

1)第一种为一层LSTM,为最朴素的方法。
2)第二种为两层LSTM,静态输入在第一个LSTM层。
3)第三种为两层LSTM,静态输入在第二个LSTM层。最后取的是该种方法。

参考文献

[1] Hochreiter, Sepp, and Schmidhuber, Jürgen. “Long short-term memory.” Neural Computation 9, no. 8 (1997): 1735-1780.

[2] Zaremba, Wojciech, and Sutskever, Ilya. “Learning to execute.” arXiv preprint arXiv:1410.4615 (2014).

[3] Donahue, J., et al. “Long-term recurrent convolutional networks for visual recognition and description.” Computer Vision and Pattern Recognition IEEE, 2015.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值