keras中LSTM的units是啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keras中LSTM的units是啥意思相关的知识,希望对你有一定的参考价值。
参考技术A 参考 Keras关于LSTM的units参数,还是不理解?参考文章中说的很明白了,这里我只是再单纯的写一下笔记。
假设,对于一个一层神经网络,此网络层有64个units,即隐藏神经元个数是64个,激活函数为sigmoid。输入X是一个128维的向量X,分类的话,有10个类别。问这个神经网络共有多少个参数?
X.shape() = (128,1),隐藏神经元个数是64,为了能够让W 1 X相乘,那么第一层就要有一个W跟一个b 1 。其中W 1 .shape() = (64,128),,b 1 .shape() = (64,1)
于是再第一层sigmoid激活函数以后以后,得到一个(64,1)的向量,输出有10个类别,也可以认为输出层有10个隐藏单元个数,所以W 1 .shape()=(10,64),,b 2 .shape() = (10,1).
也就是说,第一层运算是sigmoid(W 1 X+b 1 )=A,
第二层运算是softmax(W 2 A+b 2 )。所以共有,(64x128+64)+()10x64+10)个参数。
对,就是这么简单,就是这层的隐藏神经单元个数。
假设units = 64
根据上图,我们可以计算,假设a向量是128维向量,x向量是28维向量,那么二者concat以后就是156维向量,为了能相乘,那么W f 就应该是(64,156),同理其余三个框,也应该是同样的shape。于是,在第一层就有参数64x156x4 + 64x4个。
若是把cell外面的参数也算进去,那么假设有10个类,那么对于最终的shape为(64,1)的输出a t ,还要有一个shape为(10,64)的W跟一个shape为(10,1)的b。
在较新版本的 Keras 中,LSTM 等效于 return_sequence = True
【中文标题】在较新版本的 Keras 中,LSTM 等效于 return_sequence = True【英文标题】:LSTM equivalent of return_sequence = True in newer version of Keras 【发布时间】:2018-05-26 17:48:27 【问题描述】:我使用 tensorflow 作为 keras 的后端。在 LSTM 的一个教程中,它说
regressor.add(LSTM(units = 50, return_sequence = True, input_shape = Xtrain))
看看它说的新 LSTM 语法
keras.layers.LSTM(units, activation='tanh', recurrent_activation='hard_sigmoid',
use_bias=True, kernel_initializer='glorot_uniform',
recurrent_initializer='orthogonal', bias_initializer='zeros',
unit_forget_bias=True, kernel_regularizer=None,
recurrent_regularizer=None, bias_regularizer=None,
activity_regularizer=None, kernel_constraint=None,
recurrent_constraint=None, bias_constraint=None, dropout=0.0,
recurrent_dropout=0.0, implementation=1, return_sequences=False,
return_state=False, go_backwards=False,
stateful=False, unroll=False)
有人可以在较新版本中提供与上述代码等效的代码吗?
【问题讨论】:
【参考方案1】:return_sequence
是一个拼写错误的参数,它应该是return_sequences
(注意尾随的s)。这个论点在最新版本中仍然存在,甚至在master 中。
input_shape
也支持作为 kw 参数(同义词:input_dim
)。
所以只需使用
LSTM(units = 50, return_sequences = True, input_shape = Xtrain)
【讨论】:
以上是关于keras中LSTM的units是啥意思的主要内容,如果未能解决你的问题,请参考以下文章