comment pile LSTM en utilisant des couches de TensorFlow
ce que j'ai est le suivant, je crois que c'est un réseau avec un caché LSTM couche:
# Parameters
learning rate = 0.001
training_iters = 100000
batch_size = 128
display_step = 10
# Network Parameters
n_input = 13
n_steps = 10
n_hidden = 512
n_classes = 13
# tf Graph input
x = tf.placeholder("float", [None, n_steps, n_input])
y = tf.placeholder("float", [None, n_classes])
# Define weights
weights = {
'out' : tf.Variable(tf.random_normal([n_hidden, n_classes]))
}
biases = {
'out' : tf.Variable(tf.random_normal([n_classes]))
}
Cependant, je suis en train de construire un LSTM réseau à l'aide de TensorFlow de prédire la consommation d'énergie. J'ai été en regardant autour de vous pour trouver un bon exemple, mais je ne pouvais pas trouver un modèle avec 2 cachés LSTM couches. Voici le modèle que je voudrais construire:
1 couche d'entrée,
1 couche de sortie,
2 cachés LSTM couches(avec 512 neurones dans chacune),
pas de temps(longueur de la séquence): 10
Quelqu'un pourrait-il me guider pour construire cette aide TensorFlow? ( à partir de la définition des poids, des entrées dans la construction de la forme, de la formation, de la prévision et de l'utilisation de l'optimiseur ou de la fonction de coût, etc), toute aide serait grandement appréciée.
Je vous remercie beaucoup d'avance!
OriginalL'auteur subbie | 2016-08-25
Vous devez vous connecter pour publier un commentaire.
Ici est de savoir comment je le fais dans un modèle de traduction avec GRU cellules. Vous pouvez simplement remplacer le GRU avec un LSTM. Il est vraiment facile de simplement utiliser tf.nn.rnn_cell.MultiRNNCell avec une liste de plusieurs cellules, il doit envelopper. Dans le code soufflet je suis dérouler manuellement, mais vous pouvez le passer à
tf.nn.dynamic_rnn
outf.nn.rnn
.Les variables de la LSTM de l'initialisation lorsque vous l'utilisez à l'intérieur de la classe. Regardez le code source, il est assez utile.
Je vois que les variables pour les quatre portes de la LSTM de l'initialisation, mais ne devrait-il pas également être des paramètres à partir de la première couche cachée à la seconde? Il ferait de sens si MultiRNNCell initialise les paramètres à partir d'un caché à l'autre.
Je ne suis pas sûr de ce que tu veux dire. Il crée de toutes les variables dont vous avez besoin.
OriginalL'auteur chasep255
D'abord vous avez besoin de quelques espaces réservés pour mettre vos données d'entraînement (un lot)
Un LSTM besoin d'un etat, qui se compose de deux composants, l'état caché et l'état de la cellule, très bon guide ici: https://arxiv.org/pdf/1506.00019.pdf. Pour chaque couche dans la LSTM vous avez un état de la cellule et un état caché.
Le problème est que Tensorflow les enregistre dans une LSTMStateTuple laquelle vous ne pouvez pas envoyer dans l'espace réservé. Si vous avez besoin de le stocker dans un Tenseur, puis décompressez dans un n-uplet:
Ensuite, vous pouvez utiliser le haut-Tensorflow API pour créer le empilés LSTM couche.
De là, vous continuez avec les sorties de calculer les logits puis une perte à l'égard de la
y_inputs
.Ensuite, vous exécutez chaque lot avec le
sess.run
-commande, avec tronqué les (bonne explication ici http://r2rt.com/styles-of-truncated-backpropagation.html)Vous devez la convertir en l'état à un
numpy
tableau avant de nourrir à nouveau.Peut-être qu'il est préférable d'utiliser un librarly comme Tflearn ou Keras à la place?
OriginalL'auteur user1506145