小编Ste*_*kin的帖子

为什么 scikit-learn 切换到 SequentialBackend?

我尝试在具有 16 个可用 CPU 的机器上运行以下代码:

def tokenizer(text):
    return text.split()

param_grid = [{'vect__stop_words': [None, stop],
               'vect__binary': [True, False]}]

bow = CountVectorizer(ngram_range=(1,1), tokenizer=tokenizer)  
multinb_bow = Pipeline([('vect', bow), ('clf', MultinomialNB())])

gs_multinb_bow = GridSearchCV(multinb_bow, param_grid, scoring='f1_macro', 
                              cv=3, verbose=1, n_jobs=-1)

gs_multinb_bow.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)

我设置n_jobs-1,但scikit-learn切换到SequentialBackend,即使我添加了上下文管理器with parallel_backend('loky'):并且脚本仍然仅使用 1 个并发工作器运行。

Fitting 3 folds for each of 4 candidates, totalling 12 fits
[Parallel(n_jobs=-1)]: Using backend SequentialBackend with 1 concurrent workers.
Run Code Online (Sandbox Code Playgroud)

如果我为 指定不同的值,同样的结果仍然存在n_jobs

为什么会这样?我最近在类似的任务上运行了似乎是相同的代码,并且网格搜索在多个 CPU 上并行工作,如n_jobs使用LokyBackend …

python parallel-processing machine-learning scikit-learn grid-search

5
推荐指数
0
解决办法
685
查看次数