关于LSTM的神经元数及参数个数

先上经典的LSTM结构

1、首先 tf.nn.rnn_cell.BasicLSTMCell(num_units=n)中的参数num_units指的是什么?

上图中一个浅绿色大框框起来的我们暂时叫一个LSTM_Cell,我们可以看到一个LSTM_Cell中有四个基本的神经网络Cell(即四个黄色的小框),每个小框可以说存放的是个向量,且四个框中向量长度相同,这个相同的向量长度便是num_units

2、LSTM中的参数到底有多少个?

这里假设输入向量(即xt)的长度是75,num_units=125

我们详细看张量在LSTM_Cell中是如何流动的

1)遗忘门(最左边的黄色框)

它接收的是上一时刻的隐藏状态h_{t-1}和当前时刻的输入x_{t},经过矩阵W_{f}得到另外一个向量才经过\sigma

W_{f}=\begin{bmatrix} & & \\ & & \\ & & \end{bmatrix}_{125*(125+75)}+\begin{bmatrix} \\ \\ \end{bmatrix}_{125*1}

所以这个过程的参数个数是125*(125+75)+125

2)输入门(第二个黄色框)

这个过程决定保留输入的哪些信息,由两步构成,首先是sigma层决定我们要更新哪些值,接下来tanh层对输入做一次加工(有点归一化的味道),二者得到的结果相乘后去更新LSTM_Cell的状态。这里经过了相当于两次矩阵相乘再加偏置的运算,所以这个过程的参数个数是2*(125*(125+75)+125)

3)输出门(最后一个黄色框)

可以看到隐藏状态h_{t}也有两部分组成。此过程的参数个数也是125*(125+75)+125

4)LSTM_Cell的状态更新

这一部分,没有新的参数

总之,整个过程的参数个数是:(125*(125+75)+125)*4

更一般地,若输入的长度=m,隐藏层的长度=n,则一个LSTM层的参数个数是

(n*(n+m)+n)*4

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值