commit 483db5bcd63c6145537a26ea98eaf4e243d67d86
parent c1621a248c76f048d48d212c6a1656c704ef12f2
Author: David Freifeld <freifeld.david@gmail.com>
Date: Sun, 21 Jun 2020 11:21:59 -0700
Continuing work on fixing net
Diffstat:
3 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/bpnn.cpp b/bpnn.cpp
@@ -98,8 +98,8 @@ void Network::feedforward()
// layers[i+1].contents->row(j) += *layers[i+1].bias; TODO ADD ME BACK!
}
// if (i != length-2) {
- *layers[i+1].contents = activate(*layers[i+1].contents);
- *layers[i+1].dZ = activate_deriv(*layers[i+1].contents);
+ *layers[i+1].contents = activate(*layers[i+1].contents);
+ *layers[i+1].dZ = activate_deriv(*layers[i+1].contents);
// }
// else {
// *layers[i + 1].dZ = (layers[i + 1].dZ->array() + 1).matrix();
@@ -129,8 +129,9 @@ float Network::accuracy()
float correct = 0;
int total = 0;
for (int i = 0; i < layers[length-1].contents->rows(); i++) {
+ printf("%i vs %f\n", (int)(*labels)(i, 0), (*layers[length-1].contents)(i, 0));
if ((*labels)(i, 0) == round((*layers[length-1].contents)(i, 0))) {
- // printf("Correct!\n");
+ printf("Correct!\n");
correct += 1;
}
total = i;
@@ -145,7 +146,10 @@ void Network::backpropagate()
// std::cout << "\nROUND\n\n\n\n\n\n";
std::vector<Eigen::MatrixXd> gradients;
std::vector<Eigen::MatrixXd> deltas;
- gradients.push_back((((*layers[length-1].contents) - (*labels)).cwiseProduct(((*layers[length-1].contents) - (*labels)))).cwiseProduct(*layers[length-1].dZ));
+ Eigen::MatrixXd error = ((*layers[length-1].contents) - (*labels)).cwiseProduct(((*layers[length-1].contents) - (*labels)));
+ error = error.cwiseProduct(((*layers[length-1].contents) - (*labels)).cwiseProduct(((*layers[length-1].contents) - (*labels))));
+ error = error.cwiseProduct(((*layers[length-1].contents) - (*labels)).cwiseProduct(((*layers[length-1].contents) - (*labels))));
+ gradients.push_back(error.cwiseProduct(*layers[length-1].dZ));
deltas.push_back((*layers[length-2].contents).transpose() * gradients[0]);
int counter = 1;
for (int i = length-2; i >= 1; i--) {
diff --git a/kerasdemo.py b/kerasdemo.py
@@ -12,6 +12,7 @@
import time
# import tensorflow
from numpy import loadtxt
+import keras
from keras.models import Sequential
from keras.layers import Dense
init = time.time()
@@ -25,13 +26,14 @@ model = Sequential()
model.add(Dense(4, input_dim=4, activation='sigmoid'))
model.add(Dense(5, activation='sigmoid'))
model.add(Dense(5, activation='sigmoid'))
-model.add(Dense(1, activation='sigmoid'))
+model.add(Dense(1, activation='relu'))
# compile the keras model
-model.compile(loss='mse', optimizer='sgd', metrics=['accuracy'])
+opt = keras.optimizers.SGD(lr=1)
+model.compile(loss='mse', optimizer=opt, metrics=['accuracy'])
# fit the keras model on the dataset
-model.fit(X, y, epochs=50, batch_size=10)
+model.fit(X, y, epochs=50, batch_size=1)
# evaluate the keras model
_, accuracy = model.evaluate(X, y)
print('Accuracy: %.2f' % (accuracy*100))
-end = time.time();
-print(end-init);
+end = time.time()
+print(end-init)
diff --git a/mr_bpnn_2.cpp b/mr_bpnn_2.cpp
@@ -108,5 +108,5 @@ void translate(char* path)
int main(int argc, char** argv)
{
// begin(argv[2], map, reduce, translate, strtol(argv[1], NULL, 10), 1, argv[3], strtol(argv[4], NULL, 10));
- demo(1);
+ demo(50);
}