This is a common syndrome. There are some problems with the unit tests in the notebook. They do not catch (or only catch in subtle ways) some of the possible bugs here. In particular, if you omit the “stride” values in the computation of the vert_start and horiz_start values in conv_forward and pool_forward, you end up with the results you describe. If this is the problem, you can notice if you look carefully that some of your output values are incorrect in the “stride = 2” test case for pool_forward.
Here’s another recent thread about this issue.