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