jacobian

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

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:
MMakefile | 12+++++++-----
Mbpnn.cpp | 32++++++++++++++++----------------
Mexample.py | 4++--
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))