Hi Feras.  The line 

self.layer0_input = input.reshape((66, 3, 100, 100))


Is wrong - it will put your data in the right shape, but the data will be 
meaningless.  I think you want dimshuffle, as in:

self.layer0_input = input.dimshuffle(0, 3, 1, 2)

The bias-addition part looks right though.


On Monday, November 7, 2016 at 3:05:54 PM UTC+1, Feras Almasri wrote:
>
> Hello, 
>
> I'm not sure if my implementation is correct so I'm here to ask for 
> recommendation. 
>
>
> my input is of the size (66,100,100,3)  
> 66 = batch size 
> 100,100 width and height 
> 3 is the image depth since it is colored. 
>  
> so the first I do is to shuffle the input into 
>
> self.layer0_input = input.reshape((66, 3, 100, 100))
>
>
> I'll just talk about the first convolution. I'm using as a first layer 
> convolution of 3 by 3 dimension with depth 32 so my result is of size 
> (66,32,98,98) without pooling 
>
>
> later to add the bias I have to shuffle the vector b from 1D 32 into 
>
> self.b.dimshuffle('x', 0, 'x', 'x')
>
>
> I don't know if the implementation is correct so each b is added and 
> broadcasted into each kernel. In order to check the result 
>
>
> I printed the result of the convolution and the result after adding the bias 
> or in a different way I implemented this 
>
>
> print conv[0][0] - conv_b[0][0]
>
>
> so here I check if the same bias is added to the full batch or single depth 
> in the first layer. the result is good so the b is added correctly to kernel.
>
> I wanted to check to which bias this result belong by printing the the value 
> of the bias and it turned out to be different non of the values belong to the 
> list of the biases 
>
>
> here is the values of the biases 
>
> [ -1.44519465e-04 1.74123124e-06 -1.13637732e-04 1.43587783e-06 
> 3.36924654e-06 5.05619437e-06 -1.06570985e-09 -4.12313739e-06 
> -2.31869606e-04 -4.95991553e-05 1.45750237e-05 -4.66647077e-09 
> -1.09766654e-04 1.57191480e-05 1.55315167e-04 2.15575733e-06 7.00626856e-07 
> 3.62427163e-05 9.70169058e-05 7.42816774e-05 -7.28896484e-05 4.93809648e-06 
> -8.88103386e-06 -2.78137827e-06 -1.84110595e-05 -3.87128166e-05 
> -1.27837466e-05 3.16912156e-06 
>
>   -2.48807328e-06   9.45689771e-06   2.58873297e-05   5.42514499e-06]
>
>
> and here is the result of 
>
> or idx in xrange(32):
>
>     print conv[0][idx][0][0] - conv_b[0][idx][0][0]
>
>
> 0.000137329 0.0 0.000114441 -1.90735e-06 0.0 0.0 0.0 0.0 0.000228882 
> 4.95911e-05 -1.52588e-05 0.0 0.000106812 -1.52588e-05 -0.000152588 0.0 0.0 
> -3.62396e-05 -9.15527e-05 -7.62939e-05 7.24792e-05 -7.62939e-06 8.58307e-06 
> 0.0 1.83582e-05 3.8147e-05 1.33514e-05 0.0 0.0 -1.52588e-05 -3.05176e-05 
>
> 0.0  
>
>
>
> I think there might be a mistake in the implementation. 
>
>  

-- 

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