我想sklearn.grid_search.GridSearchCV()在多个处理器上并行使用.这是我第一次这样做,但我的初步测试显示它似乎正在起作用.
我试图理解文档的这一部分:
n_jobs:int,默认值为1并行运行的作业数.
pre_dispatch:int,或string,optional控制在并行执行期间调度的作业数.减少此数量可有助于避免在分配的作业多于CPU可处理的内容时消耗内存消耗.这个参数可以是:
无,在这种情况下,所有作业都会立即创建并生成.将此用于轻量级和快速运行的作业,以避免因按需生成作业而导致的延迟一个int,给出生成的总作业的确切数量一个字符串,给出一个表达式作为n_jobs的函数,如' 2*n_jobs'
有人可以为我打破这个吗?我无法理解之间的差异n_jobs和pre_dispatch.如果我设置n_jobs = 5和pre-dispatch=2,这是怎么从刚刚设置不同n_jobs=2?
假设您使用GridSearchCVKNN参数'grid : k=[1,2,3,4,5, ... 1000].
即使你设置了n_jobs=2,GridSearchCV也会首先创建1000个作业,每个作业都有一个选择k,也可以制作1000个数据副本(如果你的数据很大,可能会炸掉你的内存),然后将这1000个作业发送到2个CPU(大多数工作将会当然待定).
GridSearchCV不只是为2个CPU生成2个作业,因为按需处理作业的过程非常昂贵.它直接产生与您拥有的参数组合相同数量的作业(在这种情况下为1000).
从这个意义上讲,措辞n_jobs可能会产生误导.现在,使用pre_dispatch您可以设置要生成的预调度作业数.
| 归档时间: |
|
| 查看次数: |
1815 次 |
| 最近记录: |