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 dataset. The 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

Learn the fastest way to build data apps

Another post starts with you beautiful people! I hope you have enjoyed and learned something new from my previous three posts about machine learning model deployment. In one post we have learned  How to deploy a model as FastAPI?  I n the second post, we have learned  How to deploy a deep learning model as RestAPI ? and in the third post, we have also learned  How to scale your deep learning model API?   If you are following my blog posts, you have seen how easily you have transit yourselves from aspiring to a mature data scientist. In this new post, I am going to share a new framework-  Streamlit which will help you to easily create a beautiful app with Python only. I will show here how had I used the Streamlit framework to create an app for my YOLOv3 custom model. What is Streamlit? Streamlit’s open-source app framework is the easiest way for data scientists and machine learning engineers to create beautiful, performant apps in only a few hours!...

How to CORRECTLY convert Darknet/Yolov4 weights to TFLite format?

  Greetings, computer vision practitioners👮! I hope you're all doing well in your projects. Recently, I received a new requirement from a client regarding an object detection solution that had been successfully deployed as a REST API. The solution was seamlessly integrated into both web and mobile applications. However, the client encountered network reliability issues, particularly in rural areas where poor connectivity occasionally caused the solution to fail on mobile devices💔. As we know, network disruptions are a common challenge, but they become critical when they impact business operations. My client sought a robust solution to address this issue, ensuring uninterrupted functionality regardless of network conditions. In this blog post, we will explore how I tackled this challenge and implemented an effective solution💓. The Solution: Enabling Offline Object Detection for Mobile Devices Given that network connectivity issues are beyond our control, the most effective soluti...

Machine Learning-Decision Trees and Random Forests

Another post starts with you beautiful people! I hope after reading my previous post about  Linear and Logistic Regression   your confidence level is up and you are now ready to move one step ahead in Machine Learning arena. In this post we will be going over Decision Trees and Random Forests . In order for you to understand this exercise completely there is some required reading. I suggests you to please read following blog post before going further- A Must Read! After reading the blog post you should have a basic layman's (or laywoman!) understanding of how decision trees and random forests work.  A quick intro is as below- Decision Trees (DTs) are a non-parametric supervised learning method used for classification and regression. The goal is to create a model that predicts the value of a target variable by learning simple decision rules inferred from the data features . For instance, in the example below, decision trees learn from data to approximate a sin...