TimeDistributed理解

 

keras.layers.TimeDistributed(layer)

這個封裝器將一個層應用於輸入的每個時間片。

輸入至少爲 3D,且第一個維度應該是時間所表示的維度。

考慮 32 個樣本的一個 batch, 其中每個樣本是 10 個 16 維向量的序列。 那麼這個 batch 的輸入尺寸爲 (32, 10, 16), 而 input_shape 不包含樣本數量的維度,爲 (10, 16)

你可以使用 TimeDistributed 來將 Dense 層獨立地應用到 這 10 個時間步的每一個:

# 作爲模型第一層
model = Sequential()
model.add(TimeDistributed(Dense(8), input_shape=(10, 16)))
# 現在 model.output_shape == (None, 10, 8)

輸出的尺寸爲 (32, 10, 8)

在後續的層中,將不再需要 input_shape

model.add(TimeDistributed(Dense(32)))
# 現在 model.output_shape == (None, 10, 32)

輸出的尺寸爲 (32, 10, 32)

TimeDistributed 可以應用於任意層,不僅僅是 Dense, 例如運用於 Conv2D 層:

model = Sequential()
model.add(TimeDistributed(Conv2D(64, (3, 3)),
                          input_shape=(10, 299, 299, 3)))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章