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.