我使用CNTK阅读了有关使用LSTM预测时间序列的post。对于我如何更好地理解如何应用此方法来解决其他问题非常有帮助。使用CNTK实现LSTM网络非常简单,只需要几行代码即可。
model = Sequential (
RecurrentLSTMLayer {$stateDim$, usePeepholes = true} : #first LSTM
DenseLayer {$labelDim$, bias=false} # followed by an adaptor layer (from LSTN output size to the output or label size)
)
我使用帖子中包含的数据预处理程序来生成训练数据和验证数据。我试图通过研究示例的训练数据文件来准备我的域数据,我可以理解每行包含15个特征(输入窗口)和12个标签(输出输出窗口)。前两行数据如下所示。
1|i -0.117767881389987 -0.136789685972378 -0.157142990666484 -0.110810379516591 -0.0514608885500003 -0.0519359184751851 -0.093395333203464 -0.0466859579796335 -0.027053633818924 -0.0228974319964887 -0.0226106294034727 -0.0771583282775792 0.0326521764808296 0.0382623225371779 0.0179878482650109 |o -0.0419931078602005 -0.00707823233794613 -0.0326514790959216 0.107345877141872 0.0500879860433807 -0.0227185182952923 0.0354644105738453 0.0276734047763592 0.0830922226488839 0.0670409830200276 0.0983389666100694 0.101450282120106 |
1|i -0.142277570256967 -0.162630874951073 -0.11629826380118 -0.0569487728345894 -0.0574238027597742 -0.0988832174880532 -0.0521738422642226 -0.0325415181035131 -0.0283853162810779 -0.0280985136880618 -0.0826462125621683 0.0271642921962405 0.0327744382525887 0.0124999639804217 -0.0474809921447896 |o -0.0125661166225353 -0.0381393633805107 0.101857992857283 0.0446001017587916 -0.0282064025798814 0.0299765262892562 0.02218552049177 0.0776043383642948 0.0615530987354385 0.0928510823254802 0.0959623978355166 0.0630698500493061 |
正如帖子中所提到的,输入(15个值)和输出(12个值)窗口一次向前移动一步(见下图),因此,每行的数据应该一次只移动一个值,但是他们在我看来并非如此。两行之间似乎没有任何重叠值。
Input and output windows for the time series
我的问题是如何使用CNTK LSTM准备时间序列预测的培训和验证数据?
答案 0 :(得分:0)
我研究了数据预处理脚本(在R中)并发现每个输入和输出窗口中的值是平滑趋势和随机分量(噪声)的总和,作为数据规范化的一部分