2016-05-11 3 views

Antwort

5

Wenn Sie sagen, dass Sie Wortvektoren haben, denke ich, dass Sie ein Wörterbuch haben, um ein Wort zu seiner Vektordarstellung zuzuordnen (berechnet von word2vec, GloVe ...).

Mit diesem Wörterbuch ersetzen Sie alle Wörter in Ihrer Sequenz durch ihre entsprechenden Vektoren. Sie müssen auch alle Ihre Sequenzen gleich lang machen, da LSTMs alle Eingabefolgen von konstanter Länge benötigen. Daher müssen Sie einen max_length-Wert bestimmen und alle Sequenzen, die länger sind, trimmen und alle Sequenzen, die kürzer sind, mit Nullen auffüllen (siehe Funktion "Keras pad_sequences").

Dann können Sie die vektorisierten Sequenzen direkt an die LSTM-Schicht Ihres neuronalen Netzes übergeben. Da die LSTM-Ebene die erste Ebene des Netzwerks ist, müssen Sie die Eingabeform definieren, in Ihrem Fall (max_length, embedding_dim,).

Auf diese Weise überspringen Sie die Einbettungsschicht und verwenden stattdessen Ihre eigenen vorberechneten Wortvektoren.

+0

Es ist auch möglich, vortrainierte Einbettungen mit dem Argument 'weights' in eine Embedding-Ebene zu laden, siehe [this post] (https://blog.keras.io/using-pre-trained-word-embeddings-in-a- keras-model.html). Auf diese Weise müssen Sie sich später nicht mit Transformationen herumschlagen und man kann einen Satz als Liste von ganzen Zahlen direkt an das Modell übergeben. – ValD