gpt4 book ai didi

tensorflow - 凯拉斯 : Shuffling dataset while using LSTM

转载 作者:行者123 更新时间:2023-12-04 11:07:13 24 4
gpt4 key购买 nike

如果我错了,请纠正我,但根据官方Keras documentation ,默认情况下,fit 函数的参数为​​ 'shuffle=True',因此它会在每个 epoch 上打乱整个训练数据集。

但是,使用 LSTM 或 GRU 等循环神经网络的重点是使用每个数据的精确顺序,以便先前数据的状态影响当前数据。

如果我们将所有数据打乱,所有逻辑序列都会被破坏。因此我不明白为什么有这么多 LSTM 的例子,其中参数没有设置为 False。使用没有序列的 RNN 有什么意义?

此外,当我将 shuffle 选项设置为 False 时,即使数据之间存在依赖关系,我的 LSTM 模型的性能也会降低:我使用 KDD99 数据集,其中连接有链接。

最佳答案

If we shuffle all the data, all the logical sequences are broken.



不,改组发生在批次轴上,而不是时间轴上。
通常,您的 RNN 数据具有如下形状: (batch_size, timesteps, features)
通常,您不仅要为网络提供一个要学习的序列,而且要提供许多序列。只有这些许多序列被训练的顺序才会被打乱。序列本身保持完整。
改组通常总是一个好主意,因为您的网络将只学习训练示例本身,而不是它们的顺序。

话虽如此,在某些情况下,您确实只有一个巨大的序列可供学习。在这种情况下,您仍然可以选择将序列分成几个批次。如果是这种情况,那么您担心改组会产生巨大的负面影响是完全正确的,所以在这种情况下不要这样做!

注意:RNN 有一个 stateful 您可以设置为 True 的参数.在这种情况下,上一个批次的最后一个状态将传递给下一个,这有效地使您的 RNN 将所有批次视为一个巨大的序列。因此,如果您有多个批次的巨大序列,请绝对执行此操作。

关于tensorflow - 凯拉斯 : Shuffling dataset while using LSTM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57041305/

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