了解我的 LSTM 模型的结构

问题描述 投票:0回答:1

我正在尝试解决以下问题:

  1. 我有来自多个设备的时间序列数据。
  2. 每台设备录音长度为3000。
  3. 捕获的每个数据点都有 4 个测量值。

因此,我的数据是这样的:

(number of device recordings, 3000, 4)

我正在尝试生成一个长度为 3000 的向量,其中每个数据点都是 3 个标签 (y1, y2, y3) 之一,所以我想要的输出暗淡是(设备记录数,3000, 1)。我已经标记了用于训练的数据。

我正在尝试使用 LSTM 模型来实现此目的,因为“沿时间序列数据移动时进行分类”似乎是 RNN 类型的问题。

我的网络设置如下:

model = Sequential()
model.add(LSTM(3, input_shape=(3000, 4), return_sequences=True))
model.add(LSTM(3, activation = 'softmax', return_sequences=True))

model.summary()

总结如下:

Model: "sequential_23"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
lstm_29 (LSTM)               (None, 3000, 3)           96        
_________________________________________________________________
lstm_30 (LSTM)               (None, 3000, 3)           84        
=================================================================
Total params: 180
Trainable params: 180
Non-trainable params: 0
_________________________________________________________________

在输出空间中一切看起来都很好,因为我可以使用每个单元的结果来确定我的三个类别中的哪一个属于该特定时间步(我认为)。

但我只有 180 个可训练参数,所以我猜我做的事情非常错误。

问题:

  1. 有人可以帮助我理解为什么我的可训练参数这么少吗?
  2. 我是否误解了如何设置这个 LSTM?
  3. 我只是无忧无虑吗?
  4. 这 3 个单元是否意味着我只有 3 个 LSTM“块”?
  5. 而且它只能回顾 3 个观察结果?
python tensorflow keras lstm recurrent-neural-network
1个回答
4
投票

从简单化的角度来看,您可以将

LSTM
层视为具有内存的增强
Dense
层(从而能够高效地处理序列)。因此,“单元”的概念对于两者来说也是相同的:这些层的神经元特征单元的数量,或者换句话说,这些层可以从输入中提取的独特特征的数量。

因此,当您将

LSTM
层的单元数指定为 3 时,或多或少意味着该层只能从输入时间步中提取 3 个独特特征(请注意,单元数与输入序列的长度,即无论单元数或输入序列的长度是多少,整个输入序列都将由
LSTM
层处理)。

通常,这可能不是最优的(不过,这实际上取决于您正在处理的特定问题和数据集的难度;即,对于您的问题/数据集来说,也许 3 个单位就足够了,您应该通过实验来找出答案) 。因此,通常会选择较高的单元数(常见选择:32、64、128、256),并且分类任务也会委托给专用的

Dense
层(或有时称为“softmax 层”)模型的顶部。

例如,考虑到您的问题的描述,具有 3 个堆叠的

LSTM
层和顶部的
Dense
分类层的模型可能如下所示:

model = Sequential()
model.add(LSTM(64, return_sequences=True, input_shape=(3000, 4)))
model.add(LSTM(64, return_sequences=True))
model.add(LSTM(32, return_sequences=True))
model.add(Dense(3, activation = 'softmax'))
© www.soinside.com 2019 - 2024. All rights reserved.