Próbuję uchwycić, co wrapper TimeDistributed ma w Keras.Jaka jest rola warstwy TimeDistributed w Keras?
Otrzymuję, że TimeDistributed "stosuje warstwę do każdego skrawka czasowego danych wejściowych."
Ale przeprowadziłem eksperyment i uzyskałem wyniki, których nie mogę zrozumieć.
W skrócie, w związku z warstwą LSTM, warstwa TimeDistributed i gęstej warstwy mają 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, mam kształt wyjściowy (brak, 10, 1).
Czy ktoś może wyjaśnić różnicę między warstwą TimeDistributed i gęstą po warstwie RNN?
Obecnie nie ma różnicy, [tutaj] (https://github.com/fchollet/keras/issues/278) dyskusja na ten temat. Myślę, że pierwotnym zamiarem było rozróżnienie warstwy "gęstej", spłaszczającej dane wejściowe, a następnie zmieniające kształt, a więc łączące różne stopnie czasowe i posiadające więcej parametrów, oraz "TimeDistributed", utrzymujące oddzielne przedziały czasowe (stąd mniej parametrów). W twoim przypadku 'Dense' powinno mieć 500 parametrów,' TimeDistributed' tylko 50 – gionni
@gionni Nope, ma tę samą liczbę parametrów (obie 6). Więc nie ma praktycznie żadnej różnicy atm? –
Tak, to jest liczba parametrów, które mieliby, gdyby istniała różnica. W tej chwili nie ma – gionni