使用Keras在可变长度信号上使用LSTM进行多标记分类

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

我最近开始研究各种类别的ECG信号分类。它基本上是多标签分类任务(共4类)。我是Deep Learning,LSTM和Keras的新手,为什么我在一些事情上感到困惑。

  1. 我正在考虑将标准化的原始信号作为网络的输入,这是一个好方法吗?
  2. 我还需要了解LSTM的训练输入形状,因为ECG信号具有可变长度(9000到18000个样本),并且通常分类器需要固定变量输入。如何在LSTM的情况下处理这种类型的输入。
  3. 最后,对于如此冗长的输入应该是深LSTM网络的结构,以及我应该使用多少层。

谢谢你的时间。问候

python keras signal-processing lstm multilabel-classification
1个回答
0
投票

我正在考虑将标准化的原始信号作为网络的输入,这是一个好方法吗?

是的,这是一个很好的方法。实际上,深度学习算法非常标准地为您提供标准化或重新标准化的输入。

这通常有助于您的模型更快收敛,因为现在您在较小的范围内(即:[ - 1,1])而不是原始输入的较大的非标准化范围(比如[0,1000])。它还可以帮助您获得更好,更精确的结果,因为它有助于解决消失渐变等问题,并更好地适应现代激活和优化器功能。


我还需要了解LSTM的训练输入形状,因为ECG信号具有可变长度(9000到18000个样本),并且通常分类器需要固定变量输入。如何在LSTM的情况下处理这种类型的输入。

这部分非常重要。你是对的,LSTM期望接收具有固定形状的输入,你事先知道的(事实上,任何深度学习层都需要固定的形状输入)。这也在关于周期性层的keras docs中解释,他们说:

输入形状

具有形状的3D张量(batch_size,timesteps,input_dim)。

我们可以看到,它希望您的数据具有多个timesteps以及每个时间步长的维度(批量大小通常为1)。举例来说,假设您的输入数据包含以下元素:[[1,4],[2,3],[3,2],[4,1]]。然后,使用1的batch_size,数据的形状将是(1,4,2)。因为你有4个时间步长,每个有2个功能。

因此,您必须确保对数据进行预处理,使其具有固定的形状,然后传递给LSTM图层。这个你必须自己找到,因为你比我们更了解你的数据和问题。

也许你可以修复你从信号中获得的样本,丢弃一些并保持其他信号,使每个信号长度相同(如果你说你的信号在9k到18k之间,选择9000可能是合乎逻辑的选择,丢弃其他你的样本得到)。您甚至可以以一种可以从9000-18000的输入映射到固定大小的方式对数据进行其他转换。


最后,对于如此冗长的输入应该是深LSTM网络的结构,以及我应该使用多少层。

这个非常广泛,没有独特的答案。这将取决于您的问题的性质,并且先验地确定这些参数并不是那么简单。

我建议你做的是首先从一个简单的模型开始,然后逐步添加图层和块(神经元),直到你对结果满意为止。

首先尝试一个隐藏层,训练和测试您的模型并检查您的表现。然后,您可以添加更多块,并查看性能是否有所提高。您还可以添加更多图层并检查相同内容,直到您满意为止。

这是创建深度学习模型的好方法,因为您可以在保持网络尽可能精简的同时达到所需的结果,从而有助于您的执行时间和复杂性。祝您编码顺利,希望您觉得这很有用。

© www.soinside.com 2019 - 2024. All rights reserved.