在FPGA上运行LSTM神经网络LSTM简介传统的RNN由一个三层的网络:输入层
i
t
,隐藏层
h
t
,输出层
y
t
;其中
h
t
的信息作用到下一时刻的输入,这样的结构简单的模仿了人脑的记忆功能,图3是其拓扑图:
只有一个隐藏层方程:
h
t
=tanh(W
x
x
t
+W
h
h
t
+b)
其中
W
x
和
W
h
分别是输入和隐藏层的权重,
b
是偏置。
tanh 是激活函数:
tanh(x)=e
x
−e
−x
x
x
+x
−x
LSTM [9]是RNN(递归神经网络)的一种,在处理时序数据得到了最广泛的应用,它由门控制信息一共有三个个门:输入门
i
t
,遗忘门
f
t
,输出门
o
t
,另外还有隐藏层
h
t
和记忆细胞
c
t
。图4是其拓扑图:
输入门控制了某一时刻的输入;遗忘门通过作用到上一时刻记忆细胞上,控制了上一时刻的数据流要流多少进入下一时刻;记忆细胞是由上一时刻的输入和这一时刻的候选输入共同决定的;输出门作用到记忆细胞上,决定了这一时刻的隐藏层信息,并且送到下一层神经网络上。全部方程如下:
i
t
=σ
(W
xi
x
t
+W
hi
h
t
+b
i
)
f
t
=σ
(W
xf
x
t
+W
hf
h
t
+b
f
)
o
t
=σ
(W
xo
x
t
+W
ho
h
t
+b
o
)
c
^
=tanh(W
xc
x
t
+W
hc
h
t
+b
c
)
c
t
=f
t
c
t−1
+i
t
c
^
h
t
=o
t
tanh(c
t
)
其中
W
代表各自的权重,
b
代表各自的偏置,
σ
是logistic sigmoid 函数:
σ
(x)=1
1+e
−x
|