J'essaie de comprendre ce que fait le wrapper TimeDistributed dans Keras.
Je comprends que TimeDistributed "applique une couche à chaque tranche temporelle d'une entrée".
Mais j'ai fait quelques expériences et j'ai obtenu des résultats que je ne peux pas comprendre.
En bref, en ce qui concerne la couche LSTM, les couches TimeDistributed et Dense seulement donnent les mêmes 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, j'ai obtenu une forme de sortie de (Aucun, 10, 1) .
Quelqu'un peut-il expliquer la différence entre la couche TimeDistributed et la couche Dense après une couche RNN ?
2 votes
Il ne semble pas y avoir de différence actuellement, aquí une discussion à ce sujet. Je pense que l'intention initiale était de faire une distinction entre les
Dense
couche aplatissant l'entrée puis la remodelant, ce qui permet de relier différents pas de temps et d'avoir plus de paramètres, etTimeDistributed
garder les pas de temps séparés (donc avoir moins de paramètres). Dans votre casDense
aurait dû avoir 500 paramètres,TimeDistributed
seulement 500 votes
@gionni Non, il y a le même nombre de paramètres (tous les deux 6). Il n'y a donc pratiquement aucune différence à l'heure actuelle ?
0 votes
Oui exactement, c'est le nombre de paramètres qu'ils auraient s'il y avait une différence. Pour le moment, il n'y en a pas.