Ho appena iniziato a giocare con TensorFlow e sto cercando di implementare un RNN molto semplice. Il RNN ha x
come input, come output ed è costituito da un solo layer che prende x
e il suo output precedente come input. Ecco una foto del genere di cose che ho in mente:Come costruire un semplice RNN con un ciclo nel grafico in TensorFlow?
Il problema è, non riesco a vedere alcun modo attraverso il tensorflow API per costruire un grafico con un ciclo in esso. Ogni volta che definisco un Tensore, devo specificare quali sono gli input, il che significa che devo aver già definito i suoi input. Quindi c'è un problema di pollo e uova.
Non so nemmeno se abbia senso volere definire un grafico con un ciclo (cosa viene calcolato prima? Dovrei definire un valore iniziale del nodo softmax?). Ho giocato con l'idea di utilizzare una variabile per rappresentare l'output precedente e quindi di prendere manualmente il valore di e memorizzarlo nella variabile ogni volta dopo aver passato un campione di addestramento. Ma sarebbe molto lento a meno che non ci sia un modo per rappresentare questa procedura nel grafico stesso (?).
So che le esercitazioni di TensorFlow mostrano implementazioni di esempio di RNN, ma imbrogliano e estraggono un modulo LSTM dalla libreria che contiene già il ciclo. Nel complesso, le esercitazioni sono buone per guidarti attraverso come costruire certe cose, ma potrebbero fare un lavoro migliore per spiegare come funziona davvero questa bestia.
Quindi, esperti di TensorFlow, c'è un modo per costruire questa cosa? Come potrei fare per farlo?
La tua idea variabile sembra una strada da percorrere, non dovrebbe essere lenta se usi le variabili TensorFlow/assegna ops –
Ma non dovrei chiamare 'sess.run (y_prev.assign (y))' ed eseguire i campioni attraverso uno alla volta? O vuoi dire che dovrei combinare questo con la tattica di svolgimento descritta da @Ishamael? – Shum