def backward(self, grad_output): input = self._saved_tensor grad_input = avgpool2d_backward(input, grad_output, self.kernel_size, self.pad) return grad_input
test_pool_out = avgpool2d_forward(pool_inp, 2, 0) except: print( '[FAILED] avgpool2d_forward: bug in codes, can not run for inp.shape = (4, 3, 6, 6), ker_size = 2, pad = 0' ) else: if test_pool_out.shape != pool_out.shape: print('[ERROR] avgpool2d_forward: output shape is not correct') else: diff = test_pool_out - pool_out if abs(diff).max() > 1e-5: print('[ERROR] avgpool2d_forward: output value is not correct') else: print('[PASS] avgpool2d_forward: all correct') try: test_grad_pool_inp = avgpool2d_backward(pool_inp, grad_pool_out, 2, 0) except: print( '[FAILED] avgpool2d_backward: bug in codes, can not run for inp.shape = (4, 3, 6, 6), grad.shape = (4, 3, 4, 4), ker_size = 2, pad = 0' ) else: if test_grad_pool_inp.shape != grad_pool_inp.shape: print('[ERROR] avgpool2d_backward: grad input shape is not correct') else: diff = test_grad_pool_inp - grad_pool_inp if abs(diff).max() > 1e-5: print( '[ERROR] avgpool2d_backward: grad input value is not correct') else: print('[PASS] avgpool2d_backward: all correct')