Keras 如何正确设置LSTM图层的输入形状?

Keras 如何正确设置LSTM图层的输入形状?,keras,lstm,recurrent-neural-network,Keras,Lstm,Recurrent Neural Network,我有一个如下形状的输入数据:5395,69,1 我的输入形状应为: 69,1或 1,69 在LSTM层中有69个神经元,我得到第一个输入的19'596个参数进行训练,第二个 38'364个参数,它们不是分别作为输入1和69个值的get结果吗?我的问题是,我应该输入1,因为我有1个功能,还是69,因为我有69个时间步,以及为什么?LSTM层的输入具有num_时间步、num_功能的形状,因此: 如果每个输入样本有69个时间步,其中每个时间步由1个特征值组成,则输入形状将为69,1 如果每个输入样本是

我有一个如下形状的输入数据:5395,69,1

我的输入形状应为:

69,1或

1,69

在LSTM层中有69个神经元,我得到第一个输入的19'596个参数进行训练,第二个 38'364个参数,它们不是分别作为输入1和69个值的get结果吗?我的问题是,我应该输入1,因为我有1个功能,还是69,因为我有69个时间步,以及为什么?

LSTM层的输入具有num_时间步、num_功能的形状,因此:

如果每个输入样本有69个时间步,其中每个时间步由1个特征值组成,则输入形状将为69,1

如果每个输入样本是69个特征值的单个时间步,那么使用RNN层可能毫无意义,因为基本上输入不是序列。相反,最好将输入样本展平,即重塑1、69到69,然后使用其他连接架构/层,例如密集


作为旁注,我可能错了,但我有一种感觉,你在混合输入时间步的数量和LSTM层的单位/神经元的数量。具体来说,我指的是你的这句话:LSTM层有69个神经元。。。。这两个数字彼此无关,也不一定是同一个数字。LSTM层中单位/神经元的数量决定了该层的表征能力,应根据实验/经验进行相应设置。如果您感兴趣,请进一步解释这一点。

解释得很好。由于您的旁注,我将LSTM层的神经元数量设置为时间步长,因为我正在处理一个简单的示例,在该示例中,我这样做是为了更快地进行实验,以明确这方面需要更多的工作。现在由于您在链接中的进一步评论,当单元数量为3时,这基本上意味着每个输入时间步仅提取3个特征,即每个输入时间步将由3个特征表示,并且这3个特征将被馈送到下一层。这是否意味着序列中的每个时间步将有3个特征,或者每个序列将有3个特征features@DavidDiaz在LSTM层中有3个单元,每个时间步将由该LSTM层表示为3值向量;然而您可以决定使用所有时间步的表示法,即通过将return_sequences=True参数传递给LSTM层,或者仅使用最后一个时间步表示法,即return_sequences=False,这是默认情况。如果我使用LSTM和密集层作为传递给LSTM return_sequences=T的结构,我应该使用更平坦的层吗?为什么呢?@davidiaz这取决于你想要实现什么,即应用和问题表述。例如,如果您希望为每个时间步预测某些内容,而不仅仅是对整个序列的单个预测,那么使用return_sequences=True和稠密层是有意义的。正如我所说的,根据场景的不同,模型的架构可能会有所不同。