Как избавиться от theano.gof.compilelock? - PullRequest
0 голосов
/ 11 сентября 2018

Я использую библиотеку joblib для одновременного запуска нескольких 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'

Я пытался использовать предложенную здесь технику , но это ничего не изменило. Чтобы быть точным, я создал файл в C: \ Users \ myname.theanorc со следующим:

[global]
base_compiledir=/tmp/%(user)s/theano.NOBACKUP

Я где-то читал (не могу найти ссылку, извините), что на машинах с Windows я не должен вызывать файл .theanorc.txt, а только .theanorc; в любом случае это не работает.

Знаете ли вы, что мне не хватает?

...