Quel est le rôle de TimeDistributed couche dans Keras?
Je suis en train d'essayer de saisir ce qui TimeDistributed enveloppe ne dans Keras.
- Je obtenir TimeDistributed "s'applique une couche à chaque tranche temporelle d'une entrée."
Mais j'ai une certaine expérience et a obtenu les résultats que je ne comprends pas.
En bref, dans le cadre de LSTM couche, TimeDistributed et juste Dense couche de porter le même résultats.
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)
Pour les deux modèles, je suis sortie de la forme de (Aucun, 10, 1).
Quelqu'un peut-il expliquer la différence entre TimeDistributed et Dense couche après une RNN couche?
- Il y a actuellement des ssem pas y avoir de différence, ici une discussion à ce sujet. Je pense que l'intention initiale était de faire une distinction entre les
Dense
couche de l'aplatissement de l'entrée et puis le remodelage, d'où la connexion de différents pas de temps et avoir plus de paramètres, etTimeDistributed
de garder le pas de temps séparés (et donc d'avoir moins de paramètres). Dans votre casDense
devrait avoir 500 paramétrée,TimeDistributed
seulement 50 - Nope, il a le même nombre de paramètres (6). Donc, il n'y a pratiquement pas de différence de l'atm?
- Ouais exactement, ce sont le nombre de paramètres qu'il aurait s'il y avait une différence. Pour le moment il n'y en a pas
Vous devez vous connecter pour publier un commentaire.
Dans
keras
- alors que la construction d'un modèle séquentiel - généralement de la deuxième dimension (l'un après l'échantillon de dimension) - est lié à untime
dimension. Cela signifie que si par exemple, vos données est5-dim
avec(sample, time, width, length, channel)
vous pouvez appliquer un convolutifs calque à l'aide deTimeDistributed
(qui est applicable à4-dim
avec(sample, width, length, channel)
) le long d'une dimension de temps (en appliquant la même couche à chaque tranche de temps) afin d'obtenir5-d
de sortie.Le cas avec
Dense
est que danskeras
à partir de la version 2.0Dense
est par défaut ne s'appliquait qu'à la dernière dimension (par exemple, si vous appliquezDense(10)
à l'entrée de la forme de la(n, m, o, p)
vous allez obtenir une sortie de la forme de la(n, m, o, 10)
) donc dans votre casDense
etTimeDistributed(Dense)
sont équivalentes.Input
tenseur, il n'existe aucune différence de ce rapport pour faire juste unmap
du modèle appliqué à une liste qui contient toutes les tranches de laInput
?