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