web-dev-qa-db-fra.com

TimeDistributed vs TimeDistributedDense Keras

J'ai parcouru la documentation officielle mais je ne comprends toujours pas ce que TimeDistributed fait réellement comme couche dans le modèle de Keras? 

Je ne pouvais pas comprendre la différence entre TimeDistributed et TimeDistributedDense? Quand quelqu'un utilisera-t-il TimeDistributedDense? Est-ce uniquement pour réduire le jeu de données d'entraînement? At-il d'autres avantages?

Quelqu'un peut-il expliquer avec un exemple précis ce que font ces deux types de wrappers?

13
Wasi Ahmad

Donc, fondamentalement, la TimeDistributedDense a été introduite d’abord dans les premières versions de Keras afin d’appliquer une couche Dense par étapes aux séquences. TimeDistributed est un wrapper Keras qui permet d’obtenir n'importe quel calque statique (non séquentiel) et de l’appliquer de manière séquentielle. Donc si par exemple votre couche accepte en entrée quelque chose de forme (d1, .., dn) grâce à TimeDistributed votre couche pourrait accepter une entrée de forme (sequence_len, d1, ..., dn) en appliquant une couche fournie à X[0,:,:,..,:], X[1,:,...,:], ..., X[len_of_sequence,:,...,:]

Un exemple d'utilisation de ce type pourrait être l'utilisation d'un exemple. couche convolutionnelle pré-entraînée en un clip vidéo court en appliquant TimeDistributed(conv_layer), où conv_layer est appliqué à chaque image d'un clip. Il produit la séquence de sorties qui peut ensuite être utilisée par la prochaine couche récurrente ou TimeDistributed.

Il est bon de savoir que l'utilisation de TimeDistributedDense est dépréciée et qu'il est préférable d'utiliser TimeDistributed(Dense).

18
Marcin Możejko

TimeDistributedDense est identique à TimeDistributed avec la seule différence que TimeDistributed peut être utilisé avec différents types de calques et pas uniquement les calques denses. 

La documentation de Keras indique qu’environ TimeDistributed

"Notez que ceci est strictement équivalent à l'utilisation de layers.core.TimeDistributedDense. Cependant, ce qui diffère de TimeDistributed, c'est qu'il peut être utilisé avec des calques arbitraires, pas uniquement avec Dense, par exemple avec un calque Convolution2D"

0
BenDes