Answers:
假设您有行和列的时间序列数据,希望将其馈送到SimpleRNN(200, return_sequence=True)
Keras中的图层。在将其提供给RNN之前,您需要将先前的数据重塑为3D张量。因此它变为。
该图像取自https://colah.github.io/posts/2015-08-Understanding-LSTMs
在RNN中,您的列(“ 700列”)是RNN的时间步。您的数据从。将数据馈送到RNN之后,现在它具有700个输出,分别是至,而不是至。请记住,现在数据的形状为,这是样本(行)x时间步长(列)x channel。
然后,当您应用时TimeDistributedDense
,您将Dense
在每个时间步上应用一个图层,这意味着您将分别Dense
在每个,,...,上应用一个图层。这意味着:实际上,您实际上是在从到每个通道(“ 200”通道)上分别应用完全连接的操作。第一个“ ”,直到第700个“ ”。
我们为什么这样做呢?因为您不想展平RNN输出。
为什么不展平RNN输出?因为您想将每个时间步的值都分开。
为什么将每个时间步的值分开?因为: