I am a beginner to pytorch and trying to build a custom convolution layer (conv2d) where instead of the default multiplication I replace it with my own multiplication algo. I’ve attached my implementation below.
I am getting the following error during backward pass - Function MBM_conv2dBackward returned an invalid gradient at index 1 - got [16, 32, 28, 28] but expected shape compatible with [32, 1, 3, 3]:
There seems to be a problem with the implementation of grad_weight calculation in the file:- custom_conv2d.py
My doubts are the following:
- Where does needs_input_grad variable come from?
input dimensions → [16,1,28,28] - (batch size = 16; 28x28 images)
grad_weight dimensions → [32,1,3,3] - (32 3x3 kernels)
What is the mistake being done during the grad_weight calculation? Or in the backward() implementation in general?
I couldn’t figure out the problem. Would really appreciate any help! Thanks!