我正在考虑将标准化的原始信号作为输入到网络,是这种良好的方法吗?
是这是一个很好的方法。深度学习算法实际上是非常标准的,使其输入的输入归一化或重新定义。
这通常可以帮助您的模型更快,因为现在您在较小的范围内(即:[-1,1])而不是来自原始输入的更大的未归一成分范围(例如[0,1000])。它还可以帮助您获得更好的,更精确的结果,因为它有助于解决像消失的梯度等问题,也可以适应现代激活和优化器功能。
我还需要了解LSTM的训练输入形状,因为ECG信号是可变长度(9000到18000个样本),并且通常对Classifier需要固定变量输入。如何处理LSTM的这种输入类型。
这个部分非常重要。您是正确的, LSTM希望接收具有固定形状的输入,您预先知道(实际上,任何深度学习层都期望固定的形状输入)。这也在@ 987654321上解释在他们说的经常性层上:
输入形状
3d带 shape(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网络的结构,用于这种冗长的输入以及我应该使用多少层。
这个真的很广泛,没有一个独特的答案。这取决于您的问题的性质,并确定这些参数先验 em>并不是那么简单。
我建议你做的是以简单的模型开始,然后逐步添加图层和块(神经元),直到您对结果感到满意。
首先尝试一个隐藏的图层,培训和测试您的模型并检查您的性能。然后,您可以添加更多块,看看您的性能是否有所改善。您还可以添加更多的图层并在满意之前检查相同。
这是创建深度学习模型的好方法,因为您将在将网络保持尽可能瘦的同时到达您想要的结果,从而有助于您的执行时间和复杂性。祝你的编码好运,希望你找到这个有用的。