2017-07-19 123 views
1

我想從gensim包運行doc2vec庫。我的問題是,當我在訓練和保存模型的模型文件是相當大(2.5 GB),我嘗試使用這一行:Gensim Doc2Vec爲模型生成巨大的文件

model.estimate_memory() 

但它並沒有改變任何東西。我也試圖改變max_vocab_size來減少空間。但沒有運氣。有人可以幫我解決這個問題嗎?

+0

這裏沒什麼錯,文檔嵌入只是巨大的。 –

+2

我投票結束這個問題作爲題外話,因爲它不是一個可以解決的問題,只是誤解了圖書館如何使用的作品。 2.5G已經在這方面有所偏差。 –

+0

我不明白。有人不理解編程任務的資源需求,這會產生一個問題。解釋算法/庫的基本操作可以解決誤解,並且還有其他編碼選項可用於實現基本目標。這些對於一個充分指定的問題形成了有用的答案。 – gojomo

回答

1

Doc2Vec模型可能很大。特別是,任何使用的單詞向量將使用每個維度4個字節,乘以模型的兩個層次。因此,與20萬單詞,一個300維模型只有使用矢量數組本身:

200,000 vectors * 300 dimensions * 4 bytes/float * 2 layers = 480MB 

(將有字典存儲詞彙信息的額外開銷)

任何DOC-載體將每個隱藏也使用4個字節。所以,如果你訓練向量百萬文檔標籤,該車型將採用只爲DOC矢量陣列:

1,000,000 vectors * 300 dimensions * 4 bytes/float = 2.4GB 

(如果你使用的任意字符串變量命名DOC的載體,有」 )

要在加載時使用更少的內存(這也會導致更小的存儲文件),您可以使用更小的詞彙表,訓練更少的doc-vecs或使用更小的向量大小。

如果您只需要某些狹義用途的模型,那麼在訓練後可能會拋出其他部分 - 但這需要知道模型內部/源代碼以及您的特定需求,並且會導致在許多其他常見操作中被破壞的模型(並可能拋出錯誤)。