Skip to content Skip to sidebar Skip to footer

Gensim Word2vec Print Log Loss

how to print to log (file or stout) the loss of each epoch in the training phase, when using gensim word2vec model. I tried : logging.basicConfig(format='%(asctime)s: %(levelname

Solution 1:

You can get the latest training loss of a word2vec model with the method get_latest_training_loss(). If you want to print the loss after every epoch you can add a callback that does this. For example:

from gensim.test.utils import common_texts, get_tmpfile
from gensim.models import Word2Vec
from gensim.models.callbacks import CallbackAny2Vec

classcallback(CallbackAny2Vec):
    '''Callback to print loss after each epoch.'''def__init__(self):
        self.epoch = 0defon_epoch_end(self, model):
        loss = model.get_latest_training_loss()
        print('Loss after epoch {}: {}'.format(self.epoch, loss))
        self.epoch += 1

model = Word2Vec(common_texts, size=100, window=5, min_count=1, 
                 compute_loss=True, callbacks=[callback()])

However, the loss is computed in a cumulative way (i.e. the loss that gets printed after each epoch is the total loss of all epochs so far). See gojomo's answer here for more explanation.

Solution 2:

This can print loss for each epoch. Thanks @Anna Krogager

from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
from gensim.models.callbacks import CallbackAny2Vec

classcallback(CallbackAny2Vec):
    '''Callback to print loss after each epoch.'''def__init__(self):
        self.epoch = 0
        self.loss_to_be_subed = 0defon_epoch_end(self, model):
        loss = model.get_latest_training_loss()
        loss_now = loss - self.loss_to_be_subed
        self.loss_to_be_subed = loss
        print('Loss after epoch {}: {}'.format(self.epoch, loss_now))
        self.epoch += 1

model = Word2Vec(LineSentence('./data/house_list'), size=100, workers=20, \
                    min_count=1, iter=30, window=5, compute_loss=True, callbacks=[callback()])
model.save('./model/v2.model')

Post a Comment for "Gensim Word2vec Print Log Loss"