TimeDistributed層在Keras中的作用是什么?
我試圖了解TimeDistributed包裝器在Keras中的作用。
我得到TimeDistributed“將一個圖層應用於輸入的每個時間片。”
但我做了一些實驗並得到了我無法理解的結果。
簡而言之,與LSTM層相關,TimeDistributed和Dense層具有相同的結果。
model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add(TimeDistributed(Dense(1)))
print(model.output_shape)
model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add((Dense(1)))
print(model.output_shape)
對於這兩種型號,我的輸出形狀為(無,10,1)。
任何人都可以解釋RNN層之后TimeDistributed和Dense層之間的區別嗎?
目前ssem沒有區別,這里討論它。我認為最初的意圖是區分Dense平坦化輸入然后重新整形的層,因此連接不同的時間步長並具有更多參數,並TimeDistributed保持時間步長分離(因此具有較少的參數)。在你的情況下Dense應該有500個參數,TimeDistributed只有50 - gionni 11月15日'17在13:00
@gionni不,它有相同數量的參數(均為6)。那么atm幾乎沒有什么區別? - Buomsoo Kim 於17年11月16日凌晨2 點09分
是的,如果存在差異,這些是他們將擁有的參數數量。目前沒有 - gionni 於17年11月16日12:17
在keras建立順序模型時 - 通常是第二維(一個在樣本維度之后) - 與time維度相關。這意味着,如果例如,你的數據是5-dim與(sample, time, width, length, channel)您可以應用使用卷積層TimeDistributed(其適用於4-dim與(sample, width, length, channel)以獲得沿時間維度)(應用相同的層到每個時間片)5-d輸出。
這樣的情況Dense是,keras從版本2.0開始Dense默認僅應用於最后一個維度(例如,如果您應用於Dense(10)具有形狀的輸入,(n, m, o, p)您將獲得具有形狀的輸出(n, m, o, 10)),因此在您的情況下Dense並且TimeDistributed(Dense)是等效的。