Qué sucede cuando alimentamos una matriz 2D a una capa LSTM

8

Supongamos que estoy alimentando una matriz 2D de forma (99,13) como entrada a una capa LSTM. Tengo un número n de archivos, donde cada uno contiene (99,13) vectores de tamaño. He decidido considerar 13 como la cantidad de funciones y 99 como los pasos de tiempo.

(Mientras implementaba con Keras, agregué la capa LSTM como la primera capa. Y configuré el output_dim de la capa como 100)

Pero no puedo entender cómo funcionan realmente las cosas dentro de la red cuando proporcionamos una entrada como la anterior. Tengo las siguientes preguntas, que no puedo responder.

  1. ¿Qué tipo de valores proporcionamos como entrada a las celdas LSTM? ( xt , ht-1 utilizado como entradas a la celda son siempre vectores? En mi caso, xt tiene la forma de [1,13]?)
  2. Cuando decimos que tenemos una capa LSTM como la primera capa del modo l, ¿alimenta el primer vector de entrada a todas las celdas de la capa dada? (Por ejemplo: ¿alimentar el primer fotograma de tamaño 13 (de 99 fotogramas) a todas las n celdas LSTM en la primera capa?) De igual manera, ¿sigue alimentando todas las filas de la matriz de entrada en cada paso de tiempo?
  3. ¿Qué tipo de valor genera una celda LSTM en cada paso de tiempo ? (¿Consideramos el estado de la celda como la salida correcta del nodo? ¿Es un valor único o un vector? Si es un vector, ¿cuáles son las dimensiones? ¿Hay alguna forma de adivinar las dimensiones? He asumido que ht como vector)
  4. ¿Qué se entiende por output_dim (dimensión de salida) de una capa dada? ¿Siempre tiene que ser el número de nodos en la siguiente capa?

No ponga esto en espera ni lo dirija a ningún otro grupo. Creo que estas preguntas están relacionadas con el aprendizaje automático y el rnn. He leído trabajos de investigación, pero no he podido tener una idea clara de cómo funcionan realmente las cosas dentro de la red LSTM.

udani
fuente

Respuestas:

1

1) Xson sus entradas, si tiene 99 pasos de tiempo, entonces tiene 99 vectores de tamaño 13 cada uno. Por lo tanto, su entrada a cada paso de tiempo es un vector de tamaño 13. Necesitará un estado oculto inicial, a menos que tenga una razón para hacerlo; de lo contrario, su estado oculto inicial puede ser todos ceros. El tamaño de ese vector es un hiperparámetro que elija.

2) Tenga en cuenta que no hay 99 celdas LSTM, solo hay 1 celda LSTM que se reutiliza 99 veces por cada paso de tiempo. La celda LSTM mantiene un estado oculto y un estado de celda dentro de ella que pasa al siguiente paso de tiempo. Pero solo se está aprendiendo 1 conjunto de parámetros. Esos parámetros deben ser capaces de manejar todos los pasos de tiempo, condicional en la entrada actual, el estado oculto y el estado de la celda.

3) El estado de la celda no es una salida, sin embargo, se pasa como entrada al siguiente paso de tiempo. El estado oculto se h_tpasará a la salida, así como al siguiente paso de tiempo.

4) No estoy muy seguro, necesito una referencia al término output_dim.

Este es un excelente tutorial sobre LSTM: http://colah.github.io/posts/2015-08-Understanding-LSTMs/

David Parks
fuente
0

¿Qué se entiende por output_dim (dimensión de salida) de una capa dada? ¿Siempre tiene que ser el número de nodos en la siguiente capa?

output_dim = dimensión de los estados ocultos de LSTM.

Franck Dernoncourt
fuente