Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python GridSearchCV如何使用核心?_Python_Ubuntu_Machine Learning_Neural Network_Spyder - Fatal编程技术网

Python GridSearchCV如何使用核心?

Python GridSearchCV如何使用核心?,python,ubuntu,machine-learning,neural-network,spyder,Python,Ubuntu,Machine Learning,Neural Network,Spyder,我正在做一个GridSearchCV,我监测了核心的百分比,我看到当我运行一个简单的神经网络时,4个核心的百分比是相同的,但是当grid search cv(n_jobs=1)开始时,绘图的线条出现了很大的混乱。为什么?我用佐林 下面您可以找到我执行gscv的代码部分(但我更改了n_作业,在上图中使用了n_作业=1): 根据: n_作业:int或None,可选(默认值=无) 要并行运行的作业数。None表示1,除非在joblib.parallel_后端上下文中-1表示使用所有处理器。有关更多详

我正在做一个GridSearchCV,我监测了核心的百分比,我看到当我运行一个简单的神经网络时,4个核心的百分比是相同的,但是当grid search cv(n_jobs=1)开始时,绘图的线条出现了很大的混乱。为什么?我用佐林

下面您可以找到我执行gscv的代码部分(但我更改了n_作业,在上图中使用了n_作业=1):

根据:

n_作业:int或None,可选(默认值=无)

要并行运行的作业数。None表示1,除非在joblib.parallel_后端上下文中-1表示使用所有处理器。有关更多详细信息,请参阅词汇表

默认情况下,您应该处于并行上下文中

从sklearn.utils导入
后端=_joblib.parallel_后端(_joblib.joblib.parallel.DEFAULT_后端)
backend.new_backend_和_作业
>>> (, -1)

因此,默认的n_作业id
-1
,因此当没有
n_作业
被传递时,GridSearchCV将使用所有CPU。

是的,我知道这一点。但我的问题不同。为什么在默认情况下我使用n_作业时,CPU使用率会发生变化,如图所示?@GabrieleValvo您是指仅使用一个作业时CPU使用率之间的“混乱”?@Bernardoduart在CPU使用率图中,您可以看到左侧的4行大致平坦,这段时间表示神经网络训练期间CPU的使用情况。左边有四条线的趋势非常活跃,这部分代表了Deafolt n_jobs(n_jobs=1)的网格搜索。为什么CPU使用率会有这种差异?我希望这个问题是正确的clear@GabrieleValvo我不确定为什么会发生这种情况,我只有一个假设,即既然您已经声明只有一个作业,对于每个作业,都会随机选择一个不同的CPU,这可能会导致每个CPU的工作负载不平衡,因为每个调用都可以由任何CPU使用,我相信,您可以通过多次调用它并验证在混乱的部分图形是否随机更改来测试这一点。关于第一部分,我有另一个假设,即默认情况下,训练是并行的。但因为我不确定,我不会把它添加到答案中/
def build_regressor(opti, units1,units2, units3, acti, a, kern):

    model_TP = Sequential()
    model_TP.add(Dense(units = units1, input_shape = (X_train_TP.shape[1],), activation = acti, kernel_initializer = kern))
    model_TP.add(Dropout(a))
    model_TP.add(Dense(units = units2, activation = acti, kernel_initializer = kern))
    model_TP.add(Dropout(a))
    model_TP.add(Dense(units = units3, activation = acti, kernel_initializer = kern))
    model_TP.add(Dense(1,activation = 'linear'))
    model_TP.compile(loss = 'mse', optimizer = opti, metrics = ['mse'])
    return model_TP

parameters ={'units1' : [50,100,150],
             'units2' : [50,100,150],
             'units3' : [50,100,150],
             'batch_size' : [50,100,250],
              'kern':['random_normal','glorot_uniform','random_uniform'],
              'acti':['relu','sigmoid','linear'],
              'opti':[tf.keras.optimizers.Adamax(lr=0.001),
                      tf.keras.optimizers.Adam(lr=0.001)],
              'a' : [0.2,0.25]
                          }

regressor = KerasRegressor(build_fn = build_regressor, verbose = 1)

gridSearch = GridSearchCV(estimator=regressor,
                          param_grid=parameters,
                          cv=5, n_jobs = 4
                          )

grid_result = gridSearch.fit(X_train_TP, y_train_TP)

print('Grid Search Best score',gridSearch.best_score_)
print('Grid Search Best Parameters', gridSearch.best_params_)
print('Execution time',gridSearch.refit_time_)