Ich habe kürzlich eine interessante Implementierung für die Klassifizierung von Faltungstexten überprüft . Alle von mir überprüften TensorFlow-Codes verwenden jedoch zufällige (nicht vorab trainierte) Einbettungsvektoren wie die folgenden:
with tf.device('/cpu:0'), tf.name_scope("embedding"):
W = tf.Variable(
tf.random_uniform([vocab_size, embedding_size], -1.0, 1.0),
name="W")
self.embedded_chars = tf.nn.embedding_lookup(W, self.input_x)
self.embedded_chars_expanded = tf.expand_dims(self.embedded_chars, -1)
Weiß jemand, wie man die Ergebnisse von Word2vec oder einer von GloVe vorgefertigten Worteinbettung anstelle einer zufälligen verwendet?
quelle
tf.decode_csv()
, um die Textdatei in einen Tensor zu konvertieren. Dies kann jedoch teuer sein (insbesondere müssen Sie eineTensor
pro Spalte erstellen und dann die numerischen zusammenfügen). Eine einfachere Alternative wäre vielleicht , die Eingabe als NumPy-Array zu verwendenpandas.read_csv()
undpandas.DataFrame.as_matrix()
abzurufen.sess.run(embedding_init, ...)
(vorausgesetzt, Sie behalten keinen Verweis darauf in Ihrem Programm). Abhängig von der Struktur Ihres Programms möchten Sie möglicherweisedel embedding
(woembedding
sich das NumPy-Array befindet) das Array früher freigeben.Ich benutze diese Methode, um die Einbettung zu laden und zu teilen.
quelle
Die Antwort von @mrry ist nicht richtig, da sie das Überschreiben der Einbettungsgewichte bei jedem Netzwerkbetrieb provoziert. Wenn Sie also einen Minibatch-Ansatz zum Trainieren Ihres Netzwerks verfolgen, überschreiben Sie die Gewichte der Einbettungen. Aus meiner Sicht ist der richtige Weg zu vorab trainierten Einbettungen:
quelle
2.0 Kompatible Antwort : Es gibt viele vorgefertigte Einbettungen, die von Google entwickelt wurden und Open Sourced wurden.
Einige von ihnen sind
Universal Sentence Encoder (USE), ELMO, BERT
usw. und es ist sehr einfach, sie in Ihrem Code wiederzuverwenden.Code die wiederverwendet werden
Pre-Trained Embedding
,Universal Sentence Encoder
ist unten dargestellt:Weitere Informationen zu den von Google entwickelten und Open-Source-fähigen Pre-Trained Embeddings finden Sie unter TF Hub Link .
quelle
Mit Tensorflow Version 2 ist es ganz einfach, wenn Sie die Einbettungsebene verwenden
quelle
Ich hatte auch Probleme mit der Einbettung, also schrieb ich ein detailliertes Tutorial mit Datensatz. Hier möchte ich hinzufügen, was ich versucht habe. Sie können diese Methode auch ausprobieren.
Hier ist ein detailliertes Tutorial Ipython-Beispiel. Wenn Sie es von Grund auf verstehen möchten, schauen Sie es sich an.
quelle