jacobian

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

commit 889475fc739679279768e9306cc0ea597f2f0c94
parent b8219cd3c6529f5c256b2273547a75949dafa053
Author: David Freifeld <freifeld.david@gmail.com>
Date:   Fri, 26 Jun 2020 13:05:25 -0700

Untested demo for NetworkArray

Diffstat:
Mmr_bpnn.cpp | 77++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 74 insertions(+), 3 deletions(-)

diff --git a/mr_bpnn.cpp b/mr_bpnn.cpp @@ -1,15 +1,86 @@ #include "bpnn.hpp" #include "utils.hpp" -class ParallelNetwork : Network +class NetworkArray { public: std::function<pair*(pair)> map; std::function<pair*(pair*)> reduce; - // See if this compiles. + std::function<void(char*)> translate; + + NetworkArray(char* configuration, std::function<pair*(pair*)> setup, int epochs); + void start_array(char* data, int m, int length, char* ip, int r); }; +NetworkArray::NetworkArray(char* configuration, std::function<pair*(pair*)> setup, int epochs) +{ + map = [setup, epochs](pair input_pair) -> pair* + { + char* path = new char[100]; + strcpy(path, (char*)input_pair.key); + strcat(path, "_shuf"); + int linecount = prep_file((char*)input_pair.key, path); + Network* net = setup(); + net.train(epochs); + struct pair* output = new struct pair; + char* key = new char[100]; + strcpy(key, path); + output[0].key = key; + output[0].value = net; + return output; + }; + reduce = (pair* input_pairs) -> pair* + { + struct pair* output = new struct pair[6]; + for (int i = 0; input_pairs[i].key != 0x0; i++) { + float* acc = new float; + *acc = ((Network*)input_pairs[i].value)->test("./test.txt"); + output[i].key = input_pairs[i].key; + output[i].value = acc; + } + return output; + }; + translate = (char* path) -> void + { + FILE* rptr = fopen(path, "r"); + FI()LE* wptr = fopen("./translated", "w"); + char* line = new char[MAXLINE]; + char* newline = new char[MAXLINE]; + while (fgets(line, MAXLINE, rptr) != NULL) { + void* addr1; + void* addr2; + sscanf(line, "%p %p", &addr1, &addr2); + sprintf(newline, "%s %f", (char*)addr1, *(float*)addr2); + int batch_num = strtol((char*)addr1, NULL, 10); + fprintf(wptr, "%s %f\n",(char*)addr1, *(float*)addr2); + } + fclose(rptr); + fclose(wptr); + free(newline); + free(line); + }; +} + +void NetworkArray::start_array(char* data, int m, int length, char* ip, int r) +{ + begin(data, map, reduce, m, length, ip, r); +} + +Network* setup() +{ + Network* net = new Network ("./data_banknote_authentication.txt", 10, 0.01, 0.001); + net->add_layer(4, "linear"); + net->add_layer(5, "sigmoid"); + net->set_activation(1, lecun_tanh, lecun_tanh_deriv); + net->add_layer(1, "resig"); + net->initialize(); + return net; +} + int main() { - return 0; // Wow. + NetworkArray netarray ("Train", setup, 1); + netarray.start_array("./extra.txt", 5, 1, "98.33.105.140", 1); + return 0; } +