keras中TimeDistributed的用法

Posted 棍子哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keras中TimeDistributed的用法相关的知识,希望对你有一定的参考价值。

TimeDistributed这个层还是比较难理解的。事实上通过这个层我们可以实现从二维像三维的过渡,甚至通过这个层的包装,我们可以实现图像分类视频分类的转化。

考虑一批32个样本,其中每个样本是一个由16个维度组成的10个向量的序列。该层的批输入形状然后(32, 10, 16)

可以这么理解,输入数据是一个特征方程,X1+X2+...+X10=Y,从矩阵的角度看,拿出未知数,就是10个向量,每个向量有16个维度,这16个维度是评价Y的16个特征方向。

TimeDistributed层的作用就是把Dense层应用到这10个具体的向量上,对每一个向量进行了一个Dense操作,假设是下面这段代码:

model = Sequential()model.add(TimeDistributed(Dense(8), input_shape=(10, 16)))

输出还是10个向量,但是输出的维度由16变成了8,也就是(32,10,8)。

事实上,TimeDistributed层给予了模型一种一对多,多对多的能力,增加了模型的维度。

技术分享图片

TimeDistributed层在每个时间步上均操作了Dense,由上面几个图明显可以看出了增加了模型实现一对多和多对多的能力。如果你使用正常的Dense层,你最后只会得到一个结果

以上是关于keras中TimeDistributed的用法的主要内容,如果未能解决你的问题,请参考以下文章

TimeDistributed 与 TimeDistributedDense Keras

Keras 使用 TimeDistributed 预训练 CNN

如何在 Keras 中使用 return_sequences 选项和 TimeDistributed 层?

Keras的TimeDistributed层

为keras TimeDistributed图层按名称设置权重

为啥我的 Keras LSTM 不需要 TimeDistributed?