我已经看过几个类似的问题,但我什么都不懂,TimeDistributed 的兴趣是什么?为什么我们需要在 LSTM 之后插入一个 TimeDistributed 层来建立时间序列预测
在 LSTM 层之后 TimeDistributed 有什么好处?
好的,假设您有一个带有集合的LSTM()图层。return_sequences = True这意味着其中的每个 LSTM 单元都在输出其值。因此,该层的输出是一系列输出,而不仅仅是最后一个。这意味着输出是经过处理的时间序列,其中包含顺序信息。
您希望Dense()图层获取此信息并使用它来进一步处理信号。特别是,您需要一些密集架构来逐个处理这些顺序输出中的每一个。通过使用TimeDistributed()包装器,就像您Dense()在此顺序输出上迭代相同的架构一样。
我通常TimeDistributed(Dense())在 seq2seq 解码器的底部使用,以产生最终的输出序列。
我认为您的意思是 TimeDistributedDense?无论如何,这应该以一种或另一种方式澄清你的理解。
TimeDistributedDense 将相同的 Dense(全连接)操作应用于 3D 张量的每个时间步长。
使用 TimeDistributedDense 最常见的场景是使用循环 NN 来标记任务。例如 POS 标记或槽填充任务。
在这种任务中:对于每个样本,输入是一个序列 ( ),输出是一个序列 ( )长度。可以被视为的标签。推 进入循环神经网络以获得输出. 比推和隐藏的输出要得到...
如果您想通过 Keras 对此进行建模,您只需要在 RNN 或 LSTM 层(return_sequence=True)之后使用 TimeDistributedDense 即可在所有时间步输出上计算成本函数。如果不使用 TimeDistributedDense 并设置 RNN 的 return_sequence=False,则成本是在最后一个时间步输出上计算的,你只能得到最后一个 bN。
此外,这里是更多信息的链接-> https://github.com/keras-team/keras/issues/1029