Como muitos outros, eu achei os recursos aqui e aqui imensamente úteis para entender as células LSTM. Estou confiante de que entendo como os valores fluem e são atualizados, e estou confiante o suficiente para adicionar as mencionadas "conexões do olho mágico", etc. também.
No meu exemplo, tenho em cada etapa um vetor de entrada de comprimento i
e um vetor de saída de comprimento o
, em que o < i
.
O que nenhuma das páginas realmente abordou é como elas são organizadas e treinadas.
Eu tenho 2 perguntas:
- Nos meus dados de treinamento, tenho muitos pares de vetores de entrada / saída correspondentes a muitas, muitas unidades de tempo. Suponha que eu treine o LSTM com todos os dados. Posso então executar uma entrada de comprimento arbitrária definida por ele? O que quero dizer é que, se eu tiver dados de treinamento para, digamos, todo o ano de 2015 e 2016, posso executar dados na rede para 2017? Ou talvez de 2017 a 2020?
- De acordo com o que li, parece que tenho uma célula LSTM por unidade de tempo; portanto, se eu tenho muitas unidades de tempo, tenho muitas células LSTM encadeadas. Como o comprimento da cadeia depende do comprimento dos dados que desejo executar na rede e, presumivelmente, é arbitrário, não consigo ver como treinaria isso, a menos que treine apenas uma única célula LSTM que, em seguida, duplique um número vezes. Então, parece que eu treinaria uma única célula LSTM e, em seguida, as uniríamos
n
para uma determinada lista de vetores de entrada de comprimenton
? Mesmo que uma única célula LSTM contenha vários elementos e funções, parece que não é suficiente capturar tanta informação em algo tão pequeno?
Obrigado. Existem outros recursos que eu possa consumir (relativamente rápido) que me ajudarão a entender os detalhes da implementação? Os 2 links acima forneceram uma imagem fantástica de alto nível do que está acontecendo, mas não conseguiram capturar esses detalhes.