https://medium.com/@monocosmo77/understanding-the-convolutional-layer-in-cnns-part1-machine-learning-eb6987e94bac