在Keras中,如果要添加10个单位的LSTM图层,请使用model.add(LSTM(10))
。我听说号码10
被称为隐藏单元的数量here和输出单元的数量(Keras码here的863行)。Keras LSTM:第一个参数
我的问题是,这两件事情是一样的吗?输出的维度与隐藏单位的数量相同吗?我已阅读了一些教程(如this one和this one),但他们都没有明确说明。
在Keras中,如果要添加10个单位的LSTM图层,请使用model.add(LSTM(10))
。我听说号码10
被称为隐藏单元的数量here和输出单元的数量(Keras码here的863行)。Keras LSTM:第一个参数
我的问题是,这两件事情是一样的吗?输出的维度与隐藏单位的数量相同吗?我已阅读了一些教程(如this one和this one),但他们都没有明确说明。
为了得到一个很好的直觉,为什么这是有道理的。请记住,LSTM的工作是将一个序列编码成一个向量(可能是总体过度简化,但它是我们需要的)。由hidden_units
指定矢量的大小,output
是:
seq vector RNN weights
(1 X input_dim) * (input_dim X hidden_units),
其具有1×hidden_units(代表你的输入序列进行编码的行向量)。因此,这种情况下的名称被同义使用。
当然,RNN需要多于一个乘法,并且keras实现RNN作为上述矩阵 - 矩阵乘法的序列,而不是向量矩阵。
隐藏单元的数量是不一样作为输出单元的数量。
数字10
控制输出隐藏状态的尺寸(LSTM构造方法的源代码可以找到here.10指定units
参数)。在教程的一个已连接于(colah's blog),所述单元的参数将控制载体ħ吨-1,ħ吨,和ħ吨+ 1的尺寸:RNN image 。
如果要控制网络中LSTM块的数量,则需要将其指定为LSTM层的输入。输入图层的形状是(nb_samples,timesteps,input_dim)Keras documentation。 timesteps
控制您的网络包含多少个LSTM块。再次参考colah博客上的教程RNN image,时间步将控制网络包含的绿色块的数量。
这似乎暗示隐藏单元的数量是输出单元的数量,但我认为这些是两个独立的东西--LSTM可以按照您的说法将序列编码为另一个序列,但它也可以从一个序列到一个实数,不是吗?所以隐藏的表示不一定与输出相同。 – StatsSorceress