Thanks for your post.
I need this scan loop for calculating my functions values in a less memory 
intensive way and  where the loops are independent for perhaps later 
parallelizing. I know that this kind of example is still recurrent because 
of the addition of EPhiTPhi. To fix this is not the problem I think, but 
before this I need to do this special calculation, were I pick the rows of 
SIGMA_trf 
too make this special calculation where i have to blow up Sigma_trf. Thanks 
for you time either.

Am Dienstag, 18. April 2017 23:05:26 UTC+2 schrieb Triet Chau:
>
> If calculating the gradient was your goal, I recommend checking out the 
> grad function, 
> http://deeplearning.net/software/theano/tutorial/gradients.html
>
> On Tuesday, 18 April 2017 22:26:24 UTC+2, [email protected] wrote:
>>
>> Back to the topic:
>> Even when I squeeze SIGMA_trf before blowing it up to SIGMA_trf[None, 
>> None, :] I get this error. I would expect that after squeezing SIGMA_trf 
>> I would have a object like (,D). Whats wrong with this assumption? Can 
>> anyone help?
>>
>> Am Dienstag, 18. April 2017 22:19:32 UTC+2 schrieb 
>> [email protected]:
>>>
>>> More or less yes. But the other post was more about using scan in 
>>> general, now its a special issue I have.
>>>
>>> Am Montag, 17. April 2017 14:18:39 UTC+2 schrieb Triet Chau:
>>>>
>>>> Hi, does your code still serve the same purpose as that from your 
>>>> previous post (
>>>> https://groups.google.com/forum/#!topic/theano-users/gSZLwu8UrO0)?
>>>>
>>>> On Wednesday, 12 April 2017 13:04:30 UTC+2, [email protected] 
>>>> wrote:
>>>>>
>>>>> Hello,
>>>>>
>>>>> I try to loop with the scan function from theano.
>>>>> I have a working example:
>>>>>
>>>>>
>>>>>    1. import numpy as np
>>>>>    2. import theano
>>>>>    3. import theano.tensor as T 
>>>>>    4.  
>>>>>    5. N = 100
>>>>>    6. M = 50
>>>>>    7. D = 2
>>>>>    8. EPhiTPhi = np.zeros((M,M))
>>>>>    9. Z_n_W = T.dtensor3("Z_n_W")   
>>>>>    10. MU_S_hat_minus = T.dtensor3("MU_S_hat_minus") 
>>>>>    11.              
>>>>>    12. def EPhiTPhi_loop(EPhiTPhi, Z_n_W, MU_S_hat_minus):
>>>>>    13.    EPhiTPhi = EPhiTPhi + Z_n_W * (T.exp(-0.5 * (MU_S_hat_minus
>>>>>    **2).sum(2)));  
>>>>>    14.    return EPhiTPhi
>>>>>    15. 
>>>>>    16. EPhiTPhi_out, _ = theano.scan(EPhiTPhi_loop,
>>>>>    17.                        outputs_info = EPhiTPhi,
>>>>>    18.                        sequences = [Z_n_W],
>>>>>    19.                        non_sequences = [MU_S_hat_minus])
>>>>>    20. 
>>>>>    21. OUT = theano.function(inputs=[Z_n_W, MU_S_hat_minus], outputs = 
>>>>>    EPhiTPhi_out)
>>>>>    22. 
>>>>>    23.  
>>>>>    24. Z_n_W = np.ones((N,M,M))     
>>>>>    25. MU_S_hat_minus = np.zeros((M,M,D))    
>>>>>    26. #EPhiTPhi = EPhiTPhi.astype(np.float32)
>>>>>    27. #Z_n_W = Z_n_W.astype(np.float32)
>>>>>    28. #MU_S_hat_minus = MU_S_hat_minus.astype(np.float32)
>>>>>    29. 
>>>>>    30. LIST = {'Z_n_W': Z_n_W, 'MU_S_hat_minus': MU_S_hat_minus}
>>>>>    31. 
>>>>>    32. TEST = OUT(**LIST)
>>>>>    
>>>>>
>>>>> When I try to extend it with one additional sequence variable of size 
>>>>> (N,D), SIGMA_trf, I expect to hand over to EPhiTPhi_loop a vector 
>>>>> with size(1,D).
>>>>> When i want to make a calculation, where i have to blow up this vector 
>>>>> to SIGMA_trf[None, None, :], I get an error.
>>>>> Her first the extenden code.
>>>>>
>>>>>
>>>>>    1. import numpy as np
>>>>>    2. import theano
>>>>>    3. import theano.tensor as T 
>>>>>    4.  
>>>>>    5. N = 100
>>>>>    6. M = 50
>>>>>    7. D = 2
>>>>>    8. EPhiTPhi = np.zeros((M,M))
>>>>>    9. SIGMA_trf = T.dmatrix("SIGMA_trf")  
>>>>>    10. Z_n_W = T.dtensor3("Z_n_W")   
>>>>>    11. MU_S_hat_minus = T.dtensor3("MU_S_hat_minus") 
>>>>>    12. 
>>>>>    13.              
>>>>>    14. def EPhiTPhi_loop(EPhiTPhi, SIGMA_trf, Z_n_W, MU_S_hat_minus):
>>>>>    15.    EPhiTPhi = EPhiTPhi + Z_n_W * (T.exp(-0.5 * (MU_S_hat_minus
>>>>>    **2 * SIGMA_trf[None, None, :]).sum(2)));  
>>>>>    16.    return EPhiTPhi
>>>>>    17. 
>>>>>    18. EPhiTPhi_out, _ = theano.scan(EPhiTPhi_loop,
>>>>>    19.                        outputs_info = EPhiTPhi,
>>>>>    20.                        sequences = [SIGMA_trf, Z_n_W],
>>>>>    21.                        non_sequences = [MU_S_hat_minus])
>>>>>    22. 
>>>>>    23. OUT = theano.function(inputs=[SIGMA_trf, Z_n_W, MU_S_hat_minus]
>>>>>    , outputs = EPhiTPhi_out)
>>>>>    24. 
>>>>>    25. SIGMA_trf = np.zeros((N,D))    
>>>>>    26. Z_n_W = np.ones((N,M,M))     
>>>>>    27. MU_S_hat_minus = np.zeros((M,M,D))    
>>>>>    28. #EPhiTPhi = EPhiTPhi.astype(np.float32)
>>>>>    29. #Z_n_W = Z_n_W.astype(np.float32)
>>>>>    30. #MU_S_hat_minus = MU_S_hat_minus.astype(np.float32)
>>>>>    31. 
>>>>>    
>>>>>    32.  
>>>>>    33. LIST = {'SIGMA_trf': SIGMA_trf, 'Z_n_W': Z_n_W, 
>>>>>    'MU_S_hat_minus': MU_S_hat_minus}
>>>>>    34. 
>>>>>    35. TEST = OUT(**LIST)
>>>>>    
>>>>>
>>>>> The error is:
>>>>>
>>>>> Traceback (most recent call last):
>>>>>
>>>>>   File "<ipython-input-1-dd8e5b5e726c>", line 22, in <module>
>>>>>     non_sequences = [MU_S_hat_minus])
>>>>>
>>>>>   File 
>>>>> "C:\ProgramData\Anaconda3\lib\site-packages\theano\scan_module\scan.py"
>>>>> , line 773, in scan
>>>>>     condition, outputs, updates = scan_utils.get_updates_and_outputs(
>>>>> fn(*args))
>>>>>
>>>>>   File "<ipython-input-1-dd8e5b5e726c>", line 15, in EPhiTPhi_loop
>>>>>     EPhiTPhi = EPhiTPhi + Z_n_W * (T.exp(-0.5 * (MU_S_hat_minus**2 * 
>>>>> SIGMA_trf[None, None, :]).sum(2)));
>>>>>
>>>>>   File 
>>>>> "C:\ProgramData\Anaconda3\lib\site-packages\theano\tensor\var.py", 
>>>>> line 560, in __getitem__
>>>>>     view = self.dimshuffle(pattern)
>>>>>
>>>>>   File 
>>>>> "C:\ProgramData\Anaconda3\lib\site-packages\theano\tensor\var.py", 
>>>>> line 355, in dimshuffle
>>>>>     pattern)
>>>>>
>>>>>   File 
>>>>> "C:\ProgramData\Anaconda3\lib\site-packages\theano\tensor\elemwise.py"
>>>>> , line 177, in __init__
>>>>>     (input_broadcastable, new_order))
>>>>>
>>>>> ValueError: ('You cannot drop a non-broadcastable dimension.', ((False
>>>>> , False), ('x', 'x', 0)))
>>>>>
>>>>>
>>>>> Thanks for your help.
>>>>>
>>>>

-- 

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