fengyoulin / mnist

Play with Neural Network using C++ and the MNIST CSV dataset: https://pjreddie.com/projects/mnist-in-csv/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Play with Neural Network using C++

MNIST CSV dataset

https://pjreddie.com/projects/mnist-in-csv/

Eigen

Using Eigen to deal with Matrix:

http://eigen.tuxfamily.org/

You can use Intel MKL to optimize the performance:

https://software.intel.com/en-us/mkl

Make

Init the depends:

./init.sh

Make the program:

make

Or make with Intel MKL, your program will run faster:

make mkl

Usage

Start program and load data:

./mnist mnist_train.csv

Interactive commands:

#> h
usage:
    ?, h, help          show this help
    q, quit, exit       exit program
    <num>               view data at index <num>
    p[:]<num>           predict data at index <num>
    auc[:]<count>       evaluate accuracy use <count> records
    train[:]<loop>      train <loop>s use loaded dataset
    save[:]<file>       save model to <file>
    load[:]<file>       load model from <file>

Example

$ ./mnist mnist_train.csv 60000
loaded, used 0.496696sec(s)
mnist_train.csv: 60000
#> train:20
loop: 1 trained: 1000
loop: 1 trained: 2000
loop: 1 trained: 3000
loop: 1 trained: 4000
loop: 1 trained: 5000
...
...
loop: 20 trained: 55000
loop: 20 trained: 56000
loop: 20 trained: 57000
loop: 20 trained: 58000
loop: 20 trained: 59000
loop: 20 trained: 60000
finished, used 90.6669sec(s)
#> auc
auc: 0.97385
#> save:loop20.model
saved
#> q

$ ./mnist mnist_test.csv
loaded, used 0.0866343sec(s)
mnist_test.csv: 10000
#> load:loop20.model
loaded
#> auc
auc: 0.9624
#> 0
0 target: 7
00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000
00000000000054B99F973C2400000000000000000000000000000000
000000000000DEFEFEFEFEF1C6C6C6C6C6C6C6C6AA34000000000000
00000000000043724872A3E3FEE1FEFEFEFAE5FEFE8C000000000000
000000000000000000000011420E4343433B15ECFE6A000000000000
00000000000000000000000000000000000053FDD112000000000000
000000000000000000000000000000000016E9FF5300000000000000
000000000000000000000000000000000081FEEE2C00000000000000
000000000000000000000000000000003BF9FE3E0000000000000000
0000000000000000000000000000000085FEBB050000000000000000
00000000000000000000000000000009CDF83A000000000000000000
0000000000000000000000000000007EFEB600000000000000000000
00000000000000000000000000004BFBF03900000000000000000000
0000000000000000000000000013DDFEA60000000000000000000000
00000000000000000000000003CBFEDB230000000000000000000000
00000000000000000000000026FEFE4D000000000000000000000000
00000000000000000000001FE0FE7301000000000000000000000000
000000000000000000000085FEFE3400000000000000000000000000
000000000000000000003DF2FEFE3400000000000000000000000000
0000000000000000000079FEFEDB2800000000000000000000000000
0000000000000000000079FECF120000000000000000000000000000
00000000000000000000000000000000000000000000000000000000
#> p:0
0 target: 7, predict: 7
0: 3.7182e-13
1: 1.22278e-09
2: 5.00913e-11
3: 2.11027e-14
4: 6.33932e-16
5: 4.05016e-09
6: 2.30942e-17
7: 1
8: 8.18387e-16
9: 2.56971e-15
#> q

About

Play with Neural Network using C++ and the MNIST CSV dataset: https://pjreddie.com/projects/mnist-in-csv/

License:MIT License


Languages

Language:C++ 96.3%Language:Makefile 2.2%Language:Shell 1.5%