Hello I am trying to apply a batch normalization after a convolution to my 
input, and am getting a dimension mismatch error. The error checks 
input[1].shape[3] != input[2].shape[3]. 

After the 64 filter convolution my input is of the shape (1,64,112,112). My 
gamma, beta, mean, and std-dev are all (64,). I guess my question is am I 
doing something wrong? I can fix the problem by doing a 
input.dimshuffle(0,2,3,1) and putting the dimensions as the shape[3] and 
then do another dimshuffle(0,3,1,2) to bring it back to normal for the next 
convolution but that doesn't seem like the right solution and inefficient 
(definitely not what the creators of theano had in mind). In the 
documentation for batch_normalization function it says that the input is 
'activations', so maybe I'm supposed to only send a part of the input? If 
anyone can help, I'd appreciate it very much.




conv1_out = conv2d(input=X,
 filters=conv1_W,
 filter_shape=(64,3,7,7),
 subsample=(2,2),
 border_mode=(3,3))
layer1_bn_out = T.nnet.relu(BN(inputs=conv1_out[1],
 gamma=bn1_conv1_gamma,
 beta=bn1_conv1_beta, 
 mean=bn1_conv1_mean,
 std=bn1_conv1_std))
# downsample of size 3 with stride of 2
current_output = pool.pool_2d(input=layer1_bn_out,
 ds=(3,3),
 st=(2,2),
 mode='max',
 ignore_border=False)




On a sidenote I noticed that theano takes in standard deviation whereas a 
lot of the other libraries use variance. Does that mean that if I am trying 
to load weights trained on another library, all I need to do is sqrt them 
before instantiating as a shared variable, correct?


Thanks.

-- 

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