gpt4 book ai didi

memory - gensim: pickle 还是不 pickle ?

转载 作者:IT王子 更新时间:2023-10-28 23:38:11 42 4
gpt4 key购买 nike

我有一个关于 gensim 的问题。我想知道在保存或加载模型(或多个模型)时是否建议或需要使用 pickle,因为我在 GitHub 上找到了可以使用的脚本。

mymodel = Doc2Vec(documents, size=100, window=8, min_count=5, workers=4)
mymodel.delete_temporary_training_data(keep_doctags_vectors=True, keep_inference=True)

here

变体 1:

import pickle
# Save
mymodel.save("mymodel.pkl") # Stores *.pkl file
# Load
mymodel = pickle.load("mymodel.pkl")

变体 2:

# Save
model.save(mymodel) # Stores *.model file
# Load
model = Doc2Vec.load(mymodel)

gensim.utils 中,我觉得嵌入了一个 pickle 函数:https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/utils.py

默认保存 ... 尝试: _pickle.dump(self, fname_or_handle, 协议(protocol)=pickle_protocol) ...

我的问题的目标:我很高兴了解 1)我是否需要 pickle(为了更好的内存管理)和 2)以防万一,为什么它比加载 *.model 文件更好。

谢谢!

最佳答案

每当您使用内置的 gensim 函数 save() 存储模型时,无论文件扩展名如何,都会使用 pickle。 documentation for utils告诉我们:

class gensim.utils.SaveLoad

Bases: object

Class which inherit from this class have save/load functions, which un/pickle them to disk.

Warning

This uses pickle for de/serializing, so objects must not contain unpicklable attributes, such as lambda functions etc.

所以只要模型类继承自 gensim.utils.SaveLoad 类,gensim 就会使用 pickle 来保存任何模型。在您的情况下, gensim.models.doc2vec.Doc2Vec 继承自 gensim.models.base_any2vec.BaseWordEmbeddingsModel ,而后者又继承自 gensim.utils.SaveLoad它提供了实际的 save() 函数。

回答您的问题:

  1. 是的,除非您想编写自己的函数,否则您需要 pickle将模型存储到磁盘。使用 pickle 应该不会有问题,因为它在标准库中。你甚至不会注意到它。
  2. 如果你使用 gensim save()您可以选择任何文件扩展名的功能:*.model、*.pkl、*.p、*。 pickle 。保存的文件将被 pickle 。

关于memory - gensim: pickle 还是不 pickle ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50655405/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com