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.
