timedistributed initial gru cudnngru convlstm2d tensorflow machine-learning neural-network deep-learning keras

tensorflow - initial - model add rnn



¿Cuál es el papel de la capa TimeDistributed en Keras? (1)

Estoy tratando de comprender lo que hace el envoltorio TimeDistributed en Keras.

Obtengo que TimeDistributed "aplica una capa a cada segmento temporal de una entrada".

Pero hice algunos experimentos y obtuve los resultados que no puedo entender.

En resumen, en relación con la capa LSTM, TimeDistributed y solo la capa Densa dan los mismos resultados.

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)

Para ambos modelos, obtuve una forma de salida de (Ninguno, 10, 1) .

¿Puede alguien explicar la diferencia entre la capa TimeDistributed y Dense después de una capa RNN?


En keras , mientras se construye un modelo secuencial, generalmente la segunda dimensión (una después de la dimensión de muestra), se relaciona con una dimensión de time . Esto significa que si, por ejemplo, sus datos son 5-dim con (sample, time, width, length, channel) , podría aplicar una capa convolucional usando TimeDistributed (que es aplicable a 4-dim con (sample, width, length, channel) ) a lo largo de una dimensión de tiempo (aplicando la misma capa a cada segmento de tiempo) para obtener 5-d salida 5-d .

El caso con Dense es que en keras de la versión 2.0 Dense se aplica de manera predeterminada solo a la última dimensión (por ejemplo, si aplica Dense(10) a la entrada con forma (n, m, o, p) obtendrá una salida con forma (n, m, o, 10) ) por lo que en su caso Dense y TimeDistributed(Dense) son equivalentes.