我正在尝试从gensim包运行doc2vec库。我的问题是,当我训练和保存模型时,模型文件相当大(2.5 GB)我尝试使用这一行:
model.estimate_memory()
但它没有改变任何东西。我也试图改变max_vocab_size来减少空间。但没有运气。有人可以帮我解决这个问题吗?
答案 0 :(得分:4)
Doc2Vec模型可能很大。特别是,使用中的任何字向量将使用每个维度4个字节,乘以模型的两个层。因此,具有200,000个单词词汇表的300维模型将仅用于向量数组本身:
200,000 vectors * 300 dimensions * 4 bytes/float * 2 layers = 480MB
(存储词汇信息的字典会有额外的开销。)
任何doc-vectors也会在每个dimnsion中使用4个字节。因此,如果您为一百万个doc-tags训练一个向量,该模型将仅用于doc-vectors数组:
1,000,000 vectors * 300 dimensions * 4 bytes/float = 2.4GB
(如果您使用任意字符串标记来命名doc-vectors,那么就会有额外的开销。)
要在加载时使用较少的内存(这也会导致较小的存储文件),您可以使用较小的词汇表,训练较少的文档,或使用较小的矢量大小。
如果你只是为了某些狭隘的目的而只需要这个模型,那么在训练之后你可能会抛出其他部分 - 但这需要了解模型内部/源代码,以及你的具体需求,并且导致模型在许多其他常规操作中被破坏(并可能抛出错误)。