微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决由 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 举报,一经查实,本站将立刻删除。