Keras LSTM:第一个论点

时间:2017-04-10 14:50:49

标签: keras

在Keras中,如果要添加包含10个单位的LSTM图层,请使用model.add(LSTM(10))。我听说过这个数字10被称为隐藏单位数here和输出单位数(Keras代码here的第863行)。

我的问题是,这两件事情是一样的吗?输出的维数是否与隐藏单位的数量相同?我已经阅读了一些教程(例如this onethis one),但没有一个明确说明这一点。

3 个答案:

答案 0 :(得分:0)

为了理解为什么这是有道理的。请记住,LSTM的工作是将序列编码为一个向量(可能是Gross过度简化,但我们只需要它)。该向量的大小由hidden_units指定,output为:

   seq vector            RNN weights
(1 X input_dim) * (input_dim X hidden_units),

有1 X hidden_​​units(表示输入序列编码的行向量)。因此,这种情况下的名称同义使用。

当然,RNN需要多个乘法,而keras将RNN实现为矩阵乘法的序列,而不是上面所示的矢量矩阵。

答案 1 :(得分:0)

隐藏单位的数量与输出单位的数量不一样

数字10控制输出隐藏状态的维度(可以找到LSTM构造函数方法的源代码here。10指定units参数)。在您链接到(colah's blog)的教程之一中,单位参数将控制向量的维度 h t-1 h t h t + 1 RNN image

如果要控制网络中LSTM块的数量,则需要将其指定为LSTM层的输入。图层的输入形状为(nb_samples,timesteps,input_dim)Keras documentationtimesteps控制网络包含的LSTM块数。再次参考colah博客上的教程,在RNN image中,时间步长将控制网络包含的绿色块数。

答案 2 :(得分:0)

答案似乎是指多层感知器(MLP),其中隐藏层可以具有不同的大小并且通常是。对于LSTM,隐藏尺寸与构造的输出尺寸相同enter image description here

h 是给定时间步长的输出,由于元素方式的乘法,单元格状态 c 受隐藏大小的约束。添加用于计算门的项将要求输入内核 W 和重复内核 U 映射到相同的维度。 Keras LSTM也是如此,这就是为什么你只提供单units个参数。