https://medium.com/@wrightlogic/understanding-the-convolutional-neural-networks-cnn-architecture-a483f168fad0