我最近开始从事心电信号分类的工作,在不同的班级。它基本上是多标签分类任务(总计4类)。我对深度学习,LSTM和Keras都很陌生,这就是为什么我在一些事情上感到困惑的原因。
耽误您时间,实在对不起。问候
发布于 2018-01-02 17:22:44
我正在考虑把归一化的原始信号作为网络的输入,这是一个好方法吗?
是的,,这是一个很好的方法。实际上,对于深度学习算法来说,将您的输入标准化或重新标度是相当标准的。
这通常有助于您的模型更快地收敛,因为现在您处于较小的范围内(即:-1,1),而不是从原始输入(例如0,1000)中获得更大的未规范化范围。它还帮助您获得更好、更精确的结果,因为它有助于解决诸如消失梯度之类的问题,以及更好地适应现代激活和优化器功能。
由于心电信号的长度是可变的(从9000到18000个样本),通常分类器需要固定的变量输入,所以我也需要了解训练输入的形状。在LSTM情况下,我如何处理这种类型的输入。
这部分真的很重要。您是正确的,LSTM期望接收具有固定形状的输入,这是您事先知道的(实际上,任何深度学习层都需要固定的形状输入)。在关于递归层的角蛋白文档中也解释了这一点,他们说:
输入形状 具有形状的三维张量(batch_size,timesteps,input_dim)。
正如我们所看到的,它希望您的数据具有许多timesteps以及每个时间步骤上的维度(批处理大小通常为1)。为了举例说明,假设输入数据由如下的元素组成:[[1,4],[2,3],[3,2],[4,1]]。然后,使用batch_size为1,,数据的形状将是(1,4,2)。因为您有4个时间步骤,每个步骤都有两个特性。
因此,底线,,你必须确保你预处理你的数据,使它有一个固定的形状,然后你可以传递到你的LSTM层。,你将不得不自己找出,因为你比我们更了解你的数据和问题。
也许您可以修复从您的信号中获得的样本,丢弃一些,并保留其他信号,这样每个信号都具有相同的长度(如果您说您的信号在9k到18k之间,选择9000可能是合理的选择,丢弃来自其他信号的样本)。您甚至可以对您的数据进行一些其他的转换,您可以从9000到18000的输入映射到一个固定的大小。
最后,对于这种冗长的输入,应该使用什么结构的深层LSTM网络,以及我应该使用多少层。
这是一个非常广泛的,没有一个独特的答案。这将取决于问题的性质,而先验地确定这些参数并不是那么简单。
我建议您首先从一个简单的模型开始,然后递增地添加层和块(神经元),直到您对结果感到满意为止。
首先尝试一个隐藏层,训练和测试您的模型并检查您的性能。然后,您可以添加更多的块,看看性能是否有所提高。您也可以添加更多的层,并检查相同的,直到您满意。
这是一种创建深度学习模型的好方法,因为您将在保持网络尽可能精简的同时达到您想要的结果,这反过来有助于您的执行时间和复杂性。祝你的编码好运,希望你能找到有用的东西。
https://stackoverflow.com/questions/48063076
复制相似问题