NOTE: The BN function is equivalent to T.nnet.bn.batch_normalization On Thursday, March 9, 2017 at 11:59:08 AM UTC-5, Sergey Bokhnyak wrote: > > 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.
