在训练 LSTM NN 之前,我需要做哪些数据重新缩放预处理?

Posted

技术标签:

【中文标题】在训练 LSTM NN 之前,我需要做哪些数据重新缩放预处理?【英文标题】:What data rescaling preprocessing do I need to do before training an LSTM NN? 【发布时间】:2018-01-31 00:18:23 【问题描述】:

我正在尝试使用 keras 构建一个简单的单层 LSTM 神经网络,该网络具有 Dense() 输出层和一个神经元(用于回归)。

我知道我fit()模型时的训练数据必须重新调整。许多在线示例在 [0,1] 范围内重新调整输入和输出,其他在 [-1,1] 范围内。

对于像我这样的简单回归问题,重新调整输入和输出的正确选择是什么?为什么?我知道这与使用的激活函数有关,例如sigmoid 输出 [0,1] 内的值。

我看到你可以选择激活函数和循环激活。 keras 中LSTM() 上下文中的激活函数是如何实现的(例如,输入门有一个“sigmoid”)?

谢谢!

【问题讨论】:

你可能会在this site 上得到这个问题的答案,因为这不是一个特定于编程的问题,并且与 keras 直接无关 【参考方案1】:

对于缩放,我通常使用 Scikit-Learn 的 preprocessing.scale 函数。它给出了很好的结果。更深层次的解释should I normalize/standardize/rescale

对于 LSTM 层,建议使用“RELU”激活函数,它有助于解决梯度消失问题,请查看以下答案:advantages of RELU。对于第二层(最后一层)使用线性激活,因为你在做回归,如果你在做分类,那么使用“sigmoid”。

【讨论】:

以上是关于在训练 LSTM NN 之前,我需要做哪些数据重新缩放预处理?的主要内容,如果未能解决你的问题,请参考以下文章

使用 nn.CrossEntropyLoss() 训练的网络的测试和置信度得分

训练 LSTM 时跑出 Ram

测试经过训练的 LSTM 模型后如何预测实际的未来值?

如何在一系列日期上训练 LSTM?

如何正确地为 PyTorch 中的嵌入、LSTM 和线性层提供输入?

使用 LSTM 构建二元分类模型