Como muchos otros lo han hecho, descubrí que los recursos aquí y aquí son inmensamente útiles para comprender las células LSTM. Estoy seguro de que entiendo cómo fluyen y se actualizan los valores, y estoy lo suficientemente seguro como para agregar las "conexiones de mirilla" mencionadas, etc. también.
En mi ejemplo, tengo en cada paso un vector de entrada de longitud i
y un vector de salida de longitud o
, donde o < i
.
Lo que ninguna de las páginas realmente cubre es cómo están organizadas y formadas.
Tengo 2 preguntas:
- En mis datos de entrenamiento, tengo muchos pares de vectores de entrada / salida correspondientes a muchas, muchas unidades de tiempo. Supongamos que entreno el LSTM con todos los datos. ¿Puedo ejecutar una entrada de longitud arbitraria establecida a través de él? Lo que quiero decir es que, si tengo datos de capacitación para, por ejemplo, todo el 2015 y 2016, ¿puedo ejecutar los datos a través de la red para 2017? ¿O tal vez 2017 hasta 2020?
- Según lo que he leído, parece que tengo una celda LSTM por unidad de tiempo, por lo que si tengo muchas unidades de tiempo, entonces tengo muchas celdas LSTM encadenadas. Dado que la longitud de la cadena depende de la longitud de los datos que quiero ejecutar a través de la red, y eso es presumiblemente arbitrario, no puedo ver cómo entrenaría esto, a menos que solo entrene una sola celda LSTM que luego duplica un número veces. Entonces, ¿parece que entrenaría una sola celda LSTM y luego las encadenaría
n
para una lista de longitud de vector de entrada dadan
? A pesar de que una sola celda LSTM contiene una serie de elementos y funciones, ¿parece que no es suficiente capturar tanta información en algo tan pequeño?
Gracias. ¿Hay otros recursos que pueda consumir (relativamente rápido) que me ayuden a comprender los detalles de la implementación? Los 2 enlaces anteriores dieron una imagen fantástica de alto nivel de lo que está sucediendo, pero no logran capturar estos detalles más finos.
fuente