Я намагаюся зрозуміти, що обгортка TimeDistributed робить у Keras.
Я розумію, що TimeDistributed "застосовує шар до кожного тимчасового зрізу введення".
Але я провів експеримент і отримав ті результати, які я не можу зрозуміти.
Коротше кажучи, стосовно рівня LSTM, TimeDistributed і просто щільний шар дають однакові результати.
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)
Для обох моделей я отримав форму виводу (None, 10, 1) .
Хтось може пояснити різницю між TimeDistributed і щільним шаром після шару RNN?
Dense
шару, що згладжує вхід, а потім переформується, отже, підключаючи різні часові кроки і маючи більше параметрів, іTimeDistributed
зберігаючи розділені часові кроки (отже, маючи менше параметрів). У вашому випадкуDense
мало бути 500 параметрів,TimeDistributed
лише 50