2023 10.24补充:Timedistributed layer作用最后一维
前言:
看一篇论文,里面作者用keras框架做的模型,其中repeatvector layer和Timedistributed layer 不是太理解有什么意义,于是乎对其展开研究,以下是我的研究结果,很高兴分享给大家。若有错误,请在评论区指出,我会即使与你讨论相关问题。
结论:
repeatvector layer:扩张时间步的感受野,最终目的:使模型能处理一对多,多对一的问题。
Timedistributed layer:降低特征维度,最终目的:使得模型输出的特征维度与输入一致。
正文:
如上图所示,给出一个(50,1,10)的数据。50个样本做一个batch,喂给模型。time_step指的是时间步的感受野,通俗一点,(50,1,10),中间是1就代表着lookback=1,(50,3,10)3就代表着lookback=3,就用过去的1步或3步数据用作训练,如下图,就是 [batch_size, time_step, input_size]=[30,5,7]的情况。
Tip:下面这张图引用的是‘Dianchen_Raw’博主的‘DeepLearning之LSTM模型输入参数:time_step, input_size, batch_size的理解’文章。
好,你们现在应该都比较清晰各参数的意思了,那接着我的图说,我将(50,1,10)的一堆数据丢到LSTM_1层里(这个层的神经元为150),意味着(1,10)的数据经过LSTM_1后会有150个值输出,即output(50,1,150),然后经过repeatvector(5),这层干啥的呢,实际上这层起到的作用是拓宽时间步的感受野即输出为(50,5,150),有的同学又忘了中间那个5什么意思,意思就是(1,150)的数据被他重复复制滑动窗口了五次,此时数据就变成了5个样本,每个样本150个特征的输入,即(5,150)。
好,然后经过LSTM_2层,不再赘述,还是(50,5,150),然后经过TIme distribute(10),
TIme distribute(10)干嘛的呢,就降低特征维度,本来每个样本有150个特征,那么经过这一layer,变成(50,5,10)。那我们再总的来看一下数据结构,是不是从(50,1,10)变成最后的(50,5,10)了?
对于我举的例子,这两个层的意义也就在此,用过去一步预测未来5步。