Python 以numpy和theano.张量表示的对数之差

Python 以numpy和theano.张量表示的对数之差,python,numpy,theano,Python,Numpy,Theano,numpy.log和theano.tensor.log之间有什么区别? 它们的性能相同吗?很可能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) # te

numpy.log和theano.tensor.log之间有什么区别?
它们的性能相同吗?

很可能
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倍。如果您切换到在GPU中运行计算,则结果可能会有所不同,您可以使用
theano
而不是
numpy


主要区别在于使用每个库的方式。在theano中,如果您想对一个数组执行多个操作(例如:log->square->mean),您将首先声明一个计算图,然后立即计算整个图,这可能会导致一些优化。使用
numpy
您可以评估每个中间步骤,在流程中创建许多中间变量,在某些情况下可以在
中避免这些变量,而
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倍。如果您切换到在GPU中运行计算,则结果可能会有所不同,您可以使用
theano
而不是
numpy

主要区别在于使用每个库的方式。在theano中,如果您想对一个数组执行多个操作(例如:log->square->mean),您将首先声明一个计算图,然后立即计算整个图,这可能会导致一些优化。使用
numpy
您可以评估每个中间步骤,在流程中创建许多中间变量,在某些情况下,这些变量在
theano
中可以避免