2016-10-05 2 views

ответ

0

Скорее всего, что numpy.log будет быстрее. Вы можете сравнить их как на вашем CPU, так и на ваших данных.

import theano 
import theano.tensor as T 
import numpy as 

x = T.vector('x') 
theano_log = theano.function([x], T.log(x)) 

a = np.random.rand(1000).astype(np.float32) # test data 
assert np.allclose(theano_log(a), np.log(a)) # optional correctness check 

Затем измеряют с:

In [6]: %timeit np.log(a) 
100000 loops, best of 3: 7.89 µs per loop 

In [7]: %timeit theano_log(a) 
10000 loops, best of 3: 44.1 µs per loop 

Так что для вектора размером 1000 numpy примерно в 5 раз быстрее. Эти результаты могут измениться, если вы переключитесь на выполнение вычислений в графическом процессоре, который вы можете сделать с theano, а не с numpy.

Главное отличие заключается в том, как вы используете каждую библиотеку. В anano, если вы хотите сделать несколько операций с массивом (например: log-> square-> mean), вы сначала объявите граф вычислений, а затем сразу оцените весь график, что может привести к некоторым оптимизации. С помощью numpy вы будете оценивать каждый промежуточный шаг, создавая много промежуточных переменных в процессе, который в некоторых случаях можно избежать в theano.

Смежные вопросы