jacobian

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

commit 509ec7150cd365ed4387be92f84b6a4090a17a9c
parent 7ecdb7cb088fe6c36d890f9bcfbaa63724dd32f2
Author: David Freifeld <freifeld.david@gmail.com>
Date:   Mon, 27 Jul 2020 15:08:49 -0700

More tweaks

Diffstat:
MMakefile | 2+-
Abench/benchmark.py | 57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Abench/kerasdemo.py | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dscripts/benchmark.py | 44--------------------------------------------
Dscripts/kerasdemo.py | 56--------------------------------------------------------
5 files changed, 112 insertions(+), 101 deletions(-)

diff --git a/Makefile b/Makefile @@ -20,7 +20,7 @@ debug: $(GEN_FLAGS) = -Wall -U NDEBUG fast: CXXFLAGS += $(GEN_FLAGS) -O3 fast: compile -faster: CXXFLAGS = -shared -std=c++17 -undefined dynamic_lookup `python3 -m pybind11 --includes` ./src/mr_bpnn_2.cpp ./src/bpnn.cpp ./src/utils.cpp mapreduce.a -liomp5 -lpthread -lm -ldl -o mrbpnn`python3-config --extension-suffix` -O3 -mavx -mfma -march=native -mfpmath=sse -fno-pic -DMKL_ILP64 -D NDEBUG +faster: CXXFLAGS = -shared -std=c++17 -undefined dynamic_lookup `python3 -m pybind11 --includes` ./src/mr_bpnn_2.cpp ./src/bpnn.cpp ./src/utils.cpp mapreduce.a -o mrbpnn`python3-config --extension-suffix` -O3 -mavx -mfma -march=native -mfpmath=sse -fno-pic -DMKL_ILP64 -D NDEBUG faster: compile tradeoffs: CXXFLAGS = -shared -std=c++17 -undefined dynamic_lookup `python3 -m pybind11 --includes` ./src/mr_bpnn_2.cpp ./src/bpnn.cpp ./src/utils.cpp mapreduce.a -o mrbpnn`python3-config --extension-suffix` -O3 -mavx -mfma -march=native -mfpmath=sse -DMKL_ILP64 -qopenmp -fno-pic -qopt-calloc -qopt-prefetch -unroll-aggressive -qopt-calloc -use-intel-optimized-headers -ffast-math -no-prec-div -no-prec-sqrt -fimf-precision=low -fast-transcendentals -D NDEBUG #-qopt-report=5 -qopt-report-file=report diff --git a/bench/benchmark.py b/bench/benchmark.py @@ -0,0 +1,57 @@ +# +# benchmark.py +# Jacobian +# +# Created by David Freifeld +# Copyright © 2020 David Freifeld. All rights reserved. +# + +import mrbpnn +import matplotlib.pyplot as plt +import numpy +import time + +def bench(batch_sz, layers): + init = time.time() + net = mrbpnn.Network("../data_banknote_authentication.txt", batch_sz, 0.0155, 0.03, 0, 0.9) + net.add_layer(4, "linear") + for i in range(layers): + net.add_layer(5, "relu") + net.add_layer(2, "linear") + net.initialize() + initend = time.time() + for i in range(50): + net.train() + end = time.time() + return (end-init) + +for i in range(1): + print(bench(16,1)) + +# x = [] +# y = [] +# i = 1 +# while(i < 125): +# print(i) +# y.append(bench(i, 1)) +# x.append(i) +# i+=1; +# plt.plot(x,y, label = "Jacobian (Sequential)") + +# plt.plot(otherlist, [2.3994078636169434, 1.2735769748687744, 1.0030598640441895, 0.8972160816192627, 0.801548957824707, 0.752018928527832, 0.7073678970336914, 0.6857280731201172, 0.6707980632781982, 0.6421489715576172, 0.6614980697631836, 0.6403779983520508, 0.7251319885253906, 0.6796879768371582, 0.6601080894470215, 0.6711599826812744, 0.6432759761810303, 0.6491389274597168, 0.6762490272521973, 0.6859049797058105, 0.7067179679870605, 0.7142889499664307, 0.7258059978485107, 0.7868969440460205, 0.7326970100402832, 0.7365641593933105, 0.7576079368591309, 0.7772500514984131, 0.8062641620635986, 0.7768490314483643, 0.8253629207611084, 0.8264601230621338, 0.8459320068359375, 0.9670729637145996, 0.8388969898223877, 0.9129719734191895, 0.9009649753570557, 0.8916170597076416, 0.8926799297332764, 0.9171609878540039, 0.9242072105407715, 0.9534740447998047, 0.947465181350708, 0.9723358154296875, 1.018247127532959, 1.1208629608154297, 1.014026165008545, 1.034980058670044, 1.0626468658447266, 1.080394983291626, 1.0627479553222656, 1.0839190483093262, 1.0938241481781006, 1.127730131149292, 1.1265759468078613, 1.136888027191162, 1.140428066253662, 1.1712510585784912, 1.206390142440796, 1.2087180614471436, 1.4066569805145264, 1.2425589561462402, 1.280066967010498, 1.2891559600830078, 1.3243582248687744, 1.3152379989624023], label="Keras") +# plt.legend() +# plt.show() +# print(y) + +# x = ['Keras', 'Scikit-Learn', 'Jacobian'] +# speed = [3.22842907906, 2.2518157958984375 ,0.043680644035339354] + +# x_pos = [i for i, _ in enumerate(x)] + +# plt.bar(x_pos, speed, color='green') +# plt.ylabel("Time (s)") +# plt.title("Average Runtime (10 trials)") + +# plt.xticks(x_pos, x) + +# plt.show() diff --git a/bench/kerasdemo.py b/bench/kerasdemo.py @@ -0,0 +1,54 @@ +# +# kerasdemo.py +# Jacobian +# +# Created by David Freifeld +# +#+-----------------------------------------------------------------------------+ +# Keras benchmark code to compare with network. +# +# Runs a fully connected feedforward neural network with backpropagation for 50 +# epochs, then tests on data. First layer has 4 neurons, 2 hidden layers have 5, +# output layer has 1. All four layers use sigmoid for activation. +# +# Taken and loosely modified from: +# https://machinelearningmastery.com/tutorial-first-neural-network-python-keras/ +#+-----------------------------------------------------------------------------+ + +import time +import numpy +# import tensorflow +from numpy import loadtxt +import keras +from keras import backend as K +from keras.models import Sequential +from keras.layers import Activation +from keras.layers import Dense + +def kerasbench(batch_sz, layers): + init = time.time() + dataset = loadtxt('data_banknote_authentication.txt', delimiter=',') + X = dataset[:,0:4] + y = dataset[:,4] + model = Sequential() + model.add(Dense(4, input_dim=4, activation='linear')) + for i in range(layers): + model.add(Dense(5, activation='relu')) + model.add(Dense(1, activation='linear')) + opt = keras.optimizers.SGD(lr=0.0155) + model.compile(loss='mse', optimizer=opt, metrics=['accuracy']) + model.fit(X, y, epochs=50, batch_size=batch_sz) + end = time.time() + return (end-init) + +# sum = 0 +# for i in range(10): +# sum += kerasbench(10, 1) +# print(sum/10) + +y2 = [] +y2.append(kerasbench(1, 1)) +y2.append(kerasbench(5, 1)) +y2.append(kerasbench(10, 1)) +y2.append(kerasbench(15, 1)) +print(kerasbench(16,1)) diff --git a/scripts/benchmark.py b/scripts/benchmark.py @@ -1,44 +0,0 @@ -# -# benchmark.py -# Jacobian -# -# Created by David Freifeld -# Copyright © 2020 David Freifeld. All rights reserved. -# - -import mrbpnn -import matplotlib.pyplot as plt -import numpy -import time - -def bench(batch_sz, layers): - init = time.time() - net = mrbpnn.Network("../data_banknote_authentication.txt", batch_sz, 0.0155, 0.03, 0, 0.9) - net.add_layer(4, "linear") - for i in range(layers): - net.add_layer(5, "lecun_tanh") - net.add_layer(2, "linear") - net.initialize() - initend = time.time() - for i in range(50): - net.train() - end = time.time() - return (end-init) - -for i in range(5): - print(bench(10,1)) - -# x = [] -# y = [] -# i = 1 -# while(i < 125): -# print(i) -# y.append(bench(i, 1)) -# x.append(i) -# i+=1; -# plt.plot(x,y, label = "Jacobian (Sequential)") - -# plt.plot(otherlist, [2.3994078636169434, 1.2735769748687744, 1.0030598640441895, 0.8972160816192627, 0.801548957824707, 0.752018928527832, 0.7073678970336914, 0.6857280731201172, 0.6707980632781982, 0.6421489715576172, 0.6614980697631836, 0.6403779983520508, 0.7251319885253906, 0.6796879768371582, 0.6601080894470215, 0.6711599826812744, 0.6432759761810303, 0.6491389274597168, 0.6762490272521973, 0.6859049797058105, 0.7067179679870605, 0.7142889499664307, 0.7258059978485107, 0.7868969440460205, 0.7326970100402832, 0.7365641593933105, 0.7576079368591309, 0.7772500514984131, 0.8062641620635986, 0.7768490314483643, 0.8253629207611084, 0.8264601230621338, 0.8459320068359375, 0.9670729637145996, 0.8388969898223877, 0.9129719734191895, 0.9009649753570557, 0.8916170597076416, 0.8926799297332764, 0.9171609878540039, 0.9242072105407715, 0.9534740447998047, 0.947465181350708, 0.9723358154296875, 1.018247127532959, 1.1208629608154297, 1.014026165008545, 1.034980058670044, 1.0626468658447266, 1.080394983291626, 1.0627479553222656, 1.0839190483093262, 1.0938241481781006, 1.127730131149292, 1.1265759468078613, 1.136888027191162, 1.140428066253662, 1.1712510585784912, 1.206390142440796, 1.2087180614471436, 1.4066569805145264, 1.2425589561462402, 1.280066967010498, 1.2891559600830078, 1.3243582248687744, 1.3152379989624023], label="Keras") -# plt.legend() -# plt.show() -# print(y) diff --git a/scripts/kerasdemo.py b/scripts/kerasdemo.py @@ -1,56 +0,0 @@ -# -# kerasdemo.py -# Jacobian -# -# Created by David Freifeld -# Copyright © 2020 David Freifeld. All rights reserved. -# - -#+-----------------------------------------------------------------------------+ -# Keras benchmark code to compare with network. -# -# Runs a fully connected feedforward neural network with backpropagation for 50 -# epochs, then tests on data. First layer has 4 neurons, 2 hidden layers have 5, -# output layer has 1. All four layers use sigmoid for activation. -# -# Taken and loosely modified from: -# https://machinelearningmastery.com/tutorial-first-neural-network-python-keras/ -#+-----------------------------------------------------------------------------+ - -import time -import numpy -# import tensorflow -from numpy import loadtxt -import keras -from keras import backend as K -from keras.models import Sequential -from keras.layers import Activation -from keras.layers import Dense - -def kerasbench(batch_sz, layers): - init = time.time() - dataset = loadtxt('data_banknote_authentication.txt', delimiter=',') - X = dataset[:,0:4] - y = dataset[:,4] - model = Sequential() - model.add(Dense(4, input_dim=4, activation='linear')) - for i in range(layers): - model.add(Dense(5, activation='relu')) - model.add(Dense(1, activation='sigmoid')) - opt = keras.optimizers.SGD(lr=0.0155) - model.compile(loss='mse', optimizer=opt, metrics=['accuracy']) - model.fit(X, y, epochs=50, batch_size=batch_sz) - end = time.time() - return (end-init) - -# sum = 0 -# for i in range(10): -# sum += kerasbench(10, 1) -# print(sum/10) - -y2 = [] -y2.append(kerasbench(1, 1)) -y2.append(kerasbench(5, 1)) -y2.append(kerasbench(10, 1)) -y2.append(kerasbench(15, 1)) -print(y2)