diff --git a/DataAnalysis/applications/NumberRecognition.cpp b/DataAnalysis/applications/NumberRecognition.cpp index 4aa69d9..21bb596 100644 --- a/DataAnalysis/applications/NumberRecognition.cpp +++ b/DataAnalysis/applications/NumberRecognition.cpp @@ -48,7 +48,7 @@ bool loadDataset(Dataset& out, const String& location) { struct NumberRec { NumberRec() { - Buffer layers = { 784, 128, 10 }; + Buffer layers = { 784, 10 }; nn.initializeRandom(layers); Dataset dataset; @@ -159,7 +159,7 @@ public: FCNN nn; Buffer output; - halnf step = 0.01f; + halnf step = 1.f; }; int main() { @@ -173,14 +173,26 @@ int main() { { NumberRec app; - auto trainRange = Range(0, 100); - auto testRange = Range(0, 100); + auto numBatches = 10; + auto trainRange = Range(0, 50000); + auto testRange = Range(50000, 70000); - halnf cost = 100; - while (cost > 0.1f) { - cost = app.test(trainRange); - app.trainStep(trainRange); - printf("Cost - %f\n", cost); + auto batchSize = trainRange.idxDiff() / numBatches; + + for (auto epoch : Range(10)) { + printf("Epoch %i\n", epoch.index()); + + for (auto batchIdx : Range(trainRange.idxDiff() / batchSize)) { + printf(" - Batch :%i \n", batchIdx.index()); + + auto batchRange = Range(trainRange.idxBegin() + batchSize * batchIdx, trainRange.idxBegin() + batchSize * (batchIdx + 1)); + + app.trainStep(batchRange); + + printf("Cost on batch data : %f\n", app.test(batchRange)); + } + + printf("Cost on test data : %f\n\n", app.test(testRange)); } auto errors = 0; @@ -192,7 +204,7 @@ int main() { // app.displayImage(i); } - printf("\n\nIncorrect - %i out of %i\n\n", errors, testRange.idxDiff()); + printf("\n\nIncorrect - %i out of %i (%f)\n\n", errors, testRange.idxDiff(), (halnf) errors / (halnf) testRange.idxDiff() ); } module.deinitialize(); diff --git a/DataAnalysis/applications/rsc/mnist.gz b/DataAnalysis/applications/rsc/mnist.gz deleted file mode 100644 index abb32ac..0000000 Binary files a/DataAnalysis/applications/rsc/mnist.gz and /dev/null differ diff --git a/DataAnalysis/private/FullyConnectedNN.cpp b/DataAnalysis/private/FullyConnectedNN.cpp index d4b3d17..48d4fb4 100644 --- a/DataAnalysis/private/FullyConnectedNN.cpp +++ b/DataAnalysis/private/FullyConnectedNN.cpp @@ -22,9 +22,9 @@ static halnf relu(halnf val) { return val < 0 ? 0 : val; } static halnf reluDerivative(halnf val) { return val < 0 ? 0 : 1; } -static halnf activationFunction(halnf val) { return relu(val); } +static halnf activationFunction(halnf val) { return sigmoid(val); } -static halnf activationFunctionDerivative(halnf val) { return reluDerivative(val); } +static halnf activationFunctionDerivative(halnf val) { return sigmoidDerivative(val); } FCNN::FCNN(const Buffer& description) { initializeRandom(description); }