LSTM 层处理具有以下结构(nb_sequence、nb_timestep、nb_feature)的 3D 数据。
- nb_sequence 对应于数据集中的序列总数(如果您使用的是小批量学习,则对应于批量大小)。
- nb_timestep 对应于序列的大小。
- nb_feature 对应于描述每个时间步长的特征数。
因此,LSTM 层将像这样工作:
让吨一世成为一世时间_序列的时间步长塞_qj, 和我∈ [ 0 , n b _ t我m e s t e p ] , j ∈ [ 0 , n b _ s e q u en c e ] _.
LSTM 层将进行预测p一世 根据 n b _ f求你_ _ _ _ 的描述符 吨一世 关于它的隐藏状态,它是时间步长的表示 吨0 到 吨我- 1.
现在,让我们看看这对您的两种配置意味着什么。为了便于解释,我假设我们有单词序列
- 对于 (53394, 3, 1),LSTM 将处理 53394 个不同的序列。每个序列长 3 个单词,每个单词仅通过一个特征描述。对于每个序列的第一个单词,LSTM 将对其唯一的描述符进行预测。对于第二个词,将根据第一个词的唯一描述符进行预测。最后,对于序列中的第三个和最后一个单词,LSTM 将根据唯一描述符发出关于前两个单词的预测。然后,LSTM 为以下序列重新开始该过程。
- 对于 (53394, 1, 3),您的序列仅包含一个通过 3 个特征描述的单词。一个单词的序列并不是真正的序列,因此 LSTM 层在这种情况下将没有用处。
希望它能弄清楚如何将数据馈送到 LSTM !
注意。与问题无关,但它可能会有所帮助:从您的原始形状来看,您的数据集似乎包含 53394 个单词,描述了 3 个特征。如果我是对的,您将需要像 (53394, nb_timestep, 3) 这样的 3D 形状,但要使用n b _ t i m e s t e p ≠ 1. 那么你需要的是定义一些窗口而不是重塑你的数据。