我对 Gensim 很陌生,我正在尝试使用 word2vec 模型训练我的第一个模型。我看到所有参数都非常简单易懂,但是我不知道如何跟踪模型的损失以查看进度。此外,我希望能够在每个 epoch 之后获得嵌入,以便我还可以证明预测在每个 epoch 之后也变得更加合乎逻辑。我怎样才能做到这一点?
或者,每次训练iter=1并在每个 epoch 之后保存损失和嵌入是否更好?听起来效率不高。
代码不多,但仍将其发布在下面:
model = Word2Vec(sentences = trainset,
iter = 5, # epoch
min_count = 10,
size = 150,
workers = 4,
sg = 1,
hs = 1,
negative = 0,
window = 9999)
Run Code Online (Sandbox Code Playgroud)
Mik*_*nov 11
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])
Run Code Online (Sandbox Code Playgroud)
get_latest_training_loss-可能是它的不正确(坏运气,现在github上是下降,无法查询)。我已经测试了这段代码并且损失增加了 - 看起来很奇怪。logging- gensim适合它。| 归档时间: |
|
| 查看次数: |
2344 次 |
| 最近记录: |