由 joblib 的 Parallel 运行时,Sklearn cv 迭代器参数失败

问题描述

我正在使用一个使用 sklearn 分类类(nilearn 但它并不重要)的包。 但是,我正在尝试将它与自定义 cv 参数一起使用。喜欢:

cv = iter(((iTr1,iTs1),(iTr2,iTs2),...))

现在,指定的函数有以下块:

from sklearn.model_selection import cross_val_score
from joblib import Parallel,delayed,cpu_count
scores = Parallel(n_jobs=n_jobs,verbose=verbose)(  \
            delayed(_group_iter_search_light)(*someArgs,cv,*someMoreArgs) \
            for thread_id,mtrx in enumerate(matrices))
...

_group_iter_search_light函数中,使用cv的相关块是:

cross_val_score(estimator,X[:,row],y,cv=cv,n_jobs=1,scoring=scoring)

鉴于此,我的代码崩溃并显示以下消息: ValueError:没有足够的值来解包(预期为 3,得到 0)

但是,当我将代码(不建议篡改公共包,我知道...)更改为:


scores = [_group_iter_search_light(*someArgs,*someMoreArgs) for mtrx in matrices]

也就是说 - 用非并行版本替换并行版本,它完美运行。

任何想法为什么以及我能做什么? Loadwise,我对串行没问题,但如果可能的话,我非常喜欢使用普通版本......

谢谢,

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)