it-swarm.com.de

TimeDistributed vs. TimeDistributedDense Keras

Ich habe die offizielle Dokumentation durchlaufen , aber immer noch nicht verstehen, was TimeDistributed als Ebene im Keras-Modell tut? 

Ich konnte den Unterschied zwischen TimeDistributed und TimeDistributedDense nicht verstehen. Wann verwendet jemand TimeDistributedDense? Sollen nur die Trainingsdaten reduziert werden? Hat es andere Vorteile?

Kann jemand mit einem genauen Beispiel erklären, was diese zwei Arten von Layer-Wrappern bewirken?

13
Wasi Ahmad

Grundsätzlich wurde TimeDistributedDense zuerst in frühen Keras-Versionen eingeführt, um eine Dense-Schicht schrittweise auf Sequenzen anzuwenden. TimeDistributed ist ein Keras-Wrapper, mit dem statische (nicht sequentielle) Ebenen abgerufen und sequentiell angewendet werden können. Wenn also z. Ihre Ebene akzeptiert als Eingabe etwas von Form (d1, .., dn) dank TimeDistributed wrapper könnte Ihre Ebene eine Eingabe mit der Form (sequence_len, d1, ..., dn) akzeptieren, indem Sie eine Ebene anwenden, die für X[0,:,:,..,:], X[1,:,...,:], ..., X[len_of_sequence,:,...,:] bereitgestellt wird. 

Ein Beispiel für eine solche Verwendung könnte die Verwendung eines z.B. Vorab trainierte Faltungsebene für einen kurzen Videoclip durch Anwenden von TimeDistributed(conv_layer), wobei conv_layer auf jeden Frame eines Clips angewendet wird. Es erzeugt die Folge von Ausgaben, die dann von der nächsten wiederkehrenden oder TimeDistributed-Ebene verbraucht werden können.

Es ist gut zu wissen, dass die Verwendung von TimeDistributedDense abgeschrieben wird, und es ist besser, TimeDistributed(Dense) zu verwenden.

18
Marcin Możejko

TimeDistributedDense ist das gleiche wie TimeDistributed, mit dem einzigen Unterschied, dass TimeDistributed mit verschiedenen Layer-Typen und nicht nur mit einem dichten Layer verwendet werden kann. 

Die Keras-Dokumentation sagt das über TimeDistributed

"Beachten Sie, dass dies streng der Verwendung von layers.core.TimeDistributedDense entspricht. Was TimeDistributed jedoch unterscheidet, ist, dass es mit beliebigen Ebenen verwendet werden kann, nicht nur mit Dense, beispielsweise mit einer Convolution2D-Schicht."

0
BenDes