The previous conv2d only worked for 1-channel kernels. This has now been fixed, and conv2d outputs an equal amount of tensors as it has been given filters. Stride and padding functionality has also been confirmed to work as expected.
Numpy style operations added to improve redability