@创建于:20210414
1、TimeDistributed官网介绍
keras.layers.TimeDistributed(layer)
- (1)这个封装器将一个层应用于输入的每个时间片。
- (2)输入至少为3D,且第一个维度应该是时间所表示的维度。
- 例如:32 个样本的一个batch,其中每个样本是10 个16 维向量的序列。那么这个batch 的输入尺寸为(32, 10, 16),而input_shape 不包含样本数量的维度,为(10, 16)。
- 使用TimeDistributed 来将Dense 层独立地应用到这10 个时间步中的每一个。
即:TimeDistributed(Dense) 将同样的Dense(全连接)层操作应用到3D张量的每一个时间间隔上。
【我的理解】:TimeDistributed主要作用于每一步向量长度(即:属性大小);可以实现每一步结束后直接进行计算,而不是全部序列结束后进行计算;不改变数据的尺寸,改变数据尺寸的是TimeDistributed的层对象。
2、注意事项
利用TimeDistributed层来处理LSTM隐藏层的输出,在运用TimeDistributed包装层的时候需要记住两个关键点:
(1)输入必须(至少)是三维的。这就意味着需要在TimeDistributed包装密集层前配置最后一个LSTM层以便返回序列(例如将“return_sequences”参数设置为“True”);
(2)输出将也是三维的。如果TimeDistributed包装密集层是输出层,并且是用于预测序列,那么就得将y数组的大小调整成三维的向量。
3、TimeDistributed的测试代码
# -*- coding:UTF-8 -*-
# author:
# contact:
# datetime:2021/4/14 13:19
# software: PyCharm
"""
文件说明:
TimeDistributed的使用测试
"""
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM, TimeDistributed
length = 5
seq = np.array([i*1.0/length for i in range(length)])
def one_to_one():
X = seq.reshape(len(seq), 1, 1)
X_test = np.arange(start=1, stop=3, step=0.2)
X_test = X_test.reshape(X_test.shape[0], 1, 1

本文详细介绍了Keras中的TimeDistributed层,该层用于将同一个层应用到3D输入的每个时间片。通过示例代码展示了在LSTM网络中使用TimeDistributed进行序列预测的不同模式,包括一对一、多对一和多对多。同时,讨论了使用该层时的注意事项,如输入和输出的维度要求。此外,还提供了LSTM中参数计算的公式,并给出了相关资源链接供进一步学习。
最低0.47元/天 解锁文章
2897

被折叠的 条评论
为什么被折叠?



