Я изучаю Теано. Я написал простую функцию отсева, как показано ниже:Почему моя функция отсева в Theano значительно замедляет свертку?
import theano.tensor as T
srng = T.shared_randomstreams.RandomStreams()
def drop(input, dropout=0.0):
if T.gt(dropout, 0.):
retain_prob = 1 - dropout.astype('floatX')
mask = srng.binomial(n=1, p=retain_prob, size=input.shape, dtype='floatX')
return input * mask/retain_prob
else:
return input
Когда я применяю эту функцию для ввода первых двух сверточных слоев, среднее время, проведенное на каждом изображении увеличивается от 0,5 мс до 2,5 мс! Кто-нибудь знает, что может быть причиной такого резкого замедления?
Я использую карту GTX 980 с установленным cuDNN.
Однако даже версия MRG приведет к резкому замедлению – Jedi
Просто протестировал ее, и версия MRG вообще не вызывала замедление при применении к полностью подключенным слоям (Maxwell Titan X, CUDA 7.5, Theano 0.9.0dev4). Для сравнения, версия T.shared_randomstreams.RandomStreams() вызывала фактор замедления 10! – MichaelSB