commit 90ba7be49aa4574cddee3de9158f5b425ff27036
parent 9b40262219fb576b8b7c887810334d9575458332
Author: David Freifeld <freifeld.david@gmail.com>
Date: Sun, 28 Jun 2020 19:35:21 -0700
Screw it, no Adagrad
Diffstat:
3 files changed, 25 insertions(+), 23 deletions(-)
diff --git a/Makefile b/Makefile
@@ -1,14 +1,16 @@
-CXXFLAGS: mr_bpnn_2.cpp bpnn.cpp mapreduce.a
- g++ -w -shared -std=c++11 -undefined dynamic_lookup `python3 -m pybind11 --includes` mr_bpnn_2.cpp bpnn.cpp utils.cpp mapreduce.a -o mrbpnn`python3-config --extension-suffix`
+CXXFLAGS = -shared -std=c++11 -undefined dynamic_lookup `python3 -m pybind11 --includes` mr_bpnn_2.cpp bpnn.cpp utils.cpp mapreduce.a -o mrbpnn`python3-config --extension-suffix`
+all: build
-fast: CXXFLAGS = -w -shared -std=c++11 -undefined dynamic_lookup `python3 -m pybind11 --includes` mr_bpnn_2.cpp bpnn.cpp utils.cpp mapreduce.a -o mrbpnn`python3-config --extension-suffix` -O3
+debug: CXXFLAGS += -Wall -U NDEBUG
+
+fast: CXXFLAGS += -O3
fast: build
-faster: CXXFLAGS = -w -shared -std=c++11 -undefined dynamic_lookup `python3 -m pybind11 --includes` mr_bpnn_2.cpp bpnn.cpp utils.cpp mapreduce.a ${MKLROOT}/lib/libmkl_intel_ilp64.a ${MKLROOT}/lib/libmkl_intel_thread.a ${MKLROOT}/lib/libmkl_core.a -liomp5 -lpthread -lm -ldl -o mrbpnn`python3-config --extension-suffix` -O3 -mavx -mfma -march=native -mfpmath=sse -DMKL_ILP64 -I${MKLROOT}/include -D EIGEN_USE_MKL_ALL -D NDEBUG
+faster: CXXFLAGS = -shared -std=c++11 -undefined dynamic_lookup `python3 -m pybind11 --includes` mr_bpnn_2.cpp bpnn.cpp utils.cpp mapreduce.a ${MKLROOT}/lib/libmkl_intel_ilp64.a ${MKLROOT}/lib/libmkl_intel_thread.a ${MKLROOT}/lib/libmkl_core.a -liomp5 -lpthread -lm -ldl -o mrbpnn`python3-config --extension-suffix` -O3 -mavx -mfma -march=native -mfpmath=sse -DMKL_ILP64 -I${MKLROOT}/include -D EIGEN_USE_MKL_ALL -D NDEBUG
faster: build
-tradeoffs: CXXFLAGS = -w -shared -std=c++11 -undefined dynamic_lookup `python3 -m pybind11 --includes` mr_bpnn_2.cpp bpnn.cpp utils.cpp mapreduce.a ${MKLROOT}/lib/libmkl_intel_ilp64.a ${MKLROOT}/lib/libmkl_intel_thread.a ${MKLROOT}/lib/libmkl_core.a -liomp5 -lpthread -lm -ldl -o mrbpnn`python3-config --extension-suffix` -O3 -mavx -mfma -march=native -mfpmath=sse -DMKL_ILP64 -I${MKLROOT}/include -no-prec-div -no-prec-sqrt -fimf-precision=low -fast-transcendentals -ffinite-math-only -fno-math-errno -ffp-contract=fast -D EIGEN_USE_MKL_ALL -D NDEBUG
+tradeoffs: CXXFLAGS = -shared -std=c++11 -undefined dynamic_lookup `python3 -m pybind11 --includes` mr_bpnn_2.cpp bpnn.cpp utils.cpp mapreduce.a ${MKLROOT}/lib/libmkl_intel_ilp64.a ${MKLROOT}/lib/libmkl_intel_thread.a ${MKLROOT}/lib/libmkl_core.a -liomp5 -lpthread -lm -ldl -o mrbpnn`python3-config --extension-suffix` -O3 -mavx -mfma -march=native -mfpmath=sse -DMKL_ILP64 -I${MKLROOT}/include -no-prec-div -no-prec-sqrt -fimf-precision=low -fast-transcendentals -ffinite-math-only -fno-math-errno -ffp-contract=fast -D EIGEN_USE_MKL_ALL -D NDEBUG
tradeoffs: build
reckless: CXXFLAGS = -O3
diff --git a/bpnn.cpp b/bpnn.cpp
@@ -172,21 +172,21 @@ void Network::backpropagate()
counter++;
}
for (int i = 0; i < length-1; i++) {
- Eigen::MatrixXd gradient = gradients[i];
- std::cout << t <<"\n";
- if (t > 0) {
- Eigen::MatrixXd sum (layers[length-2-i].weights->rows(), layers[length-2-i].weights->cols());
- for (int j = 0; j < layers[length-2-i].prev_updates.size(); j++) {
- sum = sum + layers[length-2-i].prev_updates[j];
- }
- layers[length-2-i].prev_updates.emplace_back(((1/learning_rate) * sum.cwiseSqrt()).cwiseProduct(deltas[i]));
- std::cout << layers[length-2-i].prev_updates[layers[length-2-i].prev_updates.size()-1] << "\n\nSUM\n\n" << sum << "\n\n\n";
- *layers[length-2-i].weights -= layers[length-2-i].prev_updates[layers[length-2-i].prev_updates.size()-1];
- }
- else {
- std::cout << "AAAA" << learning_rate * deltas[i] << "\n\n";
- *layers[length-2-i].weights -= learning_rate * deltas[i];
- }
+ //Eigen::MatrixXd gradient = gradients[i];
+ //std::cout << t <<"\n";
+ //if (t > 0) {
+ // Eigen::MatrixXd sum (layers[length-2-i].weights->rows(), layers[length-2-i].weights->cols());
+ // for (int j = 0; j < layers[length-2-i].prev_updates.size(); j++) {
+ // sum = sum + layers[length-2-i].prev_updates[j].cwiseProduct(layers[length-2-i].prev_updates[j]);
+ // std::cout << sum << "\n\n";
+ // }
+ // layers[length-2-i].prev_updates.emplace_back(((1/learning_rate) * sum.cwiseSqrt()).cwiseProduct(deltas[i]));
+ // std::cout << layers[length-2-i].prev_updates[layers[length-2-i].prev_updates.size()-1] << "\n\nSUM\n\n" << sum << "\n\n\n";
+ // *layers[length-2-i].weights -= layers[length-2-i].prev_updates[layers[length-2-i].prev_updates.size()-1];
+ //}
+ //else {
+ //std::cout << "AAAA" << learning_rate * deltas[i] << "\n\n";
+ *layers[length-2-i].weights -= learning_rate * deltas[i];
*layers[length-1-i].bias -= bias_lr * gradients[i];
}
}
@@ -304,7 +304,7 @@ void Network::train(int total_epochs)
cost_sum += cost();
acc_sum += accuracy();
batches++;
- t++;
+ //t++;
}
epoch_accuracy = 1.0/((float) instances/batch_size) * acc_sum;
epoch_cost = 1.0/((float) instances/batch_size) * cost_sum;
diff --git a/example.py b/example.py
@@ -4,13 +4,13 @@ import time
def bench():
init = time.time()
- net = mrbpnn.Network("./extra.txt", 10, 0.001, 0.03);
+ net = mrbpnn.Network("./data_banknote_authentication.txt", 10, 0.001, 0.03);
net.add_layer(4, "linear");
net.add_layer(5, "relu");
net.add_layer(1, "resig");
net.initialize();
initend = time.time()
- net.train(1);
+ net.train(50);
end = time.time()
return (end-init)
# print("%s: init %s" % (end-init, initend-init))