commit a595e677d4953c0492bc8547e2e6e1ac6992d017
parent 4a0d6bfe1f77972297a700ea680e4bb64aa6d353
Author: David Freifeld <freifeld.david@gmail.com>
Date: Sat, 27 Jun 2020 14:56:03 -0700
Various experiments
Diffstat:
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");
}
}