我的任务就像
from sklearn.gaussian_process import GaussianProcessRegressor
num = 100
model = dict()
for i in range(100):
model[i]=GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=20)
for i in range(num):
model[i].fit(X,Y)
其中X,Y
分别是我的训练数据,其中包含功能和标签。
我的Ubuntu有4个CPU。为了将培训时间成本减少到上述代码的四分之一,因此,我想在CPU-0上执行model[0].fit(X, Y)
,在CPU-1上执行model[1].fit(X, Y)
,在CPU-2上执行model[2].fit(X, Y)
和model[3].fit(X, Y)
在CPU-3上同时显示。我该怎么办?
答案 0 :(得分:-1)
用列表中的实际训练数据替换input_x和input_y。
input_x=[X for i in range(100)]
input_y=[Y for i in range(100)]
def trainmodel(X,Y):
model=GaussianProcessRegressor(n_restarts_optimizer=20)
model.fit(X,Y)
return model
models=joblib.Parallel(n_jobs=4,verbose=1)(map(joblib.delayed(trainmodel),input_x,input_y))
您还应该检查可用的cpu数量,以防万一
import multiprocessing
multiprocessing.cpu_count()