Gensim word2vec训练不在批处理结束时回调

0 人关注

我想在Gensim word2vec模型上放置一个回调,以便在每个批次之后触发一些功能。每 文件 ,可以把回调放在批处理结束或历时结束上。然而,如下面的MVE所示,只有纪元回调实际触发。

要运行这个样本,让 corpus_filepath 指向一个无标点句子的行间分隔文件(给定行的句子中的单词应以空格分隔)。你可能还需要改变 workers Word2Vec 实例中的位置。

from gensim.models import Word2Vec
from gensim.models.callbacks import CallbackAny2Vec
corpus_filepath = 'train.txt'
out_filepath = 'out.txt'
class MyCallback(CallbackAny2Vec):
    def __init__(self):
    def on_batch_end(self, model):
        print('batch end')
    def on_epoch_end(self, model):
        print('epoch end')
callback = MyCallback()
model = Word2Vec(size=300, window=5, min_count=0, workers=64)
print('Making vocabulary...')
model.build_vocab(corpus_file=corpus_filepath)
print('Beginning training...')
model.train(corpus_file=corpus_filepath, epochs=5, total_words=model.corpus_total_words, callbacks=[callback])

不正确的输出(缺少批量打印)。

Making vocabulary...
Beginning training...
epoch end
epoch end
epoch end
epoch end
epoch end

我做错了什么?