我正在训练一个神经网络。神经网络有三个输入——两个用于时间序列(LSTM 层)和一个纯数字(完全连接的密集层)。通过 .summary() 的神经网络结构:
问题是这样的。目前,在数据准备过程中,我通过 MinMaxScaler(每个输入参数单独)在 0 到 1 的范围内缩放数据。因此,我从两个数组中得到一个输入,长度为 [0; 1] 范围内的 50 个数字和同一范围内的一个数字(即输入的维度为 (n, 50, 1); (n, 50 , 1) ;(n, 1))。必须说,神经元不仅在学习过程中收敛并显示出足够的结果,而且在根据其他数据进行测试时也显示出足够的结果。也就是说,从功能上看,一切似乎都是正确的。
现在的问题: 在准备数据集时,我一次获取大量数据(有条件地,10,000 次测量)并一次缩放整个系列:
data_close = scaler_close.fit_transform(gazp.filter(['close'])[100:])
data_proffit = scaler_proffit.fit_transform(gazp.filter(['proffit'])[100:])
data_rsi = scaler_rsi.fit_transform(rsi.values[100:].reshape(-1,1 ))
data_macd = scaler_macd.fit_transform(macdhist.values[100:].reshape(-1,1 ))
len(data_macd), len(data_close)
事实是,神经网络本身是在具有 50 个样本窗口的样本上训练的,也就是说,用于预测(如果我理解正确的话)——它只需要 50 个样本。此外,神经网络必须动态处理新数据,但如果你先将数据集分成 50 个样本,然后应用缩放器,那么神经网络就会停止工作并发出废话。因此,我有一个问题——如果神经网络必须根据传入的数据预测动态结果,那么在这种情况下,将值缩放到所需范围的正确方法是什么?