问题标签 [joblib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
7475 浏览

python - 在不同用户下执行脚本时没有名为 numpy_pickle 的模块

我有一个使用 sklearn joblib 加载持久模型并执行预测的 python 脚本。当我在我的用户名下运行脚本时,脚本运行良好,当其他用户尝试运行相同的脚本时,他们收到错误“ImportError:没有名为 numpy_pickle 的模块”

我还将脚本复制到另一个用户主目录并从那里运行它仍然是同样的错误,我也从 python shell 运行它并且没有任何改变。这是我在 Python shell 中运行的内容:

上面的第二行在我的用户名下工作,并在所有其他用户下给出以下错误:

这一切都在运行一台带有 Ubuntu 14.04.1 LTS 的服务器。

任何想法为什么会发生这种情况?

谢谢

0 投票
2 回答
13874 浏览

python - 为什么在使用 joblib.Parallel 时保护主循环很重要?

joblib 文档包含以下警告:

在 Windows 下,保护代码的主循环以避免在使用 joblib.Parallel 时递归生成子进程非常重要。换句话说,您应该编写如下代码:

任何代码都不应在“if __name__ == '__main__'”块之外运行,只能在导入和定义之外运行。

最初,我认为这只是为了防止偶尔出现的奇怪情况,即函数传递给joblib.Parallel递归调用模块,这意味着这通常是一种很好的做法,但通常是不必要的。但是,这对我来说没有意义,为什么这只会在 Windows 上存在风险。此外,这个答案似乎表明未能保护主循环导致代码运行速度比其他非常简单的非递归问题慢几倍。

出于好奇,我从 joblib 文档中运行了一个令人尴尬的并行循环的超级简单示例,而没有保护 windows 框上的主循环。在我关闭它之前,我的终端收到了以下错误消息:

我的问题是, joblib 的 windows 实现需要在每种情况下都保护主循环吗?

抱歉,如果这是一个超级基本的问题。我是并行化世界的新手,所以我可能只是遗漏了一些基本概念,但我在任何地方都找不到明确讨论的这个问题。

最后,我想指出,这纯粹是学术性的;我理解为什么以这种方式编写代码通常是一种好习惯,并且将继续这样做,而不管 joblib。

0 投票
1 回答
108 浏览

python-2.7 - 为什么我的 nltk 分类模型不会与 joblib 一起存在?

我注意到其他人在不同的操作系统上遇到了这个问题,而且我还听说模块中可能存在不允许加载持久分类模型的东西。我正在使用带有 python 2.7 和 Enthought Canopy 编辑器的 mac。

这是我用来导出的,它似乎可以工作:

这就是我用来通过 shell 导入的内容:

这是我得到的错误:

AttributeError:“FreqDist”对象没有属性“_N”

我假设这意味着我的模型没有正确导出。我也无法在程序本身内自动执行导出过程,并且必须始终使用 shell 这样做。

非常感谢您的任何建议。

0 投票
1 回答
1322 浏览

python - 调用保存的分类器时无法转换数组数据

我使用https://gist.github.com/zacstewart/5978000示例创建了一个分类器。为了训练分类器,我使用以下代码

如果我在这个文件中测试一个示例,那么它可以正常工作。但我正在尝试将分类器保存到 my_trained_data.pkl 然后将其称为 ass 以下

这给出了以下错误。

以下是痕迹

0 投票
1 回答
4720 浏览

python - Python多处理(joblib)参数传递的最佳方式

我注意到使用多处理(使用 joblib)时有很大的延迟。这是我的代码的简化版本:

因此,如果我像上图所示运行它,大约需要 30 秒才能完成并使用近 200Mb。如果我只是在 Parallel 中更改参数 n_jobs 并将其设置为 1 只需要 1.80 秒并且几乎不使用 50Mb ...

我想它必须与我传递参数的方式有关,但还没有找到更好的方法来做到这一点......

我正在使用 Python 2.7.9

0 投票
1 回答
1007 浏览

python - joblib 是否需要多个内核来进行多处理?

我正在使用 joblib 并行处理 4 帧(从视频中获取的图像)。为此使用了并行 for 循环,其中每个循环为不同的帧调用相同的函数。由于捕获帧只占用总处理时间的 1%(通过使用 line profiler 的 python 脚本分析发现),我首先捕获 4 个帧并交给 joblib 进行多处理。

我发现使用笔记本电脑,这个过程大约加快了 5 倍。在 Rapberry pi-2(四核)上,观察到几乎 8 倍的加速,在 Beaglebone Black(非多核)上,也观察到几乎 7 倍的加速。那么,joblib 究竟是如何分配任务的呢?

0 投票
2 回答
2686 浏览

python - joblib.Parallel 用于嵌套列表理解

我有一个看起来像这样的嵌套列表理解:

是否可以使用标准的 joblib 方法将其并行化,以实现令人尴尬的并行 for 循环?如果是这样,正确的语法是delayed什么?

据我所知,文档没有提到或给出任何嵌套输入的例子。我尝试了一些天真的实现,但无济于事:

如果这是不可能的,我显然可以在将列表传递给Parallel. 但是,我的实际清单很长,而且每个项目都很大,所以这样做并不理想。

0 投票
1 回答
83 浏览

python - 将 PyNeural 模型保存到磁盘

我使用PyNeural训练了一个模型。

如何保存这个训练有素的模型?我试过了picklesklearn.externals.joblib但没有奏效。正如后来所说TypeError: can't pickle NeuralNet objects

0 投票
1 回答
1236 浏览

python - sklearn.externals.joblib 不加载 pkl 文件

我从一位离开我公司的同事那里继承了一些代码,我注意到他编写的电子邮件打开预测器在几周内没有运行。所以,我尝试运行它。它到了这一行:

clf_predict = joblib.load(os.path.join(data_dir,'trained_random_forest.pkl'))

结果是这样的:

从我在文档中看到的内容来看,加载的语法对我来说是正确的。因此,我最初的理论是 scikit-learn 可能已升级并且无法读取当前的 pickle 文件(此时已经有几个月了)。但是,我不确定它是否已升级,而且我对使用 sklearn 还很陌生,所以我不知道这是否会造成问题。感谢您提供的任何指示

0 投票
0 回答
340 浏览

python - 多处理python代码

当我尝试并行化 python 代码时,我得到一个断言错误。这是代码:

单独地,splitframe 中的每个元素 (h) 都可以与产生预期结果的函数removeident一起使用。removeident(h)

错误消息在控制台上:

问题可能是什么?