2017-05-12 6 views
0

Es gibt ein Tensorflow LSTM Beispiel hier:Tensorflow: RNN Beispiel, wo tun Wort Einbettungen kommen aus

https://github.com/tensorflow/models/blob/master/tutorials/rnn/ptb/ptb_word_lm.py

Ich versuche zu verstehen, wo das Wort Einbettungen herkommen.

Siehe, da ist dieser Code:

with tf.device("/cpu:0"): 
    embedding = tf.get_variable(
     "embedding", [vocab_size, size], dtype=data_type()) 
    inputs = tf.nn.embedding_lookup(embedding, input_.input_data) 

Ich habe ein Gefühl dafür, was die embedding Variable halten sollte (wie erläutert, sagen wir, in diesem Beispiel. https://www.tensorflow.org/tutorials/word2vec Aber es hat etwas Magie sein das bekommen Arbeit erledigt (Training eines Einbettungsmodells, etc.)

Und ich sehe im Projektcode nichts dergleichen Ich kann auch nichts finden, was einfache einheiß codierte Vektoren erzeugen könnte Es ersetzt nur Wörter mit ihren Ganzzahl-IDs und dann Umformen der Daten im Leser-Code (https://github.com/tensorflow/models/blob/master/tutorials/rnn/ptb/reader.py).

Was fehlt mir? Es tut mir wirklich leid, wenn das etwas offensichtlich ist.

Antwort

1

Ich bin nicht ganz sicher, aber das ist, was ich verstanden:

Ich denke, eine ist trainierbar Tensor einzubetten. tf.get_variable() ruft eine existierende Variable mit diesen Parametern ab oder erstellt eine neue Variable, wenn keine existiert.

Wenn Initializer None ist, wird ein glorot_uniform_initializer verwendet.

Basierend auf der Vokabellänge initialisieren wir eine große Einbettungsmatrix und lassen sie die besten Einbettungswerte für unseren Wortschatz finden.

+0

Ja, aber wo genau ist es trainiert? .. – oopcode

+0

Back-Propagation die Arbeit der Suche nach Gradienten und aktualisieren sie. – hars

Verwandte Themen