Keras中LSTM面板数据的批量大小

时间:2018-05-01 21:50:29

标签: keras lstm panel-data

我对主题进行了多次测量,我将其作为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个科目?

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

1 个答案:

答案 0 :(得分:1)

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

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

希望这有帮助!