RNN(Recurrent Neural Network)是一类用于处理序列数据的神经网络。神经网络包含输入层、隐含层、输出层,通过激活函数控制输出,层与层之间通过权值连接,在标准的RNN结构中,隐层的神经元之间也是带有权值的。也就是说,随着序列的不断推进,前面的隐层将会影响后面的隐层。
具体结构如下图,本文不再赘述。
这里主要写一下RNN中参数的计算:
![](https://i-blog.csdnimg.cn/blog_migrate/62e81905e73ab326b1fc4c2e9f474846.png)
再加上偏执值b,即可得到模型中参数总和。其中,h为隐含层单元,x为输入,y为输出。
例如,在手写字体识别中,用64层的隐含层网络(h),28维的输入(x),10个分类的输出(y),这里的参数总和就是:
![](https://i-blog.csdnimg.cn/blog_migrate/d2cbc77dbd716da7adbec2a7b9f96535.png)
最后加64加10即为隐含层和输出层的偏执值。
LSTM
LSTM是对RNN模型长期依赖的改进,通过三个门结构来实现信息的保护和控制。这三个门分别为输入门、遗忘门和输出门。
所以LSTM隐藏层参数是RNN的四倍,所以此LSTM网络的参数个数为:
![](https://i-blog.csdnimg.cn/blog_migrate/c20b02e29fd649a2105f4e87e1d80e4e.png)
同样再加上偏执值。即为参数的总值。理解LSTM的原理就不难理解这个公式。
同样,在手写字体识别中,用64层的隐含层网络(h),28维的输入(x),10个分类的输出(y),这里的参数总和就是:
![](https://i-blog.csdnimg.cn/blog_migrate/a8d3ba31964e30ca15c41997ae709f19.png)
以上即为RNN和LSTM的参数总和计算。