【发布时间】:2017-04-14 21:36:14
【问题描述】:
我阅读了一篇post,关于使用 CNTK 使用 LSTM 预测时间序列。这对我更好地理解如何应用这种方法来解决其他问题非常有帮助。使用 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 准备时间序列预测的训练和验证数据?
【问题讨论】:
标签: time-series lstm cntk