gensim word2vec 打印日志丢失

Dko*_*ova 4 python gensim word2vec

使用 gensim word2vec 模型时,如何打印以记录(文件或粗壮)训练阶段每个时期的损失。

我试过 :

 logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
 logging.root.setLevel(level=logging.INFO)
Run Code Online (Sandbox Code Playgroud)

但我没有看到任何损失打印。

Ann*_*ger 8

您可以使用该方法获得 word2vec 模型的最新训练损失get_latest_training_loss()。如果您想在每个 epoch 之后打印损失,您可以添加一个回调来执行此操作。例如:

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

class callback(CallbackAny2Vec):
    '''Callback to print loss after each epoch.'''

    def __init__(self):
        self.epoch = 0

    def on_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()])
Run Code Online (Sandbox Code Playgroud)

然而,损失是以累积方式计算的(即每个时期后打印的损失是到目前为止所有时期的总损失)。有关更多解释,请参阅gojomo 的回答