在我当前的 theano 脚本中,瓶颈是以下代码:
import numpy as np
axis = 0
prob = np.random.random( ( 1, 1000, 50 ) )
cases = np.random.random( ( 1000, 1000, 50 ) )
start = time.time( )
for i in xrange( 1000 ):
result = ( cases * prob ).sum( axis=1-axis, keepdims=True )
print '3D naive method took {} seconds'.format( time.time() - start )
print result.shape
print
我曾在 2D 案例中看到,用点积替换 elementwise+sum 给了我 5 倍的加速。在这种情况下,是否有任何矩阵运算可以帮助我?
编辑:
Divakar给了我一个基于einsum的版本。但是,我的意图是将其移植到theano并且einsum在theano上不受支持。因此,欢迎使用可移植到theano的替代方案。