https://pjreddie.com/projects/mnist-in-csv/
Using Eigen to deal with Matrix:
You can use Intel MKL to optimize the performance:
https://software.intel.com/en-us/mkl
Init the depends:
./init.sh
Make the program:
make
Or make with Intel MKL, your program will run faster:
make mkl
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>
$ ./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