jacobian

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit ba7dedea1dfed183ab4bd83a6195142f64eea54a
parent c28926d6943610f632bd473292a475744a3d3924
Author: David Freifeld <freifeld.david@gmail.com>
Date:   Sat, 20 Jun 2020 18:51:43 -0700

Batch advancement almost works

Diffstat:
Mbpnn.cpp | 30++++++++++++------------------
1 file changed, 12 insertions(+), 18 deletions(-)

diff --git a/bpnn.cpp b/bpnn.cpp @@ -52,7 +52,6 @@ Network::Network(char* path, int inputs, int hidden, int outputs, int neurons, i char line[1024] = {' '}; for (int i = 0; i < batch_size; i++) { fgets(line, 1024, fptr); - std::cout << "Read line: " << line; sscanf(line, "%f,%f,%f,%f,%i", &batch[0+(i*inputs)], &batch[1+(i*inputs)], &batch[2+(i*inputs)], &batch[3+(i*inputs)], &label); (*labels)(i,0) = label; } @@ -69,6 +68,7 @@ Network::Network(char* path, int inputs, int hidden, int outputs, int neurons, i for (int i = 0; i < hidden+1; i++) { layers[i].initWeights(layers[i+1]); } + batches = 1; // std::cout << "Initial batch of:\n" << *layers[0].contents << "\nwith labels\n" << *labels; } @@ -176,21 +176,17 @@ int Network::next_batch(char* path) int datalen = batch_size * inputs; float batch[datalen]; int label = -1; - std::cout << "Batch start line is " << batch_size*batches << "\n"; - for (int i = batch_size; i<= batch_size*batches; i+=batch_size) { + + for (int i = 1; i < batch_size*(batches+1); i++) { if (fgets(line, 1024, fptr)==NULL) { break; } if (i >= batches*batch_size) { - for (int j = 0; j < batch_size; j++) { - fgets(line, 1024, fptr); - // printf("%s", line); - sscanf(line, "%f,%f,%f,%f,%i", &batch[0 + (j * inputs)], - &batch[1 + (j * inputs)], &batch[2 + (j * inputs)], - &batch[3 + (j * inputs)], &label); - (*labels)(j, 0) = label; - } - break; + int j = i - (batches*batch_size); + sscanf(line, "%f,%f,%f,%f,%i", &batch[0 + (j * inputs)], + &batch[1 + (j * inputs)], &batch[2 + (j * inputs)], + &batch[3 + (j * inputs)], &label); + (*labels)(j, 0) = label; } } float* batchptr = batch; @@ -231,7 +227,7 @@ float Network::test(char* path) float cost_sum = 0; float acc_sum = 0; int finalcount; - for (int i = batch_size; i < linecount; i+=batch_size) { + for (int i = 0; i < linecount; i+=batch_size) { feedforward(); FILE* fptr = fopen("./testshuffled", "r"); char line[1024] = {' '}; @@ -239,13 +235,12 @@ float Network::test(char* path) int datalen = batch_size * inputs; float batch[datalen]; int label = -1; - for (float j = 0; j/batch_size <= i; j++) { + for (int j = 1; j < batch_size*((i/batch_size)+1); j++) { if (fgets(line, 1024, fptr)==NULL) { break; } - for (int k = 0; k < batch_size; k++) { - fgets(line, 1024, fptr); - // printf("%s", line); + if (i >= batches*batch_size) { + int k = i - ((i/batch_size)*batch_size); sscanf(line, "%f,%f,%f,%f,%i", &batch[0 + (k * inputs)], &batch[1 + (k * inputs)], &batch[2 + (k * inputs)], &batch[3 + (k * inputs)], &label); @@ -275,7 +270,6 @@ void demo(int total_epochs) float epoch_cost = 1000; float epoch_accuracy = -1; int epochs = 0; - net.batches= 1; printf("Beginning train on %i instances for %i epochs...\n", linecount, total_epochs); while (epochs < total_epochs) {