【问题标题】:memory error in sklearn's pipelinesklearn 管道中的内存错误
【发布时间】:2017-08-15 20:07:52
【问题描述】:

我像这样在我的代码中创建一个管道

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import SGDClassifier
from sklearn.pipeline import Pipeline

pipe = Pipeline(steps = [
        ('tfidf',TfidfVectorizer(max_df=0.5, min_df=10)),
        ('clf', SGDClassifier(loss='log', n_jobs=-1)),
])

当我开始在我的数据(大约 140 万个句子)上安装这条管道时,我看到 RAM 的使用快速而巨大地增加。

在这个增加之后,我的内核变得死了。我想,这是因为应用 TfidfVectorizer 后的稀疏矩阵已转换为密集矩阵。但是 SGDClassifier 可以处理稀疏矩阵,不是吗?

为什么会发生这种情况以及在这种情况下我能做些什么?

我的版本: ( 蟒蛇2.7, sklearn 0.18.1, scipy 0.18.1, numpy 1.12.0 )

【问题讨论】:

  • 显示错误的完整堆栈跟踪
  • @VivekKumar 我使用 python 笔记本并且没有错误。我看到使用 RAM 达到限制,并且在 Ipython Notebook 中只有消息“内核似乎已经死机。它将自动重新启动。”
  • 然后尝试使用没有管道的代码,即先适合tfidf,然后适合sgd。这样您就可以查明内存增加的位置。

标签: python scipy scikit-learn sparse-matrix


【解决方案1】:

我犯了错误,这段代码运行良好,没有内存泄漏。

【讨论】:

    猜你喜欢
    • 2017-12-20
    • 2020-01-28
    • 2016-02-02
    • 1970-01-01
    • 2017-12-29
    • 2020-07-11
    • 2015-11-01
    • 2020-02-01
    • 2016-07-06
    相关资源
    最近更新 更多