`Keras` 的 `Dense` 和 `TimeDistributedDense` 的区别
数据挖掘
机器学习
神经网络
喀拉斯
2021-09-27 21:01:10
1个回答
假设您有时间序列数据行和您想要馈送到SimpleRNN(200, return_sequence=True)
Keras 中的图层的列。在将其提供给 RNN 之前,您需要将之前的数据重塑为 3D 张量。所以它变成了一个.
图片取自https://colah.github.io/posts/2015-08-Understanding-LSTMs
在 RNN 中,您的列(“700 列”)是 RNN 的时间步长。您的数据处理自. 将数据输入 RNN 后,现在它有 700 个输出 到 , 不是 到 . 请记住,现在数据的形状是这是样本(行)x时间步(列)x通道。
然后,当您应用 a 时TimeDistributedDense
,您将Dense
在每个时间步上应用一个图层,这意味着您在每个时间步上应用一个Dense
图层, ,...,分别。这意味着:实际上,您分别在其每个通道(“200”通道)上应用完全连接的操作,来自 到 . 第一个““直到第 700 个””。
我们为什么要这样做呢?因为您不想展平 RNN 输出。
为什么不扁平化 RNN 输出?因为您希望将每个时间步长值分开。
为什么将每个时间步长值分开?因为:
- 您只想在其自己的时间步之间交互值
- 您不希望在不同的时间步长和通道之间进行随机交互。