在Keras的有状态LSTM中,一个批次的样本之间的状态是否保持



假设我想对时间序列进行分类,每个时间序列都有33个时间步长。我把它们分成小块。假设我有以下输入X_1,维度是(32,3,1),所以32个样本,3个时间步长,1个特征:

[
[[1],  [2],  [3]]  # step 1 to step 3 from time series 1
[[11], [14], [17]] # step 1 to step 3 from time series 2
[[3],  [5],  [7]]  # step 1 to step 3 from time series 3
...
[[9],  [7],  [2]]  # step 1 to step 3 from time series 32
]

和包含该批次中32个时间序列中的每个时间序列的标签的CCD_ 3。

现在我运行model.fit(X_1, Y)

然后,我将每个时间序列的接下来3个时间步长作为X_2:

[
[[4],  [5],  [6]]  # step 4 to step 6 from time series 1
[[20], [23], [26]] # step 4 to step 6 from time series 2
[[9],  [11], [13]] # step 4 to step 6 from time series 3
...
[[8],  [1],  [9]]  # step 4 to step 6 from time series 32
]

以及同样的CCD_ 6。

因为我已经将时间序列分解,所以我使用有状态模型,以便将X_1中的状态保存为X_2

我再次运行model.fit(X_2, Y)。我重复这一过程,直到从我的输入数据到达包含时间步长31到33的X_11。在我调用model.fit(X_11, y)之后,我将调用model.reset_states(),因为我已经完成了第一批32个时间序列,我可以从一开始就重新开始新的一批32个时序。

至少到目前为止,我还认为这就是实现这一目标的方法。但现在我读到,默认情况下,该状态在批次中的样本中保留,这是否意味着X_0中时间序列1的前3个步骤的状态也用于时间序列2的前3步?因为这没有意义,他们没有任何共同点,国家不应该在他们之间共享。那么什么是正确的呢?

否,状态是矩阵,其中一个维度是批量大小,这意味着每个样本有一行状态。

系列1与系列2不通信。

最新更新