我使用scikit-learn
来训练一个带有一些“高级”参数的KernelDensity
。当在初始拟合后评估score_samples
时,处理需要很长时间,而且有多个可用的内核,我希望能得到一些速度上的改进。score_samples
(取样本向量的任意长度)应该很容易并行化。在
直到现在,我一直在努力让事情正常运转。如果我运行我的脚本(我使用的是Pool.map()
),我会得到一个错误:实例方法不可pickle。在
这很明显,但是使用sklearn并严重依赖实例方法,我无法改变这种行为。在
有没有任何方法可以使用sklearn(和实例方法)进行任何类型的多处理?我不介意python是复制属于主进程的整个内存(这是可管理的),还是需要从主程序将每个块提交给score_samples
(不优雅,但可以完成任务)。在
有什么建议我应该去哪里看看?在
我只是猜测您需要存储线程特定的状态,这就是为什么您要创建一个处理池。我不确定这是否适用于scikit,但我会使用线程.local(). 听起来您对Python相当熟悉,但是这里有一个链接https://docs.python.org/3/library/threading.html#thread-local-data,如果它有帮助的话。在
我看了一眼sci工具包和那里的医生。你试过使用joblib吗/joblib.parallel?在
相关问题 更多 >
编程相关推荐