Blame projects/neural/trainer.cpp

e865c9
e865c9
e865c9
#include <ctime></ctime>
e865c9
e865c9
#include "layer.all.inc.cpp"
e865c9
#include "layer.all.test.inc.cpp"
e865c9
#include "train.digit.inc.cpp"
e865c9
e865c9
e865c9
bool runTests() {
e865c9
 if (!AllTest::test()) return false;
e865c9
 return printf("success\n"), true;
e865c9
}
e865c9
e865c9
e865c9
int main() {
e865c9
  srand(time(NULL));
e865c9
8e5348
  //return !runTests();
e865c9
  
8e5348
  //#define FILENAME "data/output/weights-digit.bin"
8e5348
  #define FILENAME "data/output/weights-digit-conv.bin"
e865c9
e865c9
  printf("create neural network\n");
8e5348
  //Layer l(                    nullptr, Layout(28, 28) );
8e5348
  //(new LayerSimple<funcsigmoidexp>( l, Layout(256)   ))->filename = FILENAME "1";</funcsigmoidexp>
8e5348
  //(new LayerSimple<funcsigmoidexp>( l, Layout(64)    ))->filename = FILENAME "2";</funcsigmoidexp>
8e5348
  //(new LayerSimple<funcsigmoidexp>( l, Layout(10)    ))->filename = FILENAME "3";</funcsigmoidexp>
8e5348
  
8e5348
  Layer l(nullptr, Layout(28, 28));
15c502
  (new LayerConvShared<funcrelu>(l, Layout(24, 24, 6), Kernel(5, 1, 0)))->filename = FILENAME "1";</funcrelu>
15c502
  (new LayerSub<funcsigmoidexp>(l, Layout(12, 12, 6)))->filename = FILENAME "2";</funcsigmoidexp>
15c502
  (new LayerConvShared<funcrelu>(l, Layout(8, 8, 48), Kernel(5, 1, 0)))->filename = FILENAME "3";</funcrelu>
15c502
  (new LayerSub<funcsigmoidexp>(l, Layout(4, 4, 48)))->filename = FILENAME "4";</funcsigmoidexp>
15c502
  (new LayerSimple<funcsigmoidexp>(l, Layout(64)))->filename = FILENAME "5";</funcsigmoidexp>
15c502
  (new LayerSimple<funcsigmoidexp>(l, Layout(10)))->filename = FILENAME "6";</funcsigmoidexp>
e865c9
e865c9
  l.sumStat().print();
e865c9
e865c9
  printf("load training data\n");
e865c9
  TrainerDigit t;
8e5348
  if (!t.loadSymbolMap("data/symbols-data.bin")) return 1; // 28x28
e865c9
e865c9
  //printf("try load previously saved network\n"); l.load();
e865c9
e865c9
  printf("train\n");
8e5348
  //t.configure(l, 0.5, 8, 70000, 0, 0, 0.00001).run();
15c502
  t.configure(l, 0.5, 8, 7000, 0, 0, 0.00001).run();
e865c9
e865c9
  return 0;
e865c9
}
e865c9