J'essaie de comprendre l'implémentation de PV-DM avec moyennage dans gensim. Dans la fonction train_document_dm
dans doc2vec.py
la valeur de retour ("erreurs") de train_cbow_pair
est dans le cas de moyennage (cbow_mean=1
) non divisée par le nombre de vecteurs d'entrée (count
). Selon cette explication, il devrait y avoir une division par le nombre de documents dans le cas de la moyenne des vecteurs d'entrée: word2vec Parameter Learning Explained, equation (23). Voici le code de train_document_dm
:mises à jour des vecteurs de document dans doc2vec (PV-DM) dans gensim
l1 = np_sum(word_vectors[word2_indexes], axis=0)+np_sum(doctag_vectors[doctag_indexes], axis=0)
count = len(word2_indexes) + len(doctag_indexes)
if model.cbow_mean and count > 1:
l1 /= count
neu1e = train_cbow_pair(model, word, word2_indexes, l1, alpha,
learn_vectors=False, learn_hidden=learn_hidden)
if not model.cbow_mean and count > 1:
neu1e /= count
if learn_doctags:
for i in doctag_indexes:
doctag_vectors[i] += neu1e * doctag_locks[i]
if learn_words:
for i in word2_indexes:
word_vectors[i] += neu1e * word_locks[i]