我正在尝试将 word2vec 用于项目,经过培训后我得到:
INFO : not storing attribute syn0norm
我有什么方法可以保存syn0norm
。
我该怎么办?
答案 0 :(得分:2)
这很好 - 您不需要存储数组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
问题是,计算通常比保存和重新加载花费的时间更少。