在Keras中,如果要添加包含10个单位的LSTM图层,请使用model.add(LSTM(10))
。我听说过这个数字10
被称为隐藏单位数here和输出单位数(Keras代码here的第863行)。
我的问题是,这两件事情是一样的吗?输出的维数是否与隐藏单位的数量相同?我已经阅读了一些教程(例如this one和this one),但没有一个明确说明这一点。
答案 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 documentation。 timesteps
控制网络包含的LSTM块数。再次参考colah博客上的教程,在RNN image中,时间步长将控制网络包含的绿色块数。
答案 2 :(得分:0)