【发布时间】:2017-10-03 06:19:49
【问题描述】:
我正在使用Jason Brownlee's tutorial (mirror) 在一些系统日志/网络日志数据上应用 LSTM 网络。他是高手!
我有过去 1 年每天的系统日志数据(特定事件),因此我使用 LSTM 网络进行时间序列分析。我正在使用 Keras 深度学习库中的 LSTM。
据我所知-
- 关于Batch_size
一批数据是来自训练的固定大小的行数 定义在更新之前要处理多少模式的数据集 网络的权重。基于 batch_size 模型 从数据中随机抽取样本进行分析。对于时间序列 这是不可取的,因此 batch_size 应该始终为 1。
- 关于随机播放值的设置
默认情况下,一个时期内的样本在暴露于网络之前会被打乱。这对于 LSTM 来说是不可取的 因为我们希望网络在学习时建立状态 观察序列。我们可以禁用洗牌 通过将“shuffle”设置为“False”来采样。
场景1 - 使用上述两个规则/指南 - 我用不同数量的神经元、时期大小和不同的层进行了几次试验,并从基线模型(持久性模型)中获得了更好的结果。
场景2- 在不使用上述指南/规则的情况下 - 我用不同数量的神经元、时期大小和不同的层进行了几次试验,得到了比场景 1 更好的结果。
查询 - 将时间序列的 shuffle 设置为 True 并将 Batch_size 值设置为 1。这是规则还是指南?
阅读教程认为时间序列的数据不应该被打乱似乎是合乎逻辑的,因为我们不想改变数据的顺序,但是对于我的数据,如果我让数据被打乱,结果会更好。 最后,我认为重要的是我如何通过跑步获得更好的预测。 我认为我应该尝试将“理论”置于具体证据之上,例如指标、肘部、RMSE 等。
请指教。
【问题讨论】:
标签: time-series deep-learning keras lstm recurrent-neural-network