3

プロジェクトにword2vecを使用しようとしていますが、トレーニング後に次のようになります。

INFO : not storing attribute syn0norm

を保存する方法はありますかsyn0norm

どうすればそうできますか?

4

1 に答える 1

3

これで問題ありません。配列 syn0norm を格納する必要はありません。

これは init_sims プロシージャで計算され、必要に応じてのみ計算されます。トレーニング後、実際には定義されていないため、トレーニングするものはありません。

モデル (most_similar など) をクエリすると、syn0norm が定義されているかどうかをチェックする init_sims が呼び出されます。そうでない場合は、次の行で割り当てます。

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 に答える