Отслеживание потерь и вложений в модели Gensim word2vec - PullRequest
0 голосов
/ 29 января 2019

Я довольно новичок в Gensim и пытаюсь обучить свою первую модель, используя модель word2vec.Я вижу, что все параметры довольно просты и просты для понимания, однако я не знаю, как отследить потерю модели, чтобы увидеть прогресс.Кроме того, я хотел бы иметь возможность получать вложения после каждой эпохи, чтобы я также мог показывать , что предсказания также получают больше логических с каждой эпохой.Как я могу это сделать?

ИЛИ, лучше ли тренироваться для iter = 1 каждый раз и сохранять потери и вложения после каждой эпохи?Звучит не слишком эффективно.

Не так много, чтобы показать с кодом, но по-прежнему размещать его ниже:

model = Word2Vec(sentences = trainset, 
             iter = 5, # epoch
             min_count = 10, 
             size = 150, 
             workers = 4, 
             sg = 1, 
             hs = 1, 
             negative = 0, 
             window = 9999)

1 Ответ

0 голосов
/ 29 января 2019

gensim позволяет нам использовать обратные вызовы для таких целей.

Пример:

from gensim.models.callbacks import CallbackAny2Vec

class MonitorCallback(CallbackAny2Vec):
    def __init__(self, test_words):
        self._test_words = test_words

    def on_epoch_end(self, model):
        print("Model loss:", model.get_latest_training_loss())  # print loss
        for word in self._test_words:  # show wv logic changes
            print(model.wv.most_similar(word))

"""
prepare datasets etc.
... 
...
"""

monitor = MonitorCallback(["word", "I", "less"])  # monitor with demo words
model = Word2Vec(sentences = trainset, 
             iter = 5, # epoch
             min_count = 10, 
             size = 150, 
             workers = 4, 
             sg = 1, 
             hs = 1, 
             negative = 0, 
             window = 9999, 
             callbacks=[monitor])
  • теперь есть некоторые проблемы с get_latest_training_loss - может быть, это неправильно (неудача, пока github не работает, не могу проверить).Я проверил этот код, и потери увеличиваются - выглядит странно.
  • может быть, вы предпочитаете logging - gensim приспособлен для него.
...