If you state down the documentation 21 hard enough, you find that

Conv2d has a bias parameter by default that your numpy calculation does not consider (see the formula in the doc),
padding documented to be is (implicit) zero padding. This matches my experience.

Best regards
Thomas