Sis*_*Sis 8 shuffle lstm keras tensorflow recurrent-neural-network
如果我错了,请纠正我,但根据官方Keras 文档,默认情况下,fit 函数的参数为“shuffle=True”,因此它会在每个 epoch 上对整个训练数据集进行洗牌。
但是,使用 LSTM 或 GRU 等循环神经网络的要点是使用每个数据的精确顺序,以便先前数据的状态影响当前数据。
如果我们将所有数据打乱,所有逻辑序列都会被破坏。因此我不明白为什么有这么多 LSTM 的例子,其中参数没有设置为 False。使用没有序列的 RNN 有什么意义?
此外,当我将 shuffle 选项设置为 False 时,即使数据之间存在依赖关系,我的 LSTM 模型的性能也会降低:我使用 KDD99 数据集,其中连接有链接。
seb*_*ckm 12
如果我们将所有数据打乱,所有逻辑序列都会被破坏。
不,改组发生在批次轴上,而不是时间轴上。通常,您的 RNN 数据具有如下形状:(batch_size, timesteps, features)
通常,您不仅要为网络提供一个序列以供学习,而且还要为多个序列提供学习。只有这些许多序列被训练的顺序才会被打乱。序列本身保持完整。改组通常总是一个好主意,因为您的网络将只学习训练示例本身,而不是它们的顺序。
话虽如此,在某些情况下,您确实只有一个巨大的序列可供学习。在这种情况下,您仍然可以选择将序列分成几个批次。如果是这种情况,您完全正确地担心改组会产生巨大的负面影响,所以在这种情况下不要这样做!
注意:RNN 有一个stateful参数,您可以将其设置为True。在这种情况下,上一个批次的最后一个状态将传递给下一个,这有效地使您的 RNN 将所有批次视为一个巨大的序列。因此,如果您有多个批次的巨大序列,请绝对执行此操作。
| 归档时间: |
|
| 查看次数: |
2490 次 |
| 最近记录: |