Próbuję zrozumieć, co robi opakowanie TimeDistributed w Keras.
Dostaję, że TimeDistributed „stosuje warstwę do każdego czasowego wycinka danych wejściowych”.
Ale przeprowadziłem pewien eksperyment i otrzymałem wyniki, których nie mogę zrozumieć.
Krótko mówiąc, w połączeniu z warstwą LSTM, TimeDistributed i po prostu Dense dają takie same wyniki.
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)
Dla obu modeli otrzymałem kształt wyjściowy (Brak, 10, 1) .
Czy ktoś może wyjaśnić różnicę między warstwą TimeDistributed i Dense po warstwie RNN?
Dense
warstwą spłaszczającą dane wejściowe, a następnie przekształcającą, a więc łączącą różne kroki czasowe i posiadającą więcej parametrów, orazTimeDistributed
utrzymującą przedziały czasowe oddzielone (stąd mniej parametrów). W twoim przypadkuDense
powinien był mieć 500 parametrów,TimeDistributed
tylko 50