Keras LSTM:第一个参数

Keras LSTM:第一个参数,keras,Keras,在Keras中,如果要添加一个包含10个单元的LSTM层,可以使用model.add(LSTM(10))。我听说数字10指的是隐藏单元的数量和输出单元的数量(Keras代码第863行) 我的问题是,这两件事是一样的吗?输出的维度是否与隐藏单位的数量相同?我读过一些教程(如和),但没有一个明确说明这一点。以获得一个很好的直觉来解释为什么这是有意义的。请记住,LSTM的工作是将序列编码为向量(可能是一种严重的过度简化,但这是我们所需要的)。该向量的大小由隐藏单元指定,输出为: seq vect

在Keras中,如果要添加一个包含10个单元的LSTM层,可以使用
model.add(LSTM(10))
。我听说数字
10
指的是隐藏单元的数量和输出单元的数量(Keras代码第863行)


我的问题是,这两件事是一样的吗?输出的维度是否与隐藏单位的数量相同?我读过一些教程(如和),但没有一个明确说明这一点。

以获得一个很好的直觉来解释为什么这是有意义的。请记住,LSTM的工作是将序列编码为向量(可能是一种严重的过度简化,但这是我们所需要的)。该向量的大小由
隐藏单元指定,
输出为:

   seq vector            RNN weights
(1 X input_dim) * (input_dim X hidden_units),
它有1 X隐藏单位(表示输入序列编码的行向量)。因此,本例中的名称是同义的


当然,RNN需要不止一次乘法,keras将RNN实现为一系列矩阵乘法,而不是上面所示的向量矩阵。

以获得一个好的直觉来解释为什么这是有意义的。请记住,LSTM的工作是将序列编码为向量(可能是一种严重的过度简化,但这是我们所需要的)。该向量的大小由
隐藏单元指定,
输出为:

   seq vector            RNN weights
(1 X input_dim) * (input_dim X hidden_units),
它有1 X隐藏单位(表示输入序列编码的行向量)。因此,本例中的名称是同义的


当然,RNN需要不止一次乘法,keras将RNN实现为矩阵乘法序列,而不是上面所示的向量矩阵。

隐藏单元的数量与输出单元的数量不同

数字
10
控制输出隐藏状态的维度(可以找到LSTM构造函数方法的源代码。10指定
units
参数)。在您链接到()的其中一个教程中,units参数将控制向量ht-1htht+1


如果要控制网络中LSTM块的数量,需要将其指定为LSTM层的输入。层的输入形状为(nb_采样、时间步、输入_dim)
timesteps
控制网络包含多少LSTM块。再次参考colah博客上的教程,在中,timesteps将控制网络包含的绿色块数。

隐藏单元数与输出单元数不同

数字
10
控制输出隐藏状态的维度(可以找到LSTM构造函数方法的源代码。10指定
units
参数)。在您链接到()的其中一个教程中,units参数将控制向量ht-1htht+1


如果要控制网络中LSTM块的数量,需要将其指定为LSTM层的输入。层的输入形状为(nb_采样、时间步、输入_dim)
timesteps
控制网络包含多少LSTM块。再次参考colah博客上的教程,在中,timesteps将控制网络包含的绿色块的数量。

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


h是给定时间步长的输出,单元状态c受元素相乘导致的隐藏大小限制。为计算门而添加的项要求输入核W和循环核U映射到同一维度。Keras LSTM也是如此,这就是为什么您只提供单个
单元
参数的原因。

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


h是给定时间步长的输出,单元状态c受元素相乘导致的隐藏大小限制。为计算门而添加的项要求输入核W和循环核U映射到同一维度。Keras LSTM也是如此,这就是为什么您只提供单个
单位
参数的原因。

这似乎意味着隐藏单位的数量就是输出单位的数量,但我认为这是两个不同的东西-LSTM可以将一个序列编码为另一个序列,正如您所说,但它也可以从序列变成实数,不是吗?所以隐藏表示不一定与输出相同。这似乎意味着隐藏单位的数量就是输出单位的数量,但我认为这是两个不同的东西——正如你所说,LSTM可以将一个序列编码为另一个序列,但它也可以从一个序列变为一个实数,不是吗?因此,隐藏表示不一定与输出相同。对于LSTM,h也是输出,因此隐藏单位与输出单位数相同。情况并非总是如此。虽然LSTM可以将一个序列编码为另一个序列,但也可以使用LSTM将一个序列编码为单个分类输出。例如,您可以使用LSTM来表示一个句子,输出将表示该特定句子的情感。是的,最终输出将是最终LSTM单元格图表中的向量h。方程中的h就是输出