He's saying that the factorization of len(A) mustn't contain big primes, 
but I'd rather look at the binary expansion of len(A) instead.

On Wednesday, February 15, 2017 at 6:02:36 PM UTC+1, nouiz wrote:
>
> Why do you tell it should only work well if len(A) is small?
>
> batched_dot should work well for a big len(A).
>
> Fred
>
> On Wed, Feb 15, 2017 at 10:50 AM Adam Becker <[email protected] 
> <javascript:>> wrote:
>
>> Besides that, use subtensor and batched_dot can further vectorize things.
>>
>>
>> A = T.batched_dot(A[::2], A[1::2]) # if len(A)|1 == 0
>>
>>
>>
>> This should work well as long as len(A) contains only small prime factors
>>
>> On Wednesday, February 15, 2017 at 9:02:34 PM UTC+8, Kiuhnm Mnhuik wrote:
>>>
>>> I don't know how Theano works internally, so this might not work.
>>> First compute A[0] = A[0] x A[1]; A[1] = A[2] x A[3]; A[2] = A[4] x 
>>> A[5]; etc...
>>> Then repeat until you have just one matrix. If N is a power of 2 it's 
>>> easier...
>>>
>>> On Wednesday, February 15, 2017 at 12:33:40 PM UTC+1, [email protected] 
>>> wrote:
>>>>
>>>> Hi, 
>>>>
>>>> *Goal *
>>>>   In the context of a learning algorithm, I want to calculate the 
>>>> product:  
>>>>
>>>>                                 B = A[K-1] x A[K-1] x .... A[0], 
>>>>    
>>>> where each A[k] is a (sparse, if it helps to know) matrix of size N*N 
>>>> and "x" denotes the theano.dot() product . 
>>>>
>>>> *Question *
>>>>  * How can I do that for fairly large matrices, say each A[k] is *
>>>> 100x100* ? *
>>>>
>>>> *Things I've tried (t is theano and tt is theano.tensor):*
>>>>
>>>>    - *For loop*
>>>>
>>>> B = tt.eye(n=self.N, m=N)for k in range(0, K-1):
>>>>      B = t.dot(A[k], B)
>>>>
>>>> *Pro*: simple, works fine for N = 10
>>>> *Con*: If N >> (say N = 100), I get this error: 
>>>>   File "/usr/local/lib/python2.7/dist-packages/theano/gof/graph.py", line 
>>>> 392, in __init__self.auto_name = 'auto_' + str(next(self.__count__))
>>>> RuntimeError: maximum recursion depth exceeded while getting the str of an 
>>>> object
>>>>
>>>>
>>>>    - *Theano scan or reduce*
>>>>    
>>>>    results, _ = t.scan(fn=lambda k, tmp: tt.dot(A[k], tmp),
>>>>                              outputs_info=tt.eye(n=N, m=N),
>>>>                              sequences=[tt.arange(K, dtype='int64')])
>>>>    B = results[-1]
>>>>    
>>>>    
>>>>
>>>> *Pro*: works even for large matrices
>>>> *Con*: Epoch become incredibly slow (200,000 seconds instead of 500~1,000)
>>>>
>>>>
>>>>
>>>> Any help or advice would be much appreciated. 
>>>>
>>>> Thanks
>>>> Oussama
>>>>
>>>>
>>>> -- 
>>
>> --- 
>> 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] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 

--- 
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.

Reply via email to