Ich bin neu bei Tensorflow und bei Word2vec. Ich habe gerade die word2vec_basic.py studiert, die die Modell mit Skip-Gram
Algorithmus. Jetzt möchte ich mit CBOW
Algorithmus trainieren. Stimmt es, dass dies erreicht werden kann, wenn ich einfach train_inputs
und train_labels
umkehren?
Ich denke, CBOW
-Modell kann nicht einfach erreicht werden, indem train_inputs
und train_labels
in Skip-gram
umgedreht werden, da die CBOW
-Modellarchitektur die Summe der Vektoren der umgebenden Wörter als eine einzige Instanz für die Klassifikator zur Vorhersage. Z. B. sollten Sie [the, brown]
zusammen verwenden, um quick
vorherzusagen, anstatt the
zu verwenden, um quick
vorherzusagen.
Um CBOW zu implementieren, müssen Sie eine neue generate_batch
Generatorfunktion schreiben und die Vektoren der umgebenden Wörter zusammenfassen, bevor Sie die logistische Regression anwenden. Ich habe ein Beispiel geschrieben, auf das du dich beziehen kannst: Ссылка
Für CBOW müssen Sie nur wenige Teile des Codes ändern word2vec_basic.py . Insgesamt sind Ausbildungsstruktur und -methode identisch.
Welche Teile soll ich in word2vec_basic.py ändern?
1) Wie er Trainingsdatenpaare generiert. Weil Sie in CBOW das zentrale Wort und nicht die Kontextwörter vorhersagen.
Die neue Version für generate_batch
wird
Dann wären neue Trainingsdaten für CBOW
%Vor%im Vergleich zu den Daten von Skip-gram
%Vor%2) Daher müssen Sie auch die variable Form ändern
%Vor%bis
%Vor%3) Verlustfunktion
%Vor%Beachten Sie Eingaben = tf.reduce_sum (einbetten, 1) , wie Zichen Wang es erwähnte.
Das ist es!
Tags und Links python tensorflow word2vec