【问题标题】:Initializing LSTM for time-series classification on TensorFlow初始化 LSTM 以在 TensorFlow 上进行时间序列分类
【发布时间】:2017-03-25 16:45:49
【问题描述】:

我正在 TensorFlow 上开发一个模型,用于将连续标签归因于时间序列的每个时间步。该模型旨在用于实时数据,以便在先前时间步长上观察到的时间序列值将对 LSTM 赋予当前时间步长的标签产生影响.为此,我使用tf.contrib.rnn.LSTMCell

我的数据包含以分钟到分钟为分辨率的每日时间序列。时间序列的总长度始终相同。 在下方左侧的蓝色图中,您可以找到我的数据的示例

我想用 +1 和 -1 之间的浮点值对我的输入时间序列进行分类,这样 +1 对应于时间序列的最大值,-1 对应于最小值,以及任何其他值 (在 +1 和 -1) 之间。因此,我希望 LSTM 根据在先前时间步长上观察到的值来预测我们是否可能处于时间序列的最大值或最小值。 目标标签的示例可以在上图中以绿色看到

现在,为了成功,我需要为 LSTM 提供初始标签的估计值。否则,正如 上面我获得的结果的红色所示,初始预测标签将偏离很多,因为 LSTM 在时间序列上没有先前的上下文

话虽如此,我正在寻找有关初始化 LSTM 的最佳方法的意见。 LSTMCell 模块有一个 initializer 属性,但这用于初始化 LSTM 的状态,而不是确定初始标签应该是什么。例如,对于我上面展示的时间序列,如何配置 LSTM,使其属性的初始标签为 0.75(初始目标标签的值)?

【问题讨论】:

    标签: python machine-learning tensorflow time-series lstm


    【解决方案1】:

    如果您有足够多的序列(甚至是足够大的初始示例列表),那么您的模型应该调整其权重,以使初始值有意义。

    话虽如此,您也可以尝试将初始状态训练为变量,如here 所述。

    如果您不想预测初始值,而只想让模型从一个合理的值开始,则可以使用另一种选择。这个想法是在初始值上运行模型(不做预测),在处理完这个输入后获得模型的状态,并将状态作为初始状态提供给模型,用于预测序列的其余部分。具体示例请看post

    【讨论】:

      猜你喜欢
      • 2017-07-12
      • 2021-02-21
      • 2021-08-24
      • 2018-03-29
      • 2016-02-11
      • 2019-05-05
      • 2021-05-03
      • 1970-01-01
      • 2018-05-25
      相关资源
      最近更新 更多