gpt4 book ai didi

python - Keras 中的有状态 LSTM 中一批样本之间的状态是否保留?

转载 作者:行者123 更新时间:2023-11-30 09:44:22 25 4
gpt4 key购买 nike

假设我想对时间序列进行分类,每个时间序列有 33 个时间步长。我把它们分成更小的 block 。假设我有以下输入 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)

然后我将每个时间序列的接下来 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
]

同样的Y = [A, A, B, …, B]

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

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

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

最佳答案

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

系列 1 不与系列 2 通信。

关于python - Keras 中的有状态 LSTM 中一批样本之间的状态是否保留?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54430805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com