I have tried that, but to no avail. The problem is that I have to multiply on 2 axes, but sum only on 1.
On Friday, 5 May 2017 19:23:12 UTC+3, Jesse Livezey wrote: > > I think tensordot should do what you want > > http://deeplearning.net/software/theano/library/tensor/basic.html#theano.tensor.tensordot > something like > result = T.tensordot(prob, cases, axes=1) > > > > On Friday, May 5, 2017 at 3:17:14 AM UTC-7, Šarūnas S. wrote: >> >> I was shown that in *numpy* I could speed it up in the following way: >> >> result = np.einsum('ijk,ijk->ik', prob, cases)[:,None,:] >> >> >> result = np.matmul(prob.transpose(2,0,1), cases.T).T >> >> >> Bot give me the expected speedup in *numpy*, but neither is implemented >> in *Theano*. Is there a way to do the same in *Theano* on the *GPU*? >> >> >> >> On Friday, 5 May 2017 11:15:26 UTC+3, Šarūnas S. wrote: >>> >>> In my current theano script the bottleneck is equivalent to the >>> following numpy code: >>> >>> import numpy as np >>> >>> # 3D example >>> 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 >>> >>> I had seen in 2D case that replacing elementwise+sum with a dot product >>> gave me 5x speedup. Are there any theano matrix operations that could help >>> me out here? >>> >> -- --- You received this message because you are subscribed to the Google Groups "theano-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
