Git Product home page Git Product logo

chih-chun-chang / convolutional-neural-network-from-scratch-python Goto Github PK

View Code? Open in Web Editor NEW
40.0 3.0 21.0 24 MB

Handwritten Digit Recognition Using Convolutional Neural Network by Python

Home Page: https://medium.com/deep-learning-g/build-lenet-from-scratch-7bd0c67a151e

Python 72.24% JavaScript 10.67% HTML 17.09%
convolutional-neural-networks handwritten-digit-recognition python from-scratch lenet deep-learning computer-vision

convolutional-neural-network-from-scratch-python's Introduction

Handwritten Digit Recognition Using Convolutional Neural Network

This repo builds a convolutional neural network based on LENET from scratch to recognize the MNIST Database of handwritten digits.

Getting Started

This example is only based on the python library numpy to implement convolutional layers, maxpooling layers and fully-connected layers, also including backpropagation and gradients descent to train the network and cross entropy to evaluate the loss.

Running the Codes

python main.py

In the main.py, you can modify the learning rate, epoch and batch size to train the CNN from scratch and evaluate the result. Besides, there is a provided pretrained weight file pretrained_weights.pkl.

Loadind data......
Preparing data......
Training Lenet......
=== Epoch: 0/1 === Iter:32 === Loss: 2.33 === BAcc: 0.09 === TAcc: 0.09 === Remain: 2 Hrs 32 Mins 35 Secs ===
=== Epoch: 0/1 === Iter:64 === Loss: 2.32 === BAcc: 0.06 === TAcc: 0.08 === Remain: 2 Hrs 32 Mins 37 Secs ===
=== Epoch: 0/1 === Iter:96 === Loss: 2.29 === BAcc: 0.06 === TAcc: 0.07 === Remain: 2 Hrs 31 Mins 49 Secs ===
=== Epoch: 0/1 === Iter:128 === Loss: 2.28 === BAcc: 0.12 === TAcc: 0.09 === Remain: 2 Hrs 35 Mins 49 Secs ===
=== Epoch: 0/1 === Iter:160 === Loss: 2.34 === BAcc: 0.03 === TAcc: 0.07 === Remain: 2 Hrs 31 Mins 48 Secs ===
=== Epoch: 0/1 === Iter:192 === Loss: 2.33 === BAcc: 0.09 === TAcc: 0.08 === Remain: 2 Hrs 31 Mins 14 Secs ===
=== Epoch: 0/1 === Iter:224 === Loss: 2.29 === BAcc: 0.16 === TAcc: 0.09 === Remain: 2 Hrs 32 Mins 3 Secs ===
=== Epoch: 0/1 === Iter:256 === Loss: 2.30 === BAcc: 0.16 === TAcc: 0.10 === Remain: 2 Hrs 31 Mins 47 Secs ===
=== Epoch: 0/1 === Iter:288 === Loss: 2.32 === BAcc: 0.09 === TAcc: 0.10 === Remain: 2 Hrs 31 Mins 58 Secs ===
...

python app.py

This is the demo to predict handwritten digits based on the python api flask to build a localhost website.

Alt Text

Results

  • learning rate: 0.01
  • batch size: 100
  • training accuracy: 0.94
  • loss

Blog Post

https://medium.com/deep-learning-g/build-lenet-from-scratch-7bd0c67a151e

convolutional-neural-network-from-scratch-python's People

Contributors

chih-chun-chang avatar nelsongomesneto avatar kinnzo avatar

Stargazers

Chris avatar  avatar Stefanos M. avatar  avatar turli avatar lasthour avatar  avatar Hantang Li avatar  avatar  avatar Niranjjj avatar Alexandre Nietupski Cardoso avatar RayWu avatar Isabela Bianca avatar  avatar  avatar Sohail Hosseini avatar  avatar  avatar Fabiano Libano avatar SAMAGRA KASHYAP avatar Amin Foshati avatar Stephan Sunny avatar Muhammad khubaibraza avatar Alberto G Rivera avatar Khoa Nguyen avatar Erwin Lejeune avatar Septimiu-Calin Bodica avatar Mikael Kohlmyr avatar Zhiyang Fu avatar Burak Emre Özer avatar  avatar  avatar Chen Xuecheng  avatar  avatar Reed Kotler avatar  avatar Raul Murillo Montero avatar Asuman Celik avatar shajalAhamed avatar

Watchers

James Cloos avatar  avatar Raul Murillo Montero avatar

convolutional-neural-network-from-scratch-python's Issues

Suggestion needed: Transfer learning/Train from scratch

I am training this digit recognition model with children's handwritten image ( worse than mnist handwritten images ),

After 20-30 epochs of training, loss is becoming zero, and when training is finished the model is overfitted with zero (any input, it predicts as zero ), what could be the reason?
My training config :
learning rate: 0.01
epoch:1
batch size:32

I might have some bad inputs as well ( reasonably less ), as I am training the model with 3 lakhs digit images.

I have some questions,
How to decide epoch value, batch size value, learning rate value?
How to include diagnosis of training to the same model?
What's your suggestion on transfer learning?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.