2017-02-22 44 views
10

Przeszedłem przez official documentation, ale nadal nie mogę zrozumieć, co faktycznie TimeDistributed robi jako warstwę w modelu Keras? Nie można zrozumieć różnicy między TimeDistributed a TimeDistributedDense? Kiedy ktoś użyje TimeDistributedDense? Czy jest to tylko zmniejszenie zestawu danych treningowych? Czy ma inne korzyści?TimeDistributed vs. TimeDistributedDense Keras

Czy ktoś może wyjaśnić dokładnym przykładem, co robi ten typ owijki?

Odpowiedz

15

Więc - w zasadzie TimeDistributedDense został wprowadzony jako pierwszy we wczesnych wersjach Keras, aby kolejno zastosować warstwę Dense. TimeDistributed to opakowanie Keras, które umożliwia pobranie dowolnej warstwy statycznej (niesekwencyjnej) i zastosowanie jej w sposób sekwencyjny. Więc jeśli np. twoja warstwa przyjmuje jako dane wejściowe coś o kształcie (d1, .., dn) dzięki wrapperowi TimeDistributed twoja warstwa może przyjąć dane wejściowe o kształcie (sequence_len, d1, ..., dn) przez nałożenie warstwy dostarczonej do X[0,:,:,..,:], X[1,:,...,:], ..., X[len_of_sequence,:,...,:].

Przykładem takiego użycia może być użycie np. przygotowana warstwa splotowa do krótkiego klipu wideo poprzez zastosowanie TimeDistributed(conv_layer), gdzie conv_layer jest stosowana do każdej klatki klipu. Wytwarza sekwencję wyjść, które mogą następnie zostać wykorzystane przez kolejną powtarzalną warstwę lub warstwę TimeDistributed.

Warto wiedzieć, że korzystanie z TimeDistributedDense jest amortyzowane i lepiej jest używać TimeDistributed(Dense).

0

TimeDistributedDense jest taki sam, jak TimeDistributed z jedyną różnicą, że TimeDistributed może być używany z różnymi typami warstw, a nie tylko gęstymi warstwami.

dokumentacja Keras mówi, że o TimeDistributed:

„Uwaga ta jest ściśle równoważne użyciu layers.core.TimeDistributedDense Jednak to, co jest różnica TimeDistributed jest to, że może on być stosowany w dowolnych warstw, nie tylko gęsta, na przykład z Convolution2D. warstwa "