In this programming assignment, we will re-visit the Flower Classification task and solve it using deep neural networks, more specifically Convolutional Neural Networks. Recap that the flower images are divided into five classes: chamomile, tulip, rose, sunflower, dandelion. For each class there are about 800 photos. Photos are not high resolution, about 320x240 pixels. Photos are not reduced to a single size, they have different proportions! You are free to use any deep learning frameworks to build, train and evaluate your models, e.g. PyTorch, Tensorflow 2.x(or its high level API Keras), MXNet and etc. You are free to use already-built models from these libraries like ResNet-50, InceptionNet-V2, and etc, and adding customized classification layer on top of it for your own purpoose. For computational resource, you will be required to use GPU to train your neural network. Luckily, Google Colab provides free GPU option, you can use that, though it's not very powerful(limited computational speed and limited memory). But in general, for relatively small deep networks(e.g, VGG-16) and small batch size, you can get decent baseline results faster. So always try smaller networks first, and try to select appropriate batch size such that your GPU memories don't overload. You are free to use pretrained weights from these established models, and apply transfer learning method by either fixing the weight of pretrained weights and only training on the classification head, or use fine-tuning strategy(small learning rate on whole network.) Transfer learning strategy can accelerate your training progress a lot, you might want to use the strategy when you use those larger networks(i.e. ResNet-50, InceptionNet etc). To help you detect whether your network and training pipelines are built correctly, a common strategy is to train your model on a very small portion of your training set for a few epoches(should be pretty fast), and to check whether the model can be overfitted(achiving very high accuracy) on this small portion. If the model overfits, then it means that your pipeline setup has no problem, then you can proceed to start your whole training task.