1. 程式人生 > >keras中TimeDistributed的用法

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層,你最後只會得到一個結果。