【问题标题】:Batch size for panel data for LSTM in KerasKeras 中 LSTM 面板数据的批量大小
【发布时间】:2018-10-11 22:57:03
【问题描述】:

我对主题进行了重复测量,我将其作为 Keras 中 LSTM 模型的输入结构如下:

batch_size = 1
model = Sequential()
model.add(LSTM(50, batch_input_shape=(batch_size, time_steps, features), return_sequences=True))

其中 time_steps 是每个主题的测量次数,并表示每次测量中可用特征的数量。每一行数据是一个主题。

我的问题是关于此类数据的批量大小。 我应该只使用 1 的批量大小,还是批量大小可以超过 1 个主题?

与此相关,我会从将 stateful 设置为 True 中受益吗?这意味着从一个批次中学习也会通知其他批次。如果我对此的理解也不正确,请纠正我。

【问题讨论】:

    标签: keras lstm panel-data


    【解决方案1】:

    好问题!对于此类数据和设置,可以使用大于 1 的批量大小,前提是您的行是针对受试者的单独实验,并且您对每个受试者的观察按时间顺序排列(例如,星期一在星期二之前)。确保您在训练和测试之间的观察不是随机拆分的,并且您的观察是按每个主题按顺序排列的,并且您可以应用批处理。因此,如果使用 Keras,则将 shuffle 设置为 false,因为 Keras 默认会批量打乱观察结果。

    关于将 stateful 设置为 true:使用有状态模型,所有状态都会传播到下一批。这意味着位于索引 i 处的样本状态 Xi 将用于下一批样本 Xi+bs 的计算。在时间序列的情况下,这通常是有道理的。如果您认为一个主题测量 Si 会影响下一个主题测量 Si+1 的状态,请尝试将 stateful 设置为 true。可能值得探索将 stateful 设置为 false 以及探索和更好地理解先前的观察是否会影响特定主题的后续观察。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 2018-07-07
      • 2018-10-18
      • 1970-01-01
      • 2017-09-27
      • 2021-07-23
      • 2018-10-16
      相关资源
      最近更新 更多