在训练 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() 训练的网络的测试和置信度得分