我正在使用joblib库一次在多个CPU上运行多个NN。我的想法是我要做出最终预测,作为所有不同NN预测的平均值。我在后端使用keras和theano。
如果我设置n_job = 1,但我的代码无法正常工作,但> 1失败。
这是错误消息:
[Parallel(n_jobs=3)]: Using backend ThreadingBackend with 3 concurrent workers.
Using Theano backend.
WARNING (theano.gof.compilelock): Overriding existing lock by dead process '6088' (I am process '6032')
WARNING (theano.gof.compilelock): Overriding existing lock by dead process '6088' (I am process '6032')
我使用的代码非常简单(适用于n_job = 1)
from joblib import Parallel, delayed
result = Parallel(n_jobs=1,verbose=1, backend="threading")(delayed(myNNfunction)(arguments,i,X_train,Y_train,X_test,Y_test) for i in range(network))
有关信息(我不知道这是否相关),这是我对keras的参数:
os.environ['KERAS_BACKEND'] = 'theano'
os.environ["MKL_THREADING_LAYER"] = "GNU"
os.environ['MKL_NUM_THREADS'] = '3'
os.environ['GOTO_NUM_THREADS'] = '3'
os.environ['OMP_NUM_THREADS'] = '3'
我尝试使用建议的here技术,但并没有改变任何事情。确切地说,我在C:\ Users \ myname.theanorc中创建了一个文件,其中包含以下文件:
[global]
base_compiledir=/tmp/%(user)s/theano.NOBACKUP
我已经读过某处(抱歉,找不到链接),在Windows计算机上,我不应该调用文件.theanorc.txt,而只能调用.theanorc;在任何情况下都行不通。
你知道我想念什么吗?