Яка роль шару TimeDistributed у Keras?


83

Я намагаюся зрозуміти, що обгортка 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?


1
В даний час ssem не має ніякої різниці, ось дискусія про це. Я думаю, що початковий намір полягав у розрізненні Denseшару, що згладжує вхід, а потім переформується, отже, підключаючи різні часові кроки і маючи більше параметрів, і TimeDistributedзберігаючи розділені часові кроки (отже, маючи менше параметрів). У вашому випадку Denseмало бути 500 параметрів, TimeDistributedлише 50
джіоні

@gionni Nope, він має однакову кількість параметрів (обидва 6). Отже, практично немає різниці в банкоматі?
Бумсу Кім

Так, саме таку кількість параметрів вони мали б, якби була різниця. На даний момент немає
gionni

Відповіді:


85

В keras- під час побудови послідовної моделі - як правило, другий вимір (один після розмірного зразка) - пов'язаний з timeвиміром. Це означає, що якщо, наприклад, ваші дані є 5-dimу (sample, time, width, length, channel)вас, ви можете застосувати згортковий шар, використовуючи TimeDistributed(що застосовується до 4-dimwith (sample, width, length, channel)) вздовж часового виміру (застосовуючи той самий шар до кожного часового зрізу), щоб отримати 5-dвихідні дані.

Випадок з Denseтому , що в kerasс версії 2.0 Denseза замовчуванням застосовується тільки останній вимір (наприклад , якщо ви подаєте заяву Dense(10)на вхід з формою (n, m, o, p)ви отримаєте вихід з формою (n, m, o, 10)) , тому у вашому випадку Denseі TimeDistributed(Dense)еквівалентні.


3
Є приклад використання TimeDistributed обтікання самої моделі. Коли це застосовується до Inputтензору, чи є якась відмінність від цього порівняно із простим виконанням mapмоделі, застосованої до списку, що містить кожен зріз Input?
CMCDragonkai
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.