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 use TensorBoard with TensorFlow 2.0 in Google Colaboratory?

Another post starts with you beautiful people! It is quite a wonderful moment for me that many Aspiring Data Scientists like you have connected with me through my facebook page and have started their focused journey to be a Data Scientists by following my  book . If you have not then I recommend to atleast visit my  last post here . In two of my previous posts we have learnt about keras and colab. In this post I am going to share with you all that TensorFlow 2.0 has been released and one quite interesting news about this release is that our beloved deep learning library keras is in built with it. Yes! You heard it right. If you know keras then using TensorFlow 2.0 library is quite easy for you. One of the interesting benefit of using TensorFlow library is it's visualization tool known as  TensorBoard . In this post we are going to learn how to use TensorFlow 2.0 with MNIST dataset and then setup TensorBoard with Google Colaboratory. Let's start this pos...

How can I make a simple ChatBot?

Another post starts with you beautiful people! It has been a long time of posting a new post. But my friends in this period I was not sitting  where I got a chance to work with chatbot and classification related machine learning problem. So in this post I am going to share all about chatbot- from where I have learned? What I have learned? And how can you build your first bot? Quite interesting right! Chatbot is a program that can conduct an intelligent conversation based on user's input. Since chatbot is a new thing to me also, I first searched- is there any Python library available to start with this? And like always Python has helped me this time also. There is a Python library available with name as  ChatterBot   which is nothing but a machine learning conversational dialog engine. And yes that is all I want to start my learning because I always prefer inbuilt Python library to start my learning journey and once I learn this then only I move ahead for another...

How can I install and use Darknet framework in Windows?

Another post starts with you beautiful people! I hope you have enjoyed my  last post   about using real time object detection system- Yolo with keras api. In that post I mentioned that Yolo is built on Darknet framework and this framework is written on C and cuda. That's why we used Python wrapper of Darknet  framework instead of installing original framework. Many readers asked me about how can we install and use the original framework in our window machine. In this post I will try to show you the steps about this installation. Before following the steps I strongly recommend you to activate virtual env and install all libraries I have mentioned in my  last post . For this setup I have followed this original github repository-  AlexeyAB/darknet   . this repo is as same as original Darknet repo with additional Windows support. So don't forget to give a star to this repo as a token of our respect to the author. If you are reading my blog first time, th...