3

我正在尝试将word2vec用于一个项目,经过培训,我得到:

INFO : not storing attribute syn0norm

有什么办法可以保存syn0norm.

我该怎么做?

4

1 回答 1

3

这很好——您不需要存储数组 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

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

于 2015-03-16T21:11:46.243 回答