Ich versuche zu verstehen, was der TimeDistributed-Wrapper in Keras macht.
Ich verstehe, dass TimeDistributed "eine Ebene auf jede zeitliche Schicht einer Eingabe anwendet".
Aber ich habe einige Experimente durchgeführt und die Ergebnisse erhalten, die ich nicht verstehen kann.
Kurz gesagt, in Verbindung mit der LSTM-Schicht erzielen TimeDistributed und Just Dense Layer dieselben Ergebnisse.
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)
Für beide Modelle habe ich die Ausgabeform (Keine, 10, 1) erhalten .
Kann jemand den Unterschied zwischen TimeDistributed und Dense Layer nach einem RNN Layer erklären?
python
machine-learning
keras
neural-network
deep-learning
Buomsoo Kim
quelle
quelle
Dense
Ebene zu unterscheiden, die die Eingabe abflacht und dann umformt,TimeDistributed
wodurch verschiedene Zeitschritte verbunden werden und mehr Parameter vorhanden sind und die Zeitschritte getrennt bleiben (daher weniger Parameter vorhanden sind). In Ihrem FallDense
sollte 500 Parameter haben,TimeDistributed
nur 50Antworten:
Beim
keras
Erstellen eines sequentiellen Modells - normalerweise wird die zweite Dimension (eine nach der Beispieldimension) - mit einertime
Dimension verknüpft . Dies bedeutet, dass Sie, wenn Ihre Daten beispielsweise5-dim
bei(sample, time, width, length, channel)
Ihnen sind, eine Faltungsschicht anwenden können, indem SieTimeDistributed
(was für4-dim
mit gilt(sample, width, length, channel)
) entlang einer Zeitdimension (die gleiche Schicht auf jede Zeitscheibe anwenden) verwenden, um zu erhalten5-d
Ausgabe .Der Fall mit
Dense
ist, dass inkeras
Version 2.0Dense
standardmäßig nur auf die letzte Dimension angewendet wird (z. B. wenn SieDense(10)
auf Eingaben mit Form anwenden , erhalten(n, m, o, p)
Sie eine Ausgabe mit Form(n, m, o, 10)
), also in Ihrem FallDense
undTimeDistributed(Dense)
gleichwertig.quelle
Input
Tensor angewendet wird , gibt es einen Unterschied dazu im Vergleich zu einemmap
Modell, das auf eine Liste angewendet wird, die jeden Slice des Tensors enthältInput
?