我想在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
我做错了什么?