Blob Blame Raw


#include <ctime>

#include "layer.all.inc.cpp"
#include "layer.all.test.inc.cpp"
#include "train.digit.inc.cpp"


bool runTests() {
 if (!AllTest::test()) return false;
 return printf("success\n"), true;
}


int main() {
  srand(time(NULL));

  //return !runTests();
  
  //#define FILENAME "data/output/weights-digit.bin"
  #define FILENAME "data/output/weights-digit-conv.bin"

  printf("create neural network\n");
  //Layer l(                    nullptr, Layout(28, 28) );
  //(new LayerSimple<funcSigmoidExp>( l, Layout(256)   ))->filename = FILENAME "1";
  //(new LayerSimple<funcSigmoidExp>( l, Layout(64)    ))->filename = FILENAME "2";
  //(new LayerSimple<funcSigmoidExp>( l, Layout(10)    ))->filename = FILENAME "3";
  
  Layer l(nullptr, Layout(28, 28));
  (new LayerConvShared<funcSigmoidExp>(l, Layout(11, 11, 16), Kernel(6, 2, 0)))->filename = FILENAME "1";
  (new LayerSimple<funcSigmoidExp>(l, Layout(64)))->filename  = FILENAME "2";
  (new LayerSimple<funcSigmoidExp>(l, Layout(10)))->filename  = FILENAME "3";

  l.sumStat().print();

  printf("load training data\n");
  TrainerDigit t;
  if (!t.loadSymbolMap("data/symbols-data.bin")) return 1; // 28x28

  //printf("try load previously saved network\n"); l.load();

  printf("train\n");
  //t.configure(l, 0.5, 8, 70000, 0, 0, 0.00001).run();
  t.configure(l, 0.1, 8, 70000, 0, 0, 0.00001).run();

  return 0;
}