【问题标题】:Keras LSTM ParadigmKeras LSTM 范式
【发布时间】:2019-01-26 00:38:01
【问题描述】:

我有一个时间序列,它有多个输入特征和一个输出(分类)。我想创建一个模型来预测每一步的输出。

我的数据如下所示:

x: [[0.4, 0.8, -1], [1, 1.6, -0.2], ....]

y: [[1], [0], ...]

因此,当给定单个特征向量时,我希望我的模型输出 0 或 1。特征向量不是任何类型的序列,因为这只是一个简单的时间序列。

我有以下问题:

  1. 由于 Keras 要求数据格式为 (batch_size, time_steps, num_features),而我已修复 num_features = 3,我应该为 batch_sizetime_steps 设置什么?

  2. 我应该为stateful 的值添加什么?由于我的数据按特定顺序排列,即列表中的第一个事件首先出现,然后是第二个和第三个等,我假设我输入了stateful = True?

【问题讨论】:

    标签: python keras lstm recurrent-neural-network


    【解决方案1】:

    我不确定,但是您的 batch_size 可以自动设置,time_steps 等于功能集的数量,因此对于 [[0.4, 0.8, -1]] 它的 1 对于 [[0.4, 0.8, -1], [1, 1.6, -0.2]] 其 2 等。尝试将数据重塑为 (shape[0],3)。

    【讨论】:

      【解决方案2】:

      如果您刚开始训练 LSTM 模型,我建议使用stateful=False。一旦您对输入形状和 LSTM 的工作原理更加熟悉,您可以考虑使用stateful=True。你可以阅读更多关于它的信息here

      话虽如此,Keras 要求将数据格式化为(num_samples, time_stepss, num_features)batch_size 是您想要拟合模型时设置的参数。事实上,batch_sizetime_steps 都是超参数,您可以调整它们并查看哪一个会产生更好的性能。因此,首先决定time_steps 以及您是否希望样本有重叠。

      例如,您可能决定创建具有time_steps=4 的样本,并且每个样本之间有 2 个 time_steps 重叠:

      x[0], x[1], x[2], x[3] -> y[0], y[1], y[2], y[3]

      x[2], x[3], x[4], x[5] -> y[2], y[3], y[4], y[5]

      x[4], x[5], x[6], x[7] -> y[4], y[5], y[6], y[7]

      ...

      使用time_steps 并固定重叠,您将获得总num_samples。然后,您可以将这些数据输入到 model.fit() 中,batch_size 为 32、64 等。

      如果您想避免编写代码来重塑数据,可以使用 Keras 的TimeseriesGenerator。请注意,长度用于time_stepsstride 确定重叠。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-27
        • 2019-11-10
        • 2020-06-03
        • 1970-01-01
        • 2016-12-07
        • 2018-11-06
        • 2020-05-25
        • 1970-01-01
        相关资源
        最近更新 更多