Model Gensim Doc2vec接受了训练,但没有获救

Model Gensim Doc2vec接受了训练,但没有获救,model,save,gensim,word-embedding,doc2vec,Model,Save,Gensim,Word Embedding,Doc2vec,当我在一个大型文本语料库上训练d2v时,我收到了以下3个文件: doc2vec.model.trainables.syn1neg.npy doc2vec.model.vocabulary.cum_table.npy doc2vec.model.wv.vectors.npy Bun最终型号尚未保存,因为磁盘上没有足够的可用空间 OSError: 5516903000 requested and 4427726816 written 有没有办法使用这些文件在比所有培训时间更短的时间内重新保存

当我在一个大型文本语料库上训练d2v时,我收到了以下3个文件:

doc2vec.model.trainables.syn1neg.npy

doc2vec.model.vocabulary.cum_table.npy

doc2vec.model.wv.vectors.npy
Bun最终型号尚未保存,因为磁盘上没有足够的可用空间

OSError: 5516903000 requested and 4427726816 written
有没有办法使用这些文件在比所有培训时间更短的时间内重新保存我的模型


提前谢谢你

如果您仍然在RAM中使用该模型,在可以运行新代码的环境(如Jupyter笔记本)中,您可以尝试清除空间(或附加新卷),然后再次尝试
.save()
。也就是说,您不需要重新训练,只需重新保存RAM中已有的内容

没有保存“未保存的内容”的常规。因此,即使确实保存的子文件可能很有价值,如果您不顾一切地想从第一次训练运行中挽救任何东西(可能是通过中这样的过程,尽管使用
Doc2Vec
)要想再次保存到同一位置/卷,则需要清除这些现有文件。(如果需要,也许您可以将它们传输到远程存储,但在本地删除它们以释放空间?)

如果您试图保存到一个以“.gz”结尾的文件名,gensim将尝试保存所有压缩的文件,这可能会有所帮助。(不幸的是,主向量数组的压缩效果不是很好,因此仅此一项可能还不够节约。)

要想在内存中精简一个已经训练过的模型,而不破坏它的某些功能,是不容易的。(有很多困难的方法,但前提是你确定你可以放弃一个完整的模型所能做的事情……目前还不清楚你是否处于这种情况。)

影响模型大小的主要因素是唯一单词的数量和唯一文档标记的数量

在训练前指定更大的
min_count
将丢弃更多的低频词,而极低频词通常只会损害模型,因此这种微调通常会同时改善三个方面:更快的训练、更小的模型和更高质量的下游任务结果


如果您使用的是纯整数doc标记,那么该模型将要求所有doc标记整数的向量空间从0到最大值。因此,即使您只训练了2个文档,如果它们有
999998
9999999
的纯int-doc标记,它仍然需要为100万个标记分配(并保存)垃圾向量,从0到9999999。因此,在某些情况下,人们的内存/磁盘使用率比预期的要高——或者使用从
0
开始的连续ID,或者切换到基于字符串的文档标记,可以大大减少大小。(但是,在培训之前必须再次选择此选项。)

不幸的是,我没有RAM中的模型。关于使用word2vec教程重新保存模型,我会尝试这样做,谢谢,我应该知道有什么主要区别吗?在
Doc2Vec
案例中,应该有额外的docvecs特定文件,您必须说明。在您列出的已保存的3个文件中,没有一个是具有经过训练的文档向量的文件,因此如果您需要这些文件,您必须重新训练–没有希望从您提到的3个文件中恢复这些文件。您可以尝试训练一个较小的测试Doc2Vec模型-保存它,查看其所有文件。。。包括那些类似于你的3。(如果它们不可见,则必须尝试更大的模型,bc子文件仅在阵列超过一定大小时使用。)尝试删除除这3个之外的所有文件,然后查看是否可以重建可用的模型。如果在较小的测试模型上有效,那么在较大的测试模型上重复。但实际上,唯一能确保有效的是重新训练,并确保有足够的空间保存结果。在笔记本中执行此操作将使您有更好的机会从中间进程错误中恢复,因为中间结果仍在RAM中,因此您可以(例如)清除磁盘空间,然后尝试另一个
save()
。感谢您的回答,他们确实帮助我停止了浪费时间尝试恢复此模型。)关于在笔记本上做这件事的非常有趣的提示,我会试试看,谢谢!