Convolutional Neural Networks
In the previous chapters we have discussed DenseNets, in which each layer is fully connected to the adjacent layers. We looked at one application of these dense networks in classifying the MNIST handwritten characters dataset. In that context, each pixel in the input image has been assigned to a neuron with a total of 784 (28 × 28 pixels) input neurons. However, this strategy does not leverage the spatial structure and relationships between each image. In particular, this piece of code is a DenseNet that transforms the bitmap representing each written digit into a flat vector where the local spatial structure is removed. Removing the spatial structure is a problem because important information is lost:
#X_train is 60000 rows of 28x28 values --> reshaped in 60000 x 784
X_train = X_train.reshape(60000, 784)
X_test = X_test.reshape(10000, 784)
Convolutional neural networks (in short, convnets or CNNs) leverage spatial information...