问题标签 [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 投票
0 回答
1502 浏览

python - _pickle.PicklingError: 不能腌制: __main__ 上的属性查找 get_data 失败

我正在尝试运行以下脚本,据报道该脚本适用于某些人:

引发错误。当我以交互方式运行代码时,我发现它write_data_csv是破坏脚本的调用。

例如,脚本在使用之前运行没有错误,write_data_csv但该行valid_lst = write_data_csv("./validate-64x64-data.csv", validate_frames, lambda x: crop_resize(x, 64))抛出此错误:

我不确定我的下一步是如何解决这个问题。我发现了其他有关属性查找失败的 StackOverflow 问题,但它们要么本质上不同,要么没有答案。

0 投票
1 回答
4674 浏览

python - joblib.Parallel 通过挂在 Windows 上的 spyder 运行

我在工作中在 Windows Server 2013 上运行 Python 3.5.1。我有一些令人尴尬的并行任务,它们似乎可以在 Python 2.7 上使用基本相同的代码,但我无法弄清楚如何让它在 Python 3.5.1 上运行。

我正在使用 Anaconda 2.4.1

代码看起来像这样......我已经把它精简到了最低限度。

代码main.py

代码__init__.py

代码amodule.py

这与声明的必要性有什么关系if __name__ == '__main__':吗?我认为我不需要这个,因为它已经在语句Parallel中受到保护,并且应该只在调用模块时运行,这应该只发生一次。def__main__

我应该补充一点,如果我改变n_jobs=1amodule.py一切正常。

更新:

所以经过进一步审查,看来这可能与spyder有关。我正在使用 spyder 2.3.8。当我让 spyder 执行时,这是一个专用窗口,它可以工作。但是当它在交互式 IPython 控制台中运行时,它会失败。我也可以直接从命令行运行程序而不会出现问题。

更新 2:

经过进一步审查,这确实与 IPython 位于与 *.py 文件不同的工作目录有关。把那些排成一行,这很有效。

0 投票
2 回答
1803 浏览

python - Python:joblib 不适用于自定义函数

我正在尝试在 python 中使用并行计算包 joblib。我可以执行下面的例子并得到结果

但是,以下代码行不通。

当我运行上面的代码时,它会一直运行而不会产生任何结果或消息。

谁能找出这种奇怪行为的原因(我正在使用 Windows)?谢谢

0 投票
1 回答
343 浏览

numpy - 在网格搜索中评分返回 numpy.core.memmap 而不是 numpy.Number

GridSearchCV当使用LogisticRegression更大的数据集时,我们能够(仅在我们的应用程序 atm 的上下文中)在 Ubuntu 15.04 和 OS X 上使用 scikit 0.17 重现以下问题。

我们已经多次尝试在应用程序的上下文之外重现它,但没有任何运气。我们对它进行了以下更改cross_validation.py并解决了我们的特定问题:

更多信息:

  • 我们在 python 2.7
  • 我们使用 aPipeline来确保所有输入都是数字

我的问题如下:

  • 我们如何去重现这个问题以导致scorer返回 a memmap
  • 还有其他人有这个特殊问题吗?
  • 我们所做的改变cross_validation.py实际上是一个体面的解决方案吗?
0 投票
1 回答
1124 浏览

python - ipyparallel Hub Connection Timeout with parallel CV in scikit learn

我正在尝试使用 ipyparallel 训练多个 RandomForest 分类器。我的设计是嵌套的 CV 循环外部 CV 用于删除方差,内部 GridSearchCV 带有内置 ( n_jobs = -1) 以找到 RandomForest 的最佳估计器(# Forests,#trees in Forest),并使用 ipyparallel 和 sge 训练每个组合(拟合函数) (训练森林是最里面的一步)。

如果我使用 GridSearchCV 运行n_jobs = 1,一切都会顺利且缓慢地运行。但是,如果我n_jobs > 1在外部 CV 循环的第一次迭代(非常快)之后,我得到一个 HubConnectionTimeout 错误。

我已经附上了代码。和错误。

CV 循环:

ipyparallel : (适合 RUSRandomForestClassifier) - 由 GridSearchCV 从上面调用

错误:

0 投票
0 回答
568 浏览

python - 解开巨大的泡菜文件

我使用 joblib.dump() 为 RainForestClassifer 训练样本生成了大约 6 GB 的巨大泡菜文件。每次执行都必须使用 joblib.load() 加载 pickle 对象以处理输入数据。加载时间非常长,随后会影响脚本执行的性能。

有没有一种方法可以将对象一旦加载就可以持久保存在内存中,并使其可用于后续的 python 执行,而无需调用 joblib.load()。

使用像 sqlite 这样的数据库是否有助于更快地加载数据?

0 投票
1 回答
2201 浏览

python - 如何使用 joblib Python 返回一个矩阵?

我有一个返回列表的函数。我正在使用 joblib 进行并行处理。

我想val在从 1 到 500 的每次迭代中存储所有重新排列的列表,然后使用它们。

如果没有并行,我会这样做:

我可以并行执行此操作吗?

0 投票
0 回答
116 浏览

python - 并行化的正确工作流程是什么:在集群或多进程上运行?

我想调用一个类似于 parallelize.map(function, args) 的函数,它返回一个结果列表,并且用户对实际过程视而不见。我想将调用子进程并行化到另一个受益于多核的 unix 程序的功能之一。

我首先尝试了 ipython-cluster-helper。这适用于我的设置,但我在其他几台机器上安装时遇到了问题。我还必须在设置过程中询问集群的名称。我还没有看到其他程序为您在集群上启动作业,所以我不知道这是否是公认的做法。

joblib 似乎是并行化的标准,但它一次只能使用一个集群或计算机。这也可以,但速度要慢得多,因为它没有使用集群。

此外,如果程序运行时间过长而无法确保人们使用集群,我正在运行此代码的服务器会抱怨。我是否编写了另一个脚本来仅在我们的集群上运行该程序——如果我使用了 joblib?

目前,我在 setup.py 中添加了特殊参数来添加集群名称并在必要时安装 ipython-cluster-helper。当调用 map 时,它首先检查 ipython-cluster-helper 和集群名称是否可用,使用它们,否则使用 joblib。

还有什么其他方法可以实现这一目标?我正在寻找一种标准方法来执行此操作,该方法适用于大多数有或没有集群的机器,因此我可以发布代码并使其易于使用。

谢谢。

0 投票
1 回答
475 浏览

python - 在 Azure ML Studio 中增加 /dev/shm 的大小

我正在尝试在 Azure ML Studio 笔记本中执行以下代码:

我收到了这个错误:

有了n_jobs=1它可以正常工作。

我认为这是因为joblib库试图将我的数据保存到/dev/shm. 问题是它只有64M容量:

我无法通过设置JOBLIB_TEMP_FOLDER环境变量来更改此文件夹(export不起作用)。

感谢您的任何建议!

0 投票
3 回答
12147 浏览

python - 使用joblib在sklearn中重用由cross_val_score拟合的模型

我在python中创建了以下函数:

我认为为了进行交叉验证,sklearn 必须适合您的功能。

但是,当我稍后尝试使用它时(f 是我在上面保存的 pkl 文件joblib.dump(alg, filename, compress=1, cache_size=1e9))

我在第一行没有收到错误(所以看起来负载正在工作),但它告诉我NotFittedError: Estimator not fitted, call适合before exploiting the model.下一行。

我究竟做错了什么?我不能重复使用适合计算交叉验证的模型吗?我在 scikits learn 中使用 cross_val_score 时查看了保持拟合参数,但要么我不明白答案,要么它不是我想要的。我想要的是用 joblib 保存整个模型,以便以后无需重新安装即可使用它。