Skip to main content

Making a deep learning model to predict which digit it is using keras

Another post starts with you beautiful people!
In previous post we have learnt keras workflow. In this post we will understand how to solve a image related problem with a simple neural network model using keras. For this exercise we will use MNIST hand written digit datasetThe MNIST database of handwritten digits has a training set of 60,000 examples, and a test set of 10,000 examples. It is a subset of a larger set available from NIST. The digits have been size-normalized and centered in a fixed-size image. This is a very popular dataset to get started with images. You can download this dataset from this link.

In this dataset, each digit shows an image and each image is composed of 28 pixel by 28 pixel grid. The image is represented by how dark each pixel is. So zero will be darkest possible while 255 will be lightest possible. Our goal is to create a deep learning model that will predict which digit it is. Here 28 x 28 pixels grid are flattened to 784 features for each image. Let's load the training and test datasets in our colab notebook and explore-




You can see the training dataset has digit image from 0-9. Since the data type of the digits is int64, we will optimize the memory by changing their data types to float32 and int32. One important point here is that to process image in a neural network model, we need to scale it first. This scaling is also called normalization. In normalization image having grey scale form 0-255 is changed into 0-1 pixel range. We can achieve this by dividing each value by it's maximum value that is 255 as shown below-


Next we convert our target variable to binary class matrix using keras.utils api-
Rest all steps we have already learnt in previous post, as a recall now we will create a model, compile it and fit it. Here we will use softmax activation function on the output layer to turn the outputs into probability-like values and allow one class of the 10 to be selected as the model’s output prediction. Logarithmic loss is used as the loss function (called categorical_crossentropy) and the efficient ADAM gradient descent algorithm is used to learn the weights-


Above cell will show following output-

See here, our model is trained on 29399 samples and validated it on rest 12601 samples because we have used validation_split argument with 30% value. After epoch 7 the model stopped training by itself because it was not improving anymore. We have got our model accuracy around 97%. Try to train above model with different number of nodes, increase number of hidden layers and see if you are getting any better result! Now we can use our model to make prediction on test dataset-
You can also save your result in a csv as below-

In our submission file we are predicting that image having ImageId 1 in test dataset is the image of digit 2, ImageId 2 is of image 0 digit and so on. That was quite easy right. With the help of GPU supported environment like Google Colab and powerful deep learning library keras we are able to achieve a very good accuracy. In next post we will move ahead and learn advanced deep learning with keras. Till then Go chase your dreams, have an awesome day, make every second count and see you later in my next post.






Comments

Post a Comment

Popular posts from this blog

How to install and compile YOLO v4 with GPU enable settings in Windows 10?

Another post starts with you beautiful people! Last year I had shared a post about  installing and compiling Darknet YOLOv3   in your Windows machine and also how to detect an object using  YOLOv3 with Keras . This year on April' 2020 the fourth generation of YOLO has arrived and since then I was curious to use this as soon as possible. Due to my project (built on YOLOv3 :)) work I could not find a chance to check this latest release. Today I got some relief and successfully able to install and compile YOLOv4 in my machine. In this post I am going to share a single shot way to do the same in your Windows 10 machine. If your machine does not have GPU then you can follow my  previous post  by just replacing YOLOv3 related files with YOLOv4 files. For GPU having Windows machine, follow my steps to avoid any issue while building the Darknet repository. My machine has following configurations: Windows 10 64 bit Intel Core i7 16 GB RAM NVIDIA GeForce GTX 1660 Ti Version 445.87

How to use opencv-python with Darknet's YOLOv4?

Another post starts with you beautiful people 😊 Thank you all for messaging me your doubts about Darknet's YOLOv4. I am very happy to see in a very short amount of time my lovely aspiring data scientists have learned a state of the art object detection and recognition technique. If you are new to my blog and to computer vision then please check my following blog posts one by one- Setup Darknet's YOLOv4 Train custom dataset with YOLOv4 Create production-ready API of YOLOv4 model Create a web app for your YOLOv4 model Since now we have learned to use YOLOv4 built on Darknet's framework. In this post, I am going to share with you how can you use your trained YOLOv4 model with another awesome computer vision and machine learning software library-  OpenCV  and of course with Python 🐍. Yes, the Python wrapper of OpenCV library has just released it's latest version with support of YOLOv4 which you can install in your system using below command- pip install opencv-python --up

How to convert your YOLOv4 weights to TensorFlow 2.2.0?

Another post starts with you beautiful people! Thank you all for your overwhelming response in my last two posts about the YOLOv4. It is quite clear that my beloved aspiring data scientists are very much curious to learn state of the art computer vision technique but they were not able to achieve that due to the lack of proper guidance. Now they have learnt exact steps to use a state of the art object detection and recognition technique from my last two posts. If you are new to my blog and want to use YOLOv4 in your project then please follow below two links- How to install and compile Darknet code with GPU? How to train your custom data with YOLOv4? In my  last post we have trained our custom dataset to identify eight types of Indian classical dance forms. After the model training we have got the YOLOv4 specific weights file as 'yolo-obj_final.weights'. This YOLOv4 specific weight file cannot be used directly to either with OpenCV or with TensorFlow currently becau