假设我要对时间序列进行分类,它们每个都有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
]
和Y = [A, A, B, …, B]
包含该批次中32个时间序列中每个序列的标签。
现在我运行model.fit(X_1, Y)
。
然后,我将每个时间序列的下三个时间步设为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
]
再次是相同的Y = [A, A, B, …, B]
。
因为我已经分解了时间序列,所以我使用有状态模型,以便将X_1
的状态保存为X_2
。
我再次运行model.fit(X_2, Y)
。我重复此过程,直到从输入数据中到达包含时间步骤31至33的X_11
。在我致电model.fit(X_11, y)
之后,我要致电model.reset_states()
,因为我已经完成了第一批的32个时间序列,并且可以从头开始重新开始新的32个时间序列。 / p>
至少直到现在,我还以为这是做到这一点的方法。但是,现在我读到,默认情况下,批次中的所有样本都保留状态,所以这意味着X_0
中时间序列1的前3个步骤中的状态也将用于时间的前3个步骤中系列2?因为那没有意义,所以它们之间没有任何共同点,因此不应在它们之间共享状态。那么什么是正确的?
答案 0 :(得分:1)
否,状态是矩阵,其维度之一是批处理大小,这意味着每个样本有一行状态。
系列1与系列2不通讯。