Frage

Ich bin immer noch verwirrt über den Unterschied zwischen Dense und TimeDistributedDense von Keras Auch wenn bereits einige ähnliche Fragen gestellt werden hier und hier. Die Menschen diskutieren viel, aber keine gemeinsamen Schlussfolgerungen.

Und obwohl auch hier, @Fchollet erklärte:

TimeDistributedDense gilt gleich Dense (Voller vernetzter) Betrieb zu jedem Zeitschritt eines 3D-Tensors.

Ich brauche immer noch eine detaillierte Abbildung darüber, was genau der Unterschied zwischen ihnen ist.

War es hilfreich?

Lösung

Nehmen wir an, Sie haben Zeitreihendaten mit $ n $ Zeilen und 700 $ $ Spalten, die Sie an a füttern möchten SimpleRNN(200, return_sequence=True) Schicht in Keras. Bevor Sie dies dem RNN füttern, müssen Sie die vorherigen Daten an einen 3D -Tensor umgestalten. Es wird also zu einem $ n mal 700 mal 1 $.

$ $

unrolled RNN

Das Bild wird von entnommen https://colah.github.io/posts/2015-08-VERSTINGINGING-LSTMS

$ $

In RNN sind Ihre Spalten (die "700 Spalten") die Zeitschritte von RNN. Ihre Daten werden von $ t = 1 bis 700 $ verarbeitet. Nachdem die Daten an den RNN gefüttert wurden, haben sie jetzt 700 Ausgänge, die $ H_1 $ bis $ H_ {700} $ sind, nicht $ H_1 $ bis $ H_ {200} $. Denken Sie daran, dass die Form Ihrer Daten nun $ n mal 700 mal 200 $ beträgt, was ist Proben (die Zeilen) x Timesteps (die Spalten) x Kanäle.

Und dann, wenn Sie a anwenden TimeDistributedDense, Sie beantragen a Dense Schichten Sie auf jedem Zeitschritt, was bedeutet, dass Sie a anwenden Dense Layer auf jedem $ H_1 $, $ H_2 $, ..., $ H_T $. Was bedeutet: Tatsächlich wenden Sie den vollständigen Betrieb auf jedem seiner Kanäle (die "200" an, von $ h_1 $ bis $ H_ {700} $. Die 1. "$ 1 Times 1 mal 200 $" bis zum 700. "$ 1 Times 1 mal 200 $".

Warum machen wir das? Weil Sie die RNN -Ausgabe nicht verflachten möchten.

Warum nicht die RNN -Ausgabe abflachen? Weil Sie jede Zeitschrittwerte getrennt halten möchten.

Warum sollten jede Zeitstufe getrennt bleiben? Da:

  • Sie möchten nur die Werte zwischen seinem eigenen Zeitschritt interagieren
  • Sie möchten keine zufällige Interaktion zwischen verschiedenen Zeitschritten und Kanälen haben.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top