【问题标题】:Gensim Model : class 'FileNotFoundError'Gensim 模型:类“FileNotFoundError”
【发布时间】:2020-08-28 00:32:53
【问题描述】:

问题是我有 1000 多个文档,我通过了所有用于训练 Gensim 模型的文档,我成功地训练并以 .model 格式保存了模型。

但是以目前的格式,还生成了2个新文件

  1. doc2vec.model
  2. doc2vec.model.trainables.syn1neg.npy
  3. doc2vec.model.wv.vectors.npy

由于硬件的限制,我分别在 Google Colab 和 Google Driver 上训练并保存了模型。当我在本地机器上下载生成的模型和额外文件并运行代码时,它给了我一个 File Not Found 错误,而我添加了 .py 文件所在的特定文件或当前工作目录所在的位置。

我用下面的代码

from gensim.models.doc2vec import Doc2Vec, TaggedDocument
from nltk.tokenize import word_tokenize

files = readfiles("CuratedData")
data = [TaggedDocument(words=word_tokenize(_d.decode('utf-8').strip().lower()), tags=[str(i)]) for i, _d in enumerate(files)]

max_epochs = 100
vec_size = 300
alpha = 0.025

model = Doc2Vec(vector_size=vec_size,
                alpha=alpha,
                min_alpha=0.00025,
                min_count=1,
                dm=1)

model.build_vocab(data)

for epoch in range(max_epochs):
    print('iteration {0}'.format(epoch))
    model.train(data,
                total_examples=model.corpus_count,
                epochs=model.iter)
    # decrease the learning rate
    model.alpha -= 0.0002
    # fix the learning rate, no decay
    model.min_alpha = model.alpha

model.save("doc2vec.model")
print("Model Saved")

加载模型的代码

    webVec = ""
    try:

        path = os.path.join(os.getcwd(), "doc2vec.model")

        model = Word2Vec.load(path)

        data = word_tokenize(content['htmlResponse'].lower())

        # Webvector
        webVec = model.infer_vector(data)
    except ValueError as ve:
        print(ve)
    except (TypeError, ZeroDivisionError) as ty:
        print(ty)
    except:
        print("Oops!", sys.exc_info()[0], "occurred.")

任何帮助将不胜感激。谢谢,干杯

【问题讨论】:

    标签: python python-2.7 gensim word2vec doc2vec


    【解决方案1】:

    保存大型模型通常会为大型内部数组创建多个附属文件。所有这些文件必须保存在一起。 (它们都以相同的字符串开头,即您最初指定的名称 - 在您的情况下,doc2vec.model。)

    您可能有另一个文件未能下载。但是,如果没有看到您用来触发错误的代码或完整的错误回溯堆栈(涉及文件名和代码行),很难猜测您究竟做了什么来触发FileNotFoundError。您可能需要编辑您的问题以添加该信息,以便更清楚您之前运行的代码、涉及的库代码、确切的错误。

    【讨论】:

    • 感谢 gojomo 的回复。我已经彻底检查了没有生成新文件。但我观察到的是,当我将该模型与 Google Collab 本身一起使用时。当我下载并尝试在本地机器上使用该模型时,我可以使用它
    • 因为您添加的代码中没有任何行执行.load(),因此它们无法帮助揭示触发FileNotFoundError 的原因。此外,仍然没有完整的错误消息/回溯。所以仍然有人猜测实际触发错误的原因。当您说“当我下载并尝试在本地计算机上使用该模型时,我可以使用它”,这是否意味着您不再收到错误?
    • 另外:当您自己管理alpha 并在循环中多次调用.train() 时,您复制了一些不必要的复杂且容易出错的代码来制作您的代码。请参阅stackoverflow.com/questions/62801052/… 的答案,了解为什么这是一种不好的方法的更多详细信息。
    • 感谢有关代码复杂性的提示。我已经更新了代码看看,我遇到的另一件奇怪的事情是我将它部署在一个 VM 上,它向我显示了错误,所以我所做的是我在 VM 上训练 Gensim 模型并生成 .模型文件和 Vola 它有效,但我仅在 10-15 个文档上对其进行了训练。我认为 gensim 也在使用其他一些无法访问或存储在临时变量中的参数
    • 如果没有看到完整的错误消息和回溯堆栈,就不可能猜出您可能会遇到什么问题。 (你的“使用一些其他参数......无法访问”的理论并不是很合理,但你真正击中的是什么?只有通过查看实际的、完整的、原始的错误消息才能知道。不是你发现的任何东西&重新-打印。)
    猜你喜欢
    • 1970-01-01
    • 2018-03-04
    • 2014-04-02
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    相关资源
    最近更新 更多