jacobian

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

commit a595e677d4953c0492bc8547e2e6e1ac6992d017
parent 4a0d6bfe1f77972297a700ea680e4bb64aa6d353
Author: David Freifeld <freifeld.david@gmail.com>
Date:   Sat, 27 Jun 2020 14:56:03 -0700

Various experiments

Diffstat:
Mbpnn.cpp | 6+++---
Mexample.cpp | 19++++++++++---------
Mexample.py | 7+++++--
Mkerasdemo.py | 8++++----
Mmr_bpnn.cpp | 22+++++++++++-----------
Mutils.cpp | 9++++++++-
6 files changed, 41 insertions(+), 30 deletions(-)

diff --git a/bpnn.cpp b/bpnn.cpp @@ -185,7 +185,7 @@ void Network::backpropagate() } for (int i = 0; i < length-1; i++) { Eigen::MatrixXd gradient = gradients[i]; - *layers[length-2-i].weights -= 0.9 * *layers[length-2-i].prev_update + learning_rate * deltas[i]; + *layers[length-2-i].weights -= learning_rate * deltas[i]; *layers[length-1-i].bias -= bias_lr * gradients[i]; } } @@ -210,9 +210,9 @@ int Network::next_batch() if (fgets(line, 1024, data)==NULL) { break; } - sscanf(line, "%f,%f,%f,%f,%i", &batch[0 + (i * inputs)], + sscanf(line, "%i,%f,%f,%f,%f", &label, &batch[0 + (i * inputs)], &batch[1 + (i * inputs)], &batch[2 + (i * inputs)], - &batch[3 + (i * inputs)], &label); + &batch[3 + (i * inputs)]); (*labels)(i, 0) = label; } auto get_end = std::chrono::high_resolution_clock::now(); diff --git a/example.cpp b/example.cpp @@ -3,13 +3,14 @@ int main() { - Network net ("./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(); - // net.list_net(); - net.train(50); - // net.list_net(); + // Network net ("./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(); + // // net.list_net(); + // net.train(50); + // // net.list_net(); + printf("%i\n", wc("./data_banknote_authentication.txt")); } diff --git a/example.py b/example.py @@ -3,13 +3,16 @@ import numpy import time init = time.time() -net = mrbpnn.Network("./data_banknote_authentication.txt", 10, 0.0155, 0.03); -net.add_layer(4, "linear"); +net = mrbpnn.Network("./exoplanets.txt", 10, 0.0155, 0.03); +net.add_layer(4, "sigmoid"); +net.add_layer(5, "step"); +net.add_layer(5, "step"); net.add_layer(5, "lecun_tanh"); net.add_layer(1, "resig"); net.initialize(); initend = time.time() net.train(50); + end = time.time() print("%s: init %s" % (end-init, initend-init)) diff --git a/kerasdemo.py b/kerasdemo.py @@ -23,20 +23,20 @@ def lecun_tanh(x): init = time.time() # load the dataset -dataset = loadtxt('data_banknote_authentication.txt', delimiter=',') +dataset = loadtxt('exoplanets.txt', delimiter=',') # split into input (X) and output (y) variables -X = dataset[:,0:4] -y = dataset[:,4] +X = dataset[:,1:5] +y = dataset[:,1] # define the keras model model = Sequential() model.add(Dense(4, input_dim=4, activation='linear')) -model.add(Dense(5, activation=lecun_tanh)) model.add(Dense(1, activation='sigmoid')) # compile the keras model opt = keras.optimizers.SGD(lr=0.0155) model.compile(loss='mse', optimizer=opt, metrics=['accuracy']) # fit the keras model on the dataset initend = time.time() +print(model.summary()) model.fit(X, y, epochs=50, batch_size=10) # evaluate the keras model #_, accuracy = model.evaluate(X, y) diff --git a/mr_bpnn.cpp b/mr_bpnn.cpp @@ -4,7 +4,7 @@ class NetworkArray { public: - std::function<struct pair*(struct pair)> map; + std::function<struct pair*(struct pair*)> map; std::function<struct pair*(struct pair*)> reduce; std::function<void(char*)> translate; @@ -14,12 +14,12 @@ public: NetworkArray::NetworkArray(char* configuration, std::function<Network*(void)> setup, int epochs) { - map = [setup, epochs](struct pair input_pair) -> struct pair* + map = [setup, epochs](struct pair* input_pair) -> struct pair* { char* path = new char[100]; - printf("%p %p (from %p)\n", input_pair.key, input_pair.value, &input_pair); - printf("%s %s (from %p)\n", (char*)input_pair.key, (char*)input_pair.value, &input_pair); - strcpy(path, (char*)input_pair.key); + printf("%p %p (from %p)\n", input_pair->key, input_pair->value, input_pair); + printf("%s %p (from %p)\n", (char*)input_pair->key, input_pair->value, input_pair); + strcpy(path, (char*)input_pair->key); //strcat(path, "_shuf"); //int linecount = prep_file((char*)input_pair.key, path); // Network* net = setup(); @@ -82,12 +82,12 @@ Network* setup() int main() { NetworkArray netarray ("Train", setup, 1); - char* path = "./extra.txt"; - char* msg = "junk"; - struct pair testing = {(void*)path, (void*)msg}; - printf("SENDING %p %p (part of %p)\n", testing.key, testing.value, &testing); - netarray.map(testing); - // netarray.start_array("./extra.txt", 5, 1, "98.33.105.140", 1); + // char* path = "./extra.txt"; + // char* msg = "junk"; + //struct pair testing = {(void*)path, (void*)msg}; + // printf("SENDING %p %p (part of %p)\n", testing.key, testing.value, &testing); + //netarray.map(testing); + netarray.start_array("./extra.txt", 5, 1, "98.33.105.140", 1); return 0; } diff --git a/utils.cpp b/utils.cpp @@ -76,8 +76,15 @@ uintmax_t wc(char const *fname) if (!bytes_read) break; for(char *p = buf; (p = (char*) memchr(p, '\n', (buf + bytes_read) - p)); ++p) { - printf("START%sEND\n", p); + printf("About to segfault? It's simple - just don't!\n"); + // printf("%s", p) + for (int i = 1; i < BUFFER_SIZE; i++) { + printf("%c", p[i]); + } + printf("\nGlad you heeded my advice.\n"); + printf("\n\nDONE\n\n"); ++lines; + //printf(" DONE \n"); } }