tf.keras.layers.TimeDistributed函数

函数原型

tf.keras.layers.TimeDistributed(layer, 
								**kwargs
)

函数说明

时间分布层主要用来对输入的数据的时间维度进行切片。在每个时间步长,依次输入一项,并且依次输出一项。tf.keras.layers.TimeDistributed函数_第1张图片
在上图中,时间分布层的作用就是在时间t输入数据w,输出数据x;在时间t1输入数据x,输出数据y。在每个时间片依次输入、输出一项数据,而不是直接输入多项,输出多项。

参数layer为一个tf.keras.layers.Layer实例。输入数据至少为一个三维张量,如果输入数据为文本序列数据,输入为一个三维张量,形状为(batch_size, time, output_dim),如果输入数据为视频数据,输入为一个五维张量,形状为(batch_size, time, height, width, channels)。

时间分布层用来处理具有时间维度的数据,对于图像这类不具有时间维度的数据不适用。

函数使用

model = tf.keras.models.Sequential([
    # 嵌入层
    tf.keras.layers.Embedding(len(words), 125),
    # LSTM层
    tf.keras.layers.LSTM(125, return_sequences=True),
    # LSTM层
    tf.keras.layers.LSTM(125, return_sequences=True),
    # 在时间维度上全连接的Dense层
    tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(len(words), activation="softmax"))
])
Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 embedding (Embedding)       (None, None, 125)         32000     
                                                                 
 lstm (LSTM)                 (None, None, 125)         125500    
                                                                 
 lstm_1 (LSTM)               (None, None, 125)         125500    
                                                                 
 time_distributed (TimeDistr  (None, None, 256)        32256     
 ibuted)                                                         
                                                                 
=================================================================
Total params: 315,256
Trainable params: 315,256
Non-trainable params: 0
_________________________________________________________________

你可能感兴趣的:(#,tensorflow,python)