Я использую теано и лазанью для проекта улучшения речи DNN. Я использую сеть с прямой связью, очень похожую на пример mnist в документации по лазанье (/github.com/Lasagne/Lasagne/blob/master/examples/mnist.py). В этой сети используется несколько слоев отсева. Я обучаю свою сеть на графическом процессоре Nvidia Titan X. Однако, когда я не использую отсев, загрузка моего графического процессора составляет примерно 60%, а одна эпоха занимает около 60 с, но когда я использую отсев, загрузка моего графического процессора падает до 8%, и каждая эпоха занимает примерно 600 с. Это независимо от коэффициента отсева, установленного на 20% или 0,1%.
Первоначально я думал, что это связано с генератором случайных чисел (ГСЧ), используемым для создания маски исключения, который не работал на графическом процессоре. Однако в коде (https://github.com/Lasagne/Lasagne/blob/master/lasagne/layers/noise.py) похоже, что используется rng_mrg, который должен работать на GPU по этой ссылке: http://deeplearning.net/software/theano/tutorial/examples.html#other-implementations
Запуск профилировщика theano показывает, что "theano.sandbox.rng_mrg.mrg_uniform" занимает 86,7% времени выполнения, чего я не понимаю.
Если у кого-нибудь есть идея, что убивает использование моего графического процессора, я был бы признателен.