2016-07-21 8 views

Antwort

0

Nicht zu sicher, was Syntaxnet ist, aber hier ist, wie ich Worteinbettungen in meiner Sequenz zu Sequenz-Modell verwenden.

Hier deklariere ich eine Variable, die die Einbettung speichert. Es ist eine Matrix mit Zeilen gleich der Anzahl der Wörter im Vokabular (NWORDS) und jede Spalte ist die Größe des Wortvektors für dieses Wort (WORD_VEC_SIZE). Es wird zufällig initialisiert und ist ein trainierbarer Parameter des Modells.

word_embedding = tf.get_variable('word_embedding', shape = (NWORDS, WORD_VEC_SIZE), initializer = tf.truncated_normal_initializer(0.0, 1,0)) 

Die Eingabe in meinem Modell ist eine Liste von ganzen Zahlen, die die indexs der Worte in der Einbettung darstellen. Es hat die Dimension BATCH_SIZE x TIMESTEPS.

Mithilfe der Einbettung und der Eingabe kann ich eine Suche durchführen, um die Integer-Darstellungen der Wörter in Vektoren zu konvertieren.

y = tf.nn.embedding_lookup([word_embedding], source_input) 

Jetzt hat die Form y (batch_size, TIME_STEPS, WORD_VEC_SIZE) und können in das Modell für die weitere Verarbeitung zugeführt werden.

+0

Vielen Dank für Ihre Antwort, aber es ist nicht genau die Lösung für meine Frage. Wenn ich vortrainierte Worteinbettungen in Syntaxnet geladen habe, dann die folgende Fehlerliste: raise type (e) (node_def, op, message) tensorflow.python.framework.errors.InvalidArgumentError: Assign benötigt Formen beider Tensoren, die übereinstimmen müssen. lhs shape = [5,8] rhs shape = [31157,128] [[Knoten: embedding_matrix_0/init = Zuweisen [T = DT_FLOAT, _klasse = ["loc: @ embedding_matrix_0"], use_locking = true, validate_shape = true, _device = "/ job: localhost/Replikat: 0/Aufgabe: 0/CPU: 0"] (embedding_matrix_0, embedding_matrix_0/init/WordEmbeddingInitializer)]] –

Verwandte Themen