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