ThomasDelteil commented on issue #7895: how can i  keep the width and height 
same after Conv2d layer
URL: 
https://github.com/apache/incubator-mxnet/issues/7895#issuecomment-402570884
 
 
   @itisianlee typically `stride` and `dilation` are behavioral parameter that 
you want to use when you try to achieve specific behavior. `dilation` when you 
want to enlarge your receptive field. `stride` when you want to decrease your 
output resolution. `padding` is typically used in order to control the output 
size.
   Let's first check your formula after fixing `stride` `dilation` and `kernel`.
   
   Using your example:
   `stride = (1,1)`
   `dilation = (1,1)`
   `kernel = (4,4)`
   
   ```python
   out_height = floor((height+2*padding[0]-1*(4-1)-1)/1)+1
   out_width = floor((width+2*padding[1]-1*(4-1)-1)/1)+1
   
   out_height = floor((height+2*padding[0]-3-1))+1
   out_width = floor((width+2*padding[1]-3-1))+1
   
   out_height = height+2*padding[0]-3
   out_width = width+2*padding[1]-3
   
   padding[0] = 3/2
   padding[1] = 3/2
   ```
   You get indeed a non-integer value for your padding, and unfortunately 
Conv2D does not support asymetric padding.
   
   Two solutions come to mind to solve that:
   - use `nd.pad()` that supports asymmetric padding followed by a convolution 
with (0,0) padding.
   - over-pad, for example here using `padding=(2,2)` and use the `nd.slice()` 
operator to slice one column and one row from your output feature maps.
   
   @szha can you please close this issue? Thanks!
   
   @itisianlee if you would like to follow-up, please create an issue on 
https://discuss.mxnet.io, thanks!

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to