对LSTM层的参数units的理解
model = Sequential()
model.add(LSTM(32, batch_input_shape=(None, 10, 64)))网络规划与设计
以上LSTM的第⼀个参数units=32,指的并不是⼀层LSTM有32个LSTM单元。 在很多LSTM的框图中,我们都会将LSTM单元按照时间顺序排列开来,句⼦的长度是多少我们就会画出多少个LSTM单元。这也是给我们带来误解的地⽅。实际上⼀层LSTM的每个‘单元’是共享参数的,所以并没有所谓的那么多个LSTM单元,我们可以理解为它们其实是同⼀个LSTM单元,只有⼀个单元的参数量。
这⾥我们设置的units=32的⼤⼩,其实代表得是LSTM单元内的隐藏层的尺⼨。
武豫鲁
对于LSTM⽽⾔,每个单元有3个门,对应了4个激活函数(3个sigmoid,⼀个tanh)。也就是说有4个神经元数量为32的前馈⽹络层。
星火计划对于LSTM的计算过程,我们这⾥举⼀个简单的例⼦: 辽河华宇网
iee顿悟成佛
假如我们样本的每⼀句话包含5个单词,每个单词⽤16维的词向量表⽰。对于LSTM(units=32),我们可以把LSTM内部的计算过程计算过程简化为: Y=X1×16W16×32,这⾥X为(1,16)的向量,W为(16,32)的矩阵,所以运⽤矩阵乘法,将16维的X转化为32维的向量。
如下图所⽰:
我们可以简单的将LSTM内部的各种计算想象成全连接的之间的矩阵计算。
所以units代表的不是⼀层单元的个数,⽽是单元内部隐藏层的⼤⼩。