Gensim Word2vec 存储属性 syn0norm

Gensim Word2vec storing attribute syn0norm

我正在尝试将 word2vec 用于一个项目,训练后我得到:

INFO : not storing attribute syn0norm

有什么方法可以保存 syn0norm

我该怎么做?

这很好 -- 您不需要存储数组 syn0norm。

它是在 init_sims 过程中计算的,并且仅在需要时计算。训练完后其实没有定义所以没啥可训练的

当您查询模型时(例如most_similar),它会调用init_sims 检查是否定义了syn0norm。如果不是,它会分配给它以下行:

self.syn0norm = (self.syn0 / sqrt((self.syn0 ** 2).sum(-1))[..., newaxis]).astype(REAL)

编辑:

在查看代码后(对于其他事情),我看到您可以指定是否要保存 syn0norm——有一个默认为 ['syn0norm'] 的忽略设置,因此以下将保存所有内容:

In [239]: model.save('test',ignore=[])
2015-03-17 09:07:54,733 : INFO : saving Word2Vec object under test, separately None
2015-03-17 09:07:54,734 : INFO : storing numpy array 'syn0' to test.syn0.npy
2015-03-17 09:08:15,908 : INFO : storing numpy array 'table' to test.table.npy
2015-03-17 09:08:17,908 : INFO : storing numpy array 'syn1neg' to test.syn1neg.npy
2015-03-17 09:08:35,037 : INFO : storing numpy array 'syn1' to test.syn1.npy
2015-03-17 09:09:03,766 : INFO : storing numpy array 'syn0norm' to test.syn0norm.npy

问题是,计算通常比保存和重新加载花费的时间更少。