From 62409d575f3a673fe94d2f5b6a3613843ee4ee60 Mon Sep 17 00:00:00 2001 From: Toby Davis Date: Mon, 19 Oct 2020 13:20:25 +0100 Subject: [PATCH] Neural network library and bug fixes --- README.md | 19 +- build/lib.win-amd64-3.8/libpymath/__init__.py | 3 +- .../libpymath/core/matrix.cp38-win_amd64.pyd | Bin 58368 -> 59904 bytes .../libpymath/matrix/matrix.py | 6 + .../libpymath/network/__init__.py | 1 + .../libpymath/network/network.py | 254 ++++++++++++++++++ .../Release/libpymath/src/matrix/matrix.obj | Bin 303076 -> 309566 bytes dist/libpymath-0.5.7.tar.gz | Bin 35723 -> 38139 bytes dist/libpymath-0.6.0-cp38-cp38-win_amd64.whl | Bin 0 -> 50625 bytes dist/libpymath-0.6.0.tar.gz | Bin 0 -> 38350 bytes docs/build/doctrees/environment.pickle | Bin 32510 -> 32684 bytes docs/build/doctrees/libpymath.matrix.doctree | Bin 51916 -> 53569 bytes docs/build/html/.buildinfo | 2 +- .../html/_static/documentation_options.js | 2 +- docs/build/html/genindex.html | 8 +- docs/build/html/index.html | 2 +- docs/build/html/libpymath.html | 2 +- docs/build/html/libpymath.matrix.html | 20 +- docs/build/html/libpymath.progress.html | 2 +- docs/build/html/libpymath.src.error.html | 2 +- docs/build/html/libpymath.src.html | 2 +- docs/build/html/libpymath.src.matrix.html | 2 +- docs/build/html/modules.html | 2 +- docs/build/html/objects.inv | Bin 566 -> 575 bytes docs/build/html/py-modindex.html | 2 +- docs/build/html/search.html | 2 +- docs/build/html/searchindex.js | 2 +- docs/build/latex/libpymath.tex | 24 +- docs/source/conf.py | 2 +- .../__pycache__/network.cpython-38.pyc | Bin 2197 -> 0 bytes examples/simple-neural-network/main.py | 10 +- examples/ultra-simple-neural-network/main.py | 31 +++ libpymath.egg-info/PKG-INFO | 21 +- libpymath.egg-info/SOURCES.txt | 2 + libpymath/__init__.py | 3 +- libpymath/matrix/matrix.py | 6 + libpymath/network/__init__.py | 1 + libpymath/network/network.py | 254 ++++++++++++++++++ libpymath/src/matrix/doubleRoutines.h | 83 ++++++ libpymath/src/matrix/matrix.c | 24 +- setup.py | 2 +- 41 files changed, 734 insertions(+), 64 deletions(-) create mode 100644 build/lib.win-amd64-3.8/libpymath/network/__init__.py create mode 100644 build/lib.win-amd64-3.8/libpymath/network/network.py create mode 100644 dist/libpymath-0.6.0-cp38-cp38-win_amd64.whl create mode 100644 dist/libpymath-0.6.0.tar.gz delete mode 100644 examples/simple-neural-network/__pycache__/network.cpython-38.pyc create mode 100644 examples/ultra-simple-neural-network/main.py create mode 100644 libpymath/network/__init__.py create mode 100644 libpymath/network/network.py diff --git a/README.md b/README.md index ca6b356..6d50c85 100644 --- a/README.md +++ b/README.md @@ -15,20 +15,11 @@ Run ```pip install libpymath``` to dowload and install ```libpymath``` for your --- ## Features and usage -### Matrix math +### Matrix Math Easily create, manipulate and perform calculations with dense matrices. The matrices themselves are stored and manipulated with optimised C code, resulting in faster operations and more efficient calculations. To further increase the speed of the calculations, when libpymath imported into a project for the first time, it runs some tests on the CPU to find the optimal number of threads to use for the matrix calculations. -The matrix library contains many features, such as: -1. Elementwise addition, subtraction, multiplication and division with another matrix -2. Addition, subtraction, multiplication and division by a scalar -3. Matrix transpose, -4. Matrix product, -5. Filling a matrix with ascending values, descending values, random values or a single value -6. Getting or setting values -7. Creating a matrix from data -8. Mapping with sigmoid, tanh, ReLU and leaky ReLU, as well as their derivatives -9. Getting the matrix as a Python list -10. Supports pickling with the standard library ```pickle``` module -11. Formatting and printing a matrix +### Progress Bars +Wrap a progress bar around any Python iterator and have a progress bar generated automatically. The progress bar will adjust its width to the width of the console, shows the current percentage, time and time remaining, as well as the number of iterations per second the bar is running at. The rate at which the bar updates also adjusts dynamically, ensuring that it has a minimal impact on the speed of the loop, while updating frequently enough to provide relevant information. -\* Due to Clang on Mac OS the wheels do not support OpenMP, meaning some matrix operations may be slower than on other operating systems. +### Neural Networks +Create, train and evaluate a neural network in only a few lines of code, customising the size of the network, its learning rate, it's activation functions (which can be customised on a per-layer basis) and the metrics which it logs. The network library also uses the efficient Matrix library, meaning it can train a simple network in under a second. You can also plot a graph of any metrics that are being logged, making it easy to evaluate the progress of the network. diff --git a/build/lib.win-amd64-3.8/libpymath/__init__.py b/build/lib.win-amd64-3.8/libpymath/__init__.py index 44f1e32..2348761 100644 --- a/build/lib.win-amd64-3.8/libpymath/__init__.py +++ b/build/lib.win-amd64-3.8/libpymath/__init__.py @@ -19,6 +19,5 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ -from . import matrix -from . import progress +from . import matrix, progress, network import libpymath.error diff --git a/build/lib.win-amd64-3.8/libpymath/core/matrix.cp38-win_amd64.pyd b/build/lib.win-amd64-3.8/libpymath/core/matrix.cp38-win_amd64.pyd index 2be0b385edcd9a51eb4a2d7dbdf611d06354b589..d618949bc97cf4eabda35b264dc0a8ad3439093a 100644 GIT binary patch delta 14648 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 xb(T77U1nWnT~l2rdd@nO|IcBm$ge1 0: + transposed = layerData[i - 1].T + else: + transposed = inputs.T + + weight_deltas = gradient @ transposed + + self._layers[i] += weight_deltas + self._biases[i] += gradient + + if i > 0: + layerT = self._layers[i].T + errors[i - 1] = layerT @ errors[i] + + def log(self, metric, mod=1): + if metric == "loss" and self._metrics["loss"] != [None]: + self._metrics["loss"][1] = True + self._metricMod["loss"] = mod + + def metrics(self, metric): + if metric not in self._metrics: + raise KeyError("Metric {} does not exist".format(metric)) + if not self._metrics[metric][1]: + raise KeyError("Metric {} is not being logged".format(metric)) + + return self._metrics[metric][0] + + def plotMetric(self, metric): + if metric not in self._metrics: + raise KeyError("Metric {} does not exist".format(metric)) + if not self._metrics[metric][1]: + raise KeyError("Metric {} is not being logged".format(metric)) + + x = [i * self._metricMod[metric] for i in range(len(self.metrics(metric)))] + y = self._metrics[metric][0] + + try: + import matplotlib.pyplot as plt + + fig, axs = plt.figure(), plt.axes() + fig.canvas.set_window_title("Libpymath Network {}".format(metric.title())) + + axs.plot(x, y) + axs.set_title("{} vs Epoch".format(metric.title())) + axs.set_xlabel("Epoch") + axs.set_ylabel("{}".format(metric.title())) + + plt.show() + except ImportError: + raise ModuleNotFoundError("The module matplotlib.pyplot was not found, please install this via pip") + + def metricData(self, metric): + if metric not in self._metrics: + raise KeyError("Metric {} does not exist".format(metric)) + if not self._metrics[metric][1]: + raise KeyError("Metric {} is not being logged".format(metric)) + + return [i * self._metricMod[metric] for i in range(len(self.metrics(metric)))], self._metrics[metric][0] + + def fit(self, inputData, targetData=None, epochs=500, **kwargs): + data = self.parseData(inputData, targetData) + samples = len(data) + + if "progress" in kwargs and kwargs["progress"] not in [0, False]: + iterator = lpm.progress.Progress(range(epochs)) + else: + iterator = range(epochs) + + for _ in iterator: + pos = random.randint(0, samples - 1) + self.backpropagate(data[pos][0], data[pos][1], noCheck=True) diff --git a/build/temp.win-amd64-3.8/Release/libpymath/src/matrix/matrix.obj b/build/temp.win-amd64-3.8/Release/libpymath/src/matrix/matrix.obj index b9c5a6153ccad20cfd1907d9fadfbb645bcc0405..5e19f7384c0d1dd7fa40b6ab44d66fdd92da0b66 100644 GIT binary patch delta 82829 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¥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 N&$Vw~A>V<;{{aW|L~8&5 delta 77258 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 diff --git a/dist/libpymath-0.5.7.tar.gz b/dist/libpymath-0.5.7.tar.gz index c231b4561b7e269b3fb0c1bda7608b448cd302b8..74c03903530eb0402f12b5eb4991f56f3fe5fc4c 100644 GIT binary patch literal 38139 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%0DkN_xPf8y1}D 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 JA4~vX1OVIT6+{34 diff --git a/dist/libpymath-0.6.0-cp38-cp38-win_amd64.whl b/dist/libpymath-0.6.0-cp38-cp38-win_amd64.whl new file mode 100644 index 0000000000000000000000000000000000000000..e6f4cb6b1c862aa787a24bd58b402c2f2a1b76c3 GIT binary patch literal 50625 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 literal 0 HcmV?d00001 diff --git a/dist/libpymath-0.6.0.tar.gz b/dist/libpymath-0.6.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..a9d012728a8d1f7cbb8309a8bb9019819b50360f GIT binary patch literal 38350 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 literal 0 HcmV?d00001 diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 4421d75a9bcdeb4dc2acbc7c31fbd379f3132b21..c256b1fd0a910718791c5b6aee2bc0bbbc1670a4 100644 GIT binary patch literal 32684 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 literal 32510 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 X8$yQKhKok9^Ca(9;Ws$emkR#}A{y=z diff --git a/docs/build/doctrees/libpymath.matrix.doctree b/docs/build/doctrees/libpymath.matrix.doctree index 94ecf3d2b8bab7111c2d3d70a12a541cacf62967..cbdf0bd12b5bbd999c07c268eea32788297c9127 100644 GIT binary patch delta 2909 zcmZuzeNa@_75Cm{7oNLsAIl1XT_PZ{Wg#GhC=)dZgHakB=?Wf9|{Y zp5M9W<9F`4?|Qpow8vmM`TY=9j{-_$$wpF;dL-(OXh+m_?@15}>a-;avGK*T^uG+Pw zPDd2S&a;tZ(xy*`^;Z?ag~MKbu_G@VKC3CUn1l5;)Mh~Tych_#hrmgDD3tD5%9om< zxi5-mn;|@96WsFtj;}XE!tp0r5!|c#gjE8op9dc#MzQbUEDm-)9tN+Lg|KpXtR{!; zo0h&jOUm|0?7|_BLll|k%<(Xf!Q&KVG>t8+F01f7`dxpLCvLM}>h@=9(6c6oP027{2CCf77qYKhk zeU0Z^pm<9rUqcud%YwFpQkPx8Q<8Zv+Re#S3xX2}w%k-+ZIP_)wjgU8L4ElT{D?)e zb{Nu{e#84H4m;7tdvIEl%uiTgVa*DDc}6fI1?&WxoT2J4IjB?BMblYS9k58M4(^Rn zb+M$X#UiQt_1;s;r=;W%zeV?us*!#B_#F$3*H!X=qP58+JkXQSg@Q?Jc_FyX2 z{Jw=~V$~>0R(7e9A?ch8F14&?2f*!fL2I@dt6loBA(Zb@VQ`C!-Ir%HC5N&*kZ~}T z?v&aRoI%OeSygg%UX@&R9{QNQheu`@_hO>nhBpoe*hjctobWc8)^q5*w`~eZ^;U12ZtT9&cmu7m zufvX`3a4qTJ%RS7I=YSK>jFlp0yil*tTqG1~R zrEGN!om}m4c^a`n>M(h64H_oW8T=$z3_<5XabFs?q^7<{_%bapacnu`#pFb~iAuLX zgNdp}xbw;iUMgKnD45YL`9Hp_(IkUI$6w)VH7M?EQyK~75cS$*W8cebwcv_nM}VD3 zR(u3=iWZbj7VAlkij}>N;y4(HSxNQEx^a~VSgtBUDHXC@yX0;TURs|vS+POV?`u@C ztQKs2Pg>TJmR@ru7<-gKoYP?RSR^}#IoJh5uYL@-PvwHL)eCt&E8$nCOX2-(VQ{ZU zgQET{Sp1qBe$l@ieA~UIsvYaLc&p&hnK4-1YlCmUW`fk-RK6^nx_#j6Ps$nG@B0GS zo4Kq3#=E`HdU_Q+e6tjm^gEz#APWxm=flLnaz-Q8Oyi2 zyDybn70UBy%Yyj}^V|gip@&j(a{FWY2)lg*!0Rnf2I}FPE zx@?SOPpINOTIw~_33rF10>2!IV9ISB^wIx<=1MbnhaU;7dh3Eg`9cSMCP9f)C#eJ? z36@y!4^Wc07$ ccOCp96`UO&zN>}^bQfM4+O8+R>DoH>U${iIVgLXD delta 2529 zcmZ8ieN2-_80W55-rDzr%0O*#1;K?D#Se6DvjTO_O;MB?+yJ#!B`X&dSwZDP#0m2w zXrNC;Ax6>pg-(=J=L9F9nNz1CF4+>Ji6(AQHx*~LC2n!MyO-9=Kks|@Jip&_&;6d~ z?mG8su58n2E414>FSls#E{VvUkvU+-d-k*}$A@(2b%oCNx+0)+$#5~)10!dt z;Ri!ouDOrNcR%+x2|`!>0$&u`VO{AOIJ|l;iUU+^MbS`DW`-3b1ZZ5;4@JSp#i_`~ zJ#Y2#^b{vRebGWFEg1~*%6ND*M}f;FrMkuXkPw%VIQ4M1V=PpZuEz`Xo=g*5&zX%@ z(im2qn;}fZq=#;E6m*moqFNr?W;5U|dYEO4LR+A6jfG9RZAoY|^~OSbawy)QhcT0e z!?^NyQCom=N~N5F@5@JFI$@L(!ITWgFu|$iSygg->fBK5)<%_REw;wI3`6F!h*9Z9i*j8<*LdSy=J{TdB7$Lh3ba)X5mk2@qQ$VoovItUT?}s| zJ4IfZN1s>XdeL8*7Ihtq0zIx!p_w5~WG)ys)}kxi6^8Y|3UpCq1!BLdHSz4n!m#qvZ~~j@rv0vk`+2Z@<(75tEUU6CQ0@{F{p}Qu#d!f60hGfN~iU^zU3xf z&myt1zu26%Z7a_Q6lk5SZlnvOaf=36&}`P>Y5qSNWPSK z4N7V&aFgW8oCK-+Vo;}lce=Cc?ph^!LLwk_hzWN~(BT=2exeXFR5WCwA36AXSbvGM z^3~HcG;UX5+h-|vzeNi2wMicDNV*&spp0?+$x{I$wB#N&fs=&ed#V(Y%%xDa-NvzW zs7is&GL(-fgT}hI@mRlAfQ3$Nv>b>yh7J43VU)QX`P=Jol+5KAv!hg(&X7hjL*{ZQ zqY7zY!Lvh)r^$X*oZxIQL)d7&ZUFJV zDmz?{7f{-Mix}j~f&UsNF_CKK`Le58%Jed#%>$J=l%N@h4x++ zl$WmbH0ogbo;UFgzguk+KZIu9&GUNoz_zNoMDA_CXH;Eo?fpdem?4eicU6~)(n1j~$9{&8`F*&5Xd!GrW&}sm1h{`J4gPMjLH_YdIC1zq ze?=ySu{+7vb7V1sLf>PsHQQnJEVt*B1hFS4!h~ZB!I3S%g_GgXa%=*GeQk%N<2Fdl zp^$;_?D%=88yE}IUzcIpKqEwdGYVf)BO1Q4B4|FHH3S(#LdbIz5>l;QywvG-d&$3a zLbL{Ygu@}JwObcX5mZ0}wd5uAcgb`tLvmX+lHrH8D|ocQb2h3B3sk zyWWYBwmmVkPb>SdvrMvSa}WoFbqx+@N$|ap1U9-&KakNjNJFQzrNfnKZJv8s{u1xT UBA12SGQhenH - Index — libpymath 0.5.0 documentation + Index — libpymath 0.6.0 documentation @@ -288,6 +288,8 @@

M

  • mapped() (libpymath.matrix.matrix.Matrix method)
  • Matrix (class in libpymath.matrix.matrix) +
  • +
  • mean() (libpymath.matrix.matrix.Matrix method)
  • module @@ -341,6 +343,10 @@

    S

    +
    diff --git a/docs/build/html/index.html b/docs/build/html/index.html index ee163c0..e47c677 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -7,7 +7,7 @@ - Libpymath Documentation — libpymath 0.5.0 documentation + Libpymath Documentation — libpymath 0.6.0 documentation diff --git a/docs/build/html/libpymath.html b/docs/build/html/libpymath.html index cab5f45..b8122a3 100644 --- a/docs/build/html/libpymath.html +++ b/docs/build/html/libpymath.html @@ -7,7 +7,7 @@ - libpymath package — libpymath 0.5.0 documentation + libpymath package — libpymath 0.6.0 documentation diff --git a/docs/build/html/libpymath.matrix.html b/docs/build/html/libpymath.matrix.html index 80912b3..72b1950 100644 --- a/docs/build/html/libpymath.matrix.html +++ b/docs/build/html/libpymath.matrix.html @@ -7,7 +7,7 @@ - libpymath.matrix package — libpymath 0.5.0 documentation + libpymath.matrix package — libpymath 0.6.0 documentation @@ -316,12 +316,12 @@

    Submodules
    Parameters

    mapType – Function to map with

    @@ -346,6 +346,11 @@

    Submodules +
    +mean()
    +
    +
    reshape(nr, nc)
    @@ -402,6 +407,11 @@

    Submodules +
    +sum()
    +

    +
    property threads
    diff --git a/docs/build/html/libpymath.progress.html b/docs/build/html/libpymath.progress.html index 102e5b9..b63c3d9 100644 --- a/docs/build/html/libpymath.progress.html +++ b/docs/build/html/libpymath.progress.html @@ -7,7 +7,7 @@ - libpymath.progress package — libpymath 0.5.0 documentation + libpymath.progress package — libpymath 0.6.0 documentation diff --git a/docs/build/html/libpymath.src.error.html b/docs/build/html/libpymath.src.error.html index b5971b5..a1c3d95 100644 --- a/docs/build/html/libpymath.src.error.html +++ b/docs/build/html/libpymath.src.error.html @@ -7,7 +7,7 @@ - libpymath.src.error package — libpymath 0.5.0 documentation + libpymath.src.error package — libpymath 0.6.0 documentation diff --git a/docs/build/html/libpymath.src.html b/docs/build/html/libpymath.src.html index f332311..8b76ccd 100644 --- a/docs/build/html/libpymath.src.html +++ b/docs/build/html/libpymath.src.html @@ -7,7 +7,7 @@ - libpymath.src package — libpymath 0.5.0 documentation + libpymath.src package — libpymath 0.6.0 documentation diff --git a/docs/build/html/libpymath.src.matrix.html b/docs/build/html/libpymath.src.matrix.html index 58269fb..79218ce 100644 --- a/docs/build/html/libpymath.src.matrix.html +++ b/docs/build/html/libpymath.src.matrix.html @@ -7,7 +7,7 @@ - libpymath.src.matrix package — libpymath 0.5.0 documentation + libpymath.src.matrix package — libpymath 0.6.0 documentation diff --git a/docs/build/html/modules.html b/docs/build/html/modules.html index 8c6d2fb..e664738 100644 --- a/docs/build/html/modules.html +++ b/docs/build/html/modules.html @@ -7,7 +7,7 @@ - libpymath — libpymath 0.5.0 documentation + libpymath — libpymath 0.6.0 documentation diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv index 7e9886e6bad6a4dc1ab85fef5a033deef565dd75..92afd44ecf496efb91189d69a88a39b6c333bb3b 100644 GIT binary patch delta 464 zcmV;>0Wbcx1iu83d4Ef8!Y~kq_ng8~yG>NK>{_v@L?u*u0b>tIRL8b#qmtX#!3jx- z6G}VXL@k__%&No&|dOTA~No3$5=QD!Fl?7zX7eYAA}BZ_ZxAvv6g zb$li09t262q_v*I$!q;{(S>ov>Y!f4=JH})D|ReFI_e4~yE*prh7Z~9FVU2J(hSD$ z*=TaFAToXdk5HG57ljR4OJX~J1gtwAWwi|_SL%onnn~VIa=O-&sAi(fxmCN80*R}r z!FruU#G$LCbp*y+P+X8n(AHp?8`IT*iyr630Ncv%YB?Oo0yQijCI(x`*#-Z$uHzf= GOyiV!n%#N; delta 455 zcmV;&0XY7@1hxc_d4J7r!ypXD?|llS?b>L)_O_{)Nu5-!djSe=5{&=?sx@yvQu5i5 zbltp5lwkXZ!GD59e$Zt>T}E`dE)+irAWuXzqe+Njhk!A@L2jd|t@YF+*TmF#-V@trnA{*;xZAi+=vFOxruUxNJu94_*t zxz7}ZdGsnt;eY;}w1!QT)LUk%Sy{mtWoDu;_8W}Z4ykh(QGA(m$>B__<7+_=Ajon> zn$e3pd97X-of}uIa_V_(+xBpy*r@>NsLPe?a_q+qyT(`$ - Python Module Index — libpymath 0.5.0 documentation + Python Module Index — libpymath 0.6.0 documentation diff --git a/docs/build/html/search.html b/docs/build/html/search.html index 3e8c3cf..f0b826b 100644 --- a/docs/build/html/search.html +++ b/docs/build/html/search.html @@ -7,7 +7,7 @@ - Search — libpymath 0.5.0 documentation + Search — libpymath 0.6.0 documentation diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index f9077ef..af8d885 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index","libpymath","libpymath.matrix","libpymath.progress","libpymath.src","libpymath.src.error","libpymath.src.matrix","modules"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","libpymath.rst","libpymath.matrix.rst","libpymath.progress.rst","libpymath.src.rst","libpymath.src.error.rst","libpymath.src.matrix.rst","modules.rst"],objects:{"":{libpymath:[1,0,0,"-"]},"libpymath.matrix":{matrix:[2,0,0,"-"]},"libpymath.matrix.matrix":{Matrix:[2,1,1,""]},"libpymath.matrix.matrix.Matrix":{T:[2,2,1,""],cols:[2,2,1,""],copy:[2,2,1,""],dot:[2,2,1,""],dtype:[2,2,1,""],fill:[2,2,1,""],fillAscending:[2,2,1,""],fillDescending:[2,2,1,""],fillRandom:[2,2,1,""],fillScalar:[2,2,1,""],map:[2,2,1,""],mapped:[2,2,1,""],reshape:[2,2,1,""],reshaped:[2,2,1,""],rows:[2,2,1,""],shape:[2,2,1,""],threads:[2,2,1,""],toList:[2,2,1,""],transpose:[2,2,1,""],transposed:[2,2,1,""]},"libpymath.progress":{progress:[3,0,0,"-"]},"libpymath.progress.progress":{Progress:[3,1,1,""],frange:[3,1,1,""]},"libpymath.progress.progress.Progress":{generateBar:[3,2,1,""],reset:[3,2,1,""],update:[3,2,1,""]},"libpymath.src":{error:[5,0,0,"-"],matrix:[6,0,0,"-"]},libpymath:{matrix:[2,0,0,"-"],progress:[3,0,0,"-"],src:[4,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method"},terms:{"1000x1000":[],"1xc":[],"2x3":[],"3x5":[],"case":[],"class":[2,3],"default":2,"function":2,"import":0,"long":0,"new":2,"return":2,"static":3,"while":0,AND:[1,2],BUT:[1,2],FOR:[1,2],For:0,NOT:[1,2],THE:[1,2],The:[1,2],USE:[1,2],Use:[],WITH:[1,2],With:0,_max:2,_min:2,abl:[],abov:[1,2],accept:2,access:0,action:[1,2],add:0,added:[],adjust:2,align:[],all:[0,1,2],allow:0,also:[],ani:[0,1,2],anoth:[0,2],appear:[],appli:2,arg:2,aris:[1,2],ascend:2,associ:[1,2],assum:[],author:[1,2],background:[],bar:0,base:[2,3],being:[],below:0,between:2,both:[],bug:0,built:0,calcul:2,can:0,certain:[],chang:0,charg:[1,2],choic:0,claim:[1,2],cli:0,clone:0,code:0,col:2,colstrid:[],column:2,com:0,combin:[],command:0,commerci:0,common:[],commonli:0,compil:0,complex:0,comput:2,concatent:[],condit:[1,2],connect:[1,2],contain:[],content:7,contract:[1,2],convert:2,copi:[1,2],copyright:[0,1,2],cover:0,creat:0,d_leaky_relu:2,d_relu:2,d_sigmoid:2,d_tanh:2,damag:[1,2],data:[],datatyp:2,davi:[1,2],deal:[1,2],decim:[],descend:2,detect:[],differ:[],dimension:[],directori:0,distribut:[1,2],document:[1,2],doe:[],doing:[],done:[],dot:2,dtype:2,easi:[],easier:0,easiest:[],easili:0,edit:0,effect:[],effici:0,element:2,emptychar:3,end:3,environ:0,eras:3,error:[1,4],even:[],event:[1,2],everi:2,exact:2,exampl:[],exist:0,expand:[],experienc:0,explicitli:[],express:[1,2],extrem:[],fals:3,fast:0,faster:[],featur:0,few:0,file:[0,1,2],fill:[2,3],fillascend:2,fillchar:3,filldescend:2,fillrandom:2,fillscalar:2,filltyp:2,find:0,first:0,fit:[1,2],fix:0,float64:[],follow:[1,2],form:2,format:[],frang:3,free:[1,2],from:[0,1,2],furnish:[1,2],gener:0,generatebar:3,git:0,github:0,give:[],given:2,grant:[1,2],have:[],here:[],herebi:[1,2],holder:[1,2],hopefulli:0,how:0,howev:0,http:0,idl:0,impli:[1,2],improv:[],includ:[1,2],index:[],inerfac:0,inform:0,inplac:2,interfac:[],internal_new:[],intuit:0,issu:[],iter:3,its:[],kind:[1,2],kwarg:2,lastest:0,lead:[],leaky_relu:2,length:3,liabil:[1,2],liabl:[1,2],librari:0,licens:0,like:0,limit:[1,2],line:0,list:2,look:[],lpm:0,lucklili:[],made:0,mai:[],maintain:0,major:[],make:[],mani:[],map:2,maptyp:2,math:0,mathemat:0,matric:0,matrix:[0,1,4,7],max:[],mean:[],merchant:[1,2],merg:[1,2],messag:3,method:2,min:[],mit:0,mitig:[],modifi:[1,2],modul:[0,7],more:0,multipl:[],must:0,mymatrix:[],nan:[],nearli:[],neatli:[],need:0,network:0,neural:0,non:[],none:[0,2,3],noninfring:[1,2],note:[],notic:[0,1,2],number:2,object:[2,3],obtain:[1,2],onli:0,onto:[],open:0,oper:0,optim:[],option:0,other:[1,2],otherwis:[1,2],out:[1,2],output:[],over:[],packag:7,page:0,paramet:2,particular:[1,2],pencilcaseman:0,permiss:[1,2],permit:[1,2],person:[1,2],piec:0,pip:0,point:[],portion:[1,2],potenti:0,power:0,print:[],privat:0,process:[],product:2,progress:[0,1,7],project:0,properti:2,provid:[0,1,2],publish:[1,2],purpos:[0,1,2],python:[0,2],random:2,rang:2,rapidli:[],readabl:[],reason:[],relu:2,repositori:0,reset:3,reshap:2,restrict:[1,2],result:2,retain:0,right:[1,2],routin:0,row:2,rowstrid:[],ruin:[],run:0,scalar:2,screen:[],search:0,second:0,section:[],see:[0,2],seen:[],sell:[1,2],shall:[1,2],shape:2,shorter:0,sigmoid:2,simpl:0,simpli:0,singl:2,size:[],smooth:3,softwar:[1,2],some:2,sourc:0,specifi:[],src:[1,7],start:[0,2,3],step:3,store:[],subject:[1,2],sublicens:[1,2],submodul:[0,1,7],subpackag:7,substanti:[1,2],system:0,take:0,tanh:2,test:[],text:[],thi:[0,1,2],though:[],thread:2,through:[],time:[],tobi:[1,2],tolist:2,top:0,tort:[1,2],transpos:2,type:[0,2],under:0,understand:[],updat:3,upgrad:0,use:[0,1,2],used:0,useful:[],user:0,using:[0,2],valid:2,valu:2,version:0,visualis:[],wai:[],warranti:[1,2],well:[],wheel:0,when:2,where:[],whether:[1,2],which:0,whom:[1,2],without:[1,2],won:0,work:0,would:0,wrap:[],write:0,you:0,your:0,zero:[]},titles:["Libpymath Documentation","libpymath package","libpymath.matrix package","libpymath.progress package","libpymath.src package","libpymath.src.error package","libpymath.src.matrix package","libpymath"],titleterms:{"import":[],The:0,Using:0,aim:0,content:[0,1,2,3,4,5,6],creat:[],document:0,error:5,indic:0,instal:0,libpymath:[0,1,2,3,4,5,6,7],licenc:0,matrix:[2,6],modul:[1,2,3,4,5,6],packag:[0,1,2,3,4,5,6],print:[],progress:3,src:[4,5,6],submodul:[2,3],subpackag:[1,4],tabl:0}}) \ No newline at end of file +Search.setIndex({docnames:["index","libpymath","libpymath.matrix","libpymath.progress","libpymath.src","libpymath.src.error","libpymath.src.matrix","modules"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst","libpymath.rst","libpymath.matrix.rst","libpymath.progress.rst","libpymath.src.rst","libpymath.src.error.rst","libpymath.src.matrix.rst","modules.rst"],objects:{"":{libpymath:[1,0,0,"-"]},"libpymath.matrix":{matrix:[2,0,0,"-"]},"libpymath.matrix.matrix":{Matrix:[2,1,1,""]},"libpymath.matrix.matrix.Matrix":{T:[2,2,1,""],cols:[2,2,1,""],copy:[2,2,1,""],dot:[2,2,1,""],dtype:[2,2,1,""],fill:[2,2,1,""],fillAscending:[2,2,1,""],fillDescending:[2,2,1,""],fillRandom:[2,2,1,""],fillScalar:[2,2,1,""],map:[2,2,1,""],mapped:[2,2,1,""],mean:[2,2,1,""],reshape:[2,2,1,""],reshaped:[2,2,1,""],rows:[2,2,1,""],shape:[2,2,1,""],sum:[2,2,1,""],threads:[2,2,1,""],toList:[2,2,1,""],transpose:[2,2,1,""],transposed:[2,2,1,""]},"libpymath.progress":{progress:[3,0,0,"-"]},"libpymath.progress.progress":{Progress:[3,1,1,""],frange:[3,1,1,""]},"libpymath.progress.progress.Progress":{generateBar:[3,2,1,""],reset:[3,2,1,""],update:[3,2,1,""]},"libpymath.src":{error:[5,0,0,"-"],matrix:[6,0,0,"-"]},libpymath:{matrix:[2,0,0,"-"],progress:[3,0,0,"-"],src:[4,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method"},terms:{"1000x1000":[],"1xc":[],"2x3":[],"3x5":[],"case":[],"class":[2,3],"default":2,"function":2,"import":0,"long":0,"new":2,"return":2,"static":3,"while":0,AND:[1,2],BUT:[1,2],FOR:[1,2],For:0,NOT:[1,2],THE:[1,2],The:[1,2],USE:[1,2],Use:[],WITH:[1,2],With:0,_max:2,_min:2,abl:[],abov:[1,2],accept:2,access:0,action:[1,2],add:0,added:[],adjust:2,align:[],all:[0,1,2],allow:0,also:[],ani:[0,1,2],anoth:[0,2],appear:[],appli:2,arg:2,aris:[1,2],ascend:2,associ:[1,2],assum:[],author:[1,2],background:[],bar:0,base:[2,3],being:[],below:0,between:2,both:[],bug:0,built:0,calcul:2,can:0,certain:[],chang:0,charg:[1,2],choic:0,claim:[1,2],cli:0,clone:0,code:0,col:2,colstrid:[],column:2,com:0,combin:[],command:0,commerci:0,common:[],commonli:0,compil:0,complex:0,comput:2,concatent:[],condit:[1,2],connect:[1,2],contain:[],content:7,contract:[1,2],convert:2,copi:[1,2],copyright:[0,1,2],cover:0,creat:0,d_leaky_relu:2,d_relu:2,d_sigmoid:2,d_tanh:2,damag:[1,2],data:[],datatyp:2,davi:[1,2],deal:[1,2],decim:[],descend:2,detect:[],differ:[],dimension:[],directori:0,distribut:[1,2],document:[1,2],doe:[],doing:[],done:[],dot:2,dtype:2,easi:[],easier:0,easiest:[],easili:0,edit:0,effect:[],effici:0,element:2,emptychar:3,end:3,environ:0,eras:3,error:[1,4],even:[],event:[1,2],everi:2,exact:2,exampl:[],exist:0,expand:[],experienc:0,explicitli:[],express:[1,2],extrem:[],fals:3,fast:0,faster:[],featur:0,few:0,file:[0,1,2],fill:[2,3],fillascend:2,fillchar:3,filldescend:2,fillrandom:2,fillscalar:2,filltyp:2,find:0,first:0,fit:[1,2],fix:0,float64:[],follow:[1,2],form:2,format:[],frang:3,free:[1,2],from:[0,1,2],furnish:[1,2],gener:0,generatebar:3,git:0,github:0,give:[],given:2,grant:[1,2],have:[],here:[],herebi:[1,2],holder:[1,2],hopefulli:0,how:0,howev:0,http:0,idl:0,impli:[1,2],improv:[],includ:[1,2],index:[],inerfac:0,inform:0,inplac:2,interfac:[],internal_new:[],intuit:0,issu:[],iter:3,its:[],kind:[1,2],kwarg:2,lastest:0,lead:[],leaky_relu:2,length:3,liabil:[1,2],liabl:[1,2],librari:0,licens:0,like:0,limit:[1,2],line:0,list:2,look:[],lpm:0,lucklili:[],made:0,mai:[],maintain:0,major:[],make:[],mani:[],map:2,maptyp:2,math:0,mathemat:0,matric:0,matrix:[0,1,4,7],max:[],mean:2,merchant:[1,2],merg:[1,2],messag:3,method:2,min:[],mit:0,mitig:[],modifi:[1,2],modul:[0,7],more:0,multipl:[],must:0,mymatrix:[],nan:[],nearli:[],neatli:[],need:0,network:0,neural:0,non:[],none:[0,2,3],noninfring:[1,2],note:[],notic:[0,1,2],number:2,object:[2,3],obtain:[1,2],onli:0,onto:[],open:0,oper:0,optim:[],option:0,other:[1,2],otherwis:[1,2],out:[1,2],output:[],over:[],packag:7,page:0,paramet:2,particular:[1,2],pencilcaseman:0,permiss:[1,2],permit:[1,2],person:[1,2],piec:0,pip:0,point:[],portion:[1,2],potenti:0,power:0,print:[],privat:0,process:[],product:2,progress:[0,1,7],project:0,properti:2,provid:[0,1,2],publish:[1,2],purpos:[0,1,2],python:[0,2],random:2,rang:2,rapidli:[],readabl:[],reason:[],relu:2,repositori:0,reset:3,reshap:2,restrict:[1,2],result:2,retain:0,right:[1,2],routin:0,row:2,rowstrid:[],ruin:[],run:0,scalar:2,screen:[],search:0,second:0,section:[],see:[0,2],seen:[],sell:[1,2],shall:[1,2],shape:2,shorter:0,sigmoid:2,simpl:0,simpli:0,singl:2,size:[],smooth:3,softwar:[1,2],some:2,sourc:0,specifi:[],src:[1,7],start:[0,2,3],step:3,store:[],subject:[1,2],sublicens:[1,2],submodul:[0,1,7],subpackag:7,substanti:[1,2],sum:2,system:0,take:0,tanh:2,test:[],text:[],thi:[0,1,2],though:[],thread:2,through:[],time:[],tobi:[1,2],tolist:2,top:0,tort:[1,2],transpos:2,type:[0,2],under:0,understand:[],updat:3,upgrad:0,use:[0,1,2],used:0,useful:[],user:0,using:[0,2],valid:2,valu:2,version:0,visualis:[],wai:[],warranti:[1,2],well:[],wheel:0,when:2,where:[],whether:[1,2],which:0,whom:[1,2],without:[1,2],won:0,work:0,would:0,wrap:[],write:0,you:0,your:0,zero:[]},titles:["Libpymath Documentation","libpymath package","libpymath.matrix package","libpymath.progress package","libpymath.src package","libpymath.src.error package","libpymath.src.matrix package","libpymath"],titleterms:{"import":[],The:0,Using:0,aim:0,content:[0,1,2,3,4,5,6],creat:[],document:0,error:5,indic:0,instal:0,libpymath:[0,1,2,3,4,5,6,7],licenc:0,matrix:[2,6],modul:[1,2,3,4,5,6],packag:[0,1,2,3,4,5,6],print:[],progress:3,src:[4,5,6],submodul:[2,3],subpackag:[1,4],tabl:0}}) \ No newline at end of file diff --git a/docs/build/latex/libpymath.tex b/docs/build/latex/libpymath.tex index 34bea82..9a0fef7 100644 --- a/docs/build/latex/libpymath.tex +++ b/docs/build/latex/libpymath.tex @@ -73,8 +73,8 @@ \title{libpymath} -\date{Oct 17, 2020} -\release{0.5.0} +\date{Oct 19, 2020} +\release{0.6.0} \author{Toby Davis} \newcommand{\sphinxlogo}{\vbox{}} \renewcommand{\releasename}{Release} @@ -313,13 +313,13 @@ \subsubsection{Subpackages} Valid functions are: SIGMOID TANH -ReLU -LEAKY\_ReLU +RELU +LEAKY\_RELU D\_SIGMOID D\_TANH -D\_ReLU -D\_LEAKY\_ReLU +D\_RELU +D\_LEAKY\_RELU \begin{quote}\begin{description} \item[{Parameters}] \leavevmode \sphinxstyleliteralstrong{\sphinxupquote{mapType}} \textendash{} Function to map with @@ -347,6 +347,12 @@ \subsubsection{Subpackages} \end{fulllineitems} +\index{mean() (libpymath.matrix.matrix.Matrix method)@\spxentry{mean()}\spxextra{libpymath.matrix.matrix.Matrix method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{libpymath.matrix:libpymath.matrix.matrix.Matrix.mean}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{mean}}}{}{} +\end{fulllineitems} + \index{reshape() (libpymath.matrix.matrix.Matrix method)@\spxentry{reshape()}\spxextra{libpymath.matrix.matrix.Matrix method}} \begin{fulllineitems} @@ -417,6 +423,12 @@ \subsubsection{Subpackages} \end{fulllineitems} +\index{sum() (libpymath.matrix.matrix.Matrix method)@\spxentry{sum()}\spxextra{libpymath.matrix.matrix.Matrix method}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{libpymath.matrix:libpymath.matrix.matrix.Matrix.sum}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{sum}}}{}{} +\end{fulllineitems} + \index{threads() (libpymath.matrix.matrix.Matrix property)@\spxentry{threads()}\spxextra{libpymath.matrix.matrix.Matrix property}} \begin{fulllineitems} diff --git a/docs/source/conf.py b/docs/source/conf.py index 89012c5..6fac4d0 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -24,7 +24,7 @@ author = 'Toby Davis' # The full version, including alpha/beta/rc tags -release = '0.5.0' +release = '0.6.0' # Set the master file master_doc = 'index' diff --git a/examples/simple-neural-network/__pycache__/network.cpython-38.pyc b/examples/simple-neural-network/__pycache__/network.cpython-38.pyc deleted file mode 100644 index 2825b045eb38079bb370ce9375f0dd51dfd2edc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2197 zcmZ`)OK%%D5GJ`#J?yG^IF_5ff}ns3)W|JpYq$a8B8R4KkOxo*G8SubqpZBzU6bo1 zc2}q5*aGc8kS_&t=?}>d=z+JQC;x?B+HZEP*l}D6JLC*GL-OOyr$-A5O@@|!{d17{ zjQvf@>1IK>g-@?QNG5s0`uq-)LRv4Gv|fn5ko*Db*+-aXn?sVPn}Bi)pS}(e!B;Z! zkm4olThfv?dRscuMej%tk$mHAM#ZyC?F>15=8X=51G4Y%=|3S#E_s)gEWlw(zT>JD zSVWhlD|Og{7ouci_JT`i8FB+3R$C+Tu`7vfE6<1Ubm1wahdK9M&n-EnSoX{-{BdK} zq`0M!&J{){pmCQSibKvxbIx0J$d6}j>37+zb;#hG;R{^M@pMkI4t6) zVG(DkehUi%mGF2#SX_dj+ibO`ykKKK7QcyI`vH5!dX}-0d}7>5Sg829vG0F-_t7h1 z#Oe*h1LeT668~)7{%Y_@W6MDvrNemeLmF+U_-QoQi1bd8<%7HN_Pzb@!{W)QQS>~V zPg06bI!EwKu@0;dY66<1^P4ab*PHaQCOt6FN#}B<41aTS{L9n`( zWWzAg>ln;kjwlO^NYv=3OMl$?>)_=#NB^Sr+NPOiGP<4ZrG++*3e!=9`$nmv_=@l` z?sgpNNSk&Ng({8H(fzQ9j2q^-r&KPjqZ1hycO!(FkK-h{AEq*!06beq$z$X0JPXxG z8y=q^rrPA?&yP(=R`0-gldlSwyJAT!@z3~2Vv!$o&faoJ?>BFBSn|J(PyYx}zaeG! zFMMoGMPU~XvdTpsi#m_DZcHs$ywXDUi4H?kG*1A3Em%DUZar9fs`o3FUB zWmtr25&QI7Cjh7`Fc|(&T|locl6ap4fv70Kj5P`K3fP{lx@7%`tln@>sVFVf2V{Da zP&GWQ$C(0j@?NO*Wz1^=jqwhUS;X&xIJh`R=G4j|?KyAc@dliyNQ5)sSjRdTr2-3O zJ#}hsIt80OFaN1qS~KsEO}%$#x7Mei2Y^VV;sI2z1R0DQqytoFRoS;luS(gOwP8cF z3gUigmyUG0Y?+nrn+J23*%~{w7j$r)^TOI-TfbvJhoa3Euum0Ndh3Wb^-I45F?HFO ztQxcNVm0E@-?4w?YKi)|TtGK_E)iE6PNE<%%^;X$axbBAI|z37!la&2SFxkI zM&ff4C$(LTs4x|QPq=9!QlI-BzggKposA^k&iC=Z^Q3+eT6$g#> ")) print("Before training") for t in train: - print(bool(t[0]), "^", bool(t[1]), "=", x.forwardPass(t[:-1])[0, 0] > 0) + print(bool(t[0]), "^", bool(t[1]), "=", x.forwardPass(t[:-1])[0, 0] > 0.5) loss = [] acc = [] @@ -31,16 +31,18 @@ a = 0 for t in train: l += (x.forwardPass(t[:-1])[0, 0] - t[-1]) - a += (abs(int(x.forwardPass(t[:-1])[0, 0] > 0.25) - t[-1])) + a += (abs(int(x.forwardPass(t[:-1])[0, 0] > 0.5) - t[-1])) loss.append((l / 4) ** 2) acc.append((1 - a / 4) * 100) print("After training") for t in train: - print(bool(t[0]), "^", bool(t[1]), "=", x.forwardPass(t[:-1])[0, 0] > 0) + print(bool(t[0]), "^", bool(t[1]), "=", x.forwardPass(t[:-1])[0, 0] > 0.5) # Plot the loss and the accuracy fig, axs = plt.subplots(2, 1, constrained_layout=True) +fig.canvas.set_window_title("Simple XOR Neural Network") + axs[0].plot([i for i in range(epochs)], loss) axs[0].set_title("Loss vs Epoch") axs[0].set_xlabel("Epoch") diff --git a/examples/ultra-simple-neural-network/main.py b/examples/ultra-simple-neural-network/main.py new file mode 100644 index 0000000..87a48c7 --- /dev/null +++ b/examples/ultra-simple-neural-network/main.py @@ -0,0 +1,31 @@ +from libpymath.network import Network, TANH, SIGMOID, RELU, LEAKY_RELU + +# Training data +data = [ + [0, 0, 0], + [0, 1, 1], + [1, 0, 1], + [1, 1, 0] +] + +# Number of training iterations to complete +epochs = int(input("Number of training iterations >> ")) + +# Create the network with two inputs, one hidden layer of three +# neurons and one output, a learning rate of 0.2 and the sigmoid +# activation for all layers +x = Network(layers=(2, 3, 1), lr=0.2, activations=[SIGMOID] * 3) + +# Record the loss of the network every 10 training iterations +x.log("loss", 10) + +# Fit the network to the data and show a progress bar +x.fit(data, epochs=epochs, progress=1) + +# Print the network's output for all of the input data +print("Result of network after training:") +for val in data: + print(bool(val[0]), "^", bool(val[1]), "=", x.feedForward(val[:2])[0, 0] > 0.5) + +# Plot a graph of the network's loss +x.plotMetric("loss") diff --git a/libpymath.egg-info/PKG-INFO b/libpymath.egg-info/PKG-INFO index 9b7ca48..1bc7eaf 100644 --- a/libpymath.egg-info/PKG-INFO +++ b/libpymath.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: libpymath -Version: 0.5.7 +Version: 0.6.0 Summary: A general purpose Python math module Home-page: https://www.github.com/pencilcaseman/libpymath Author: Toby Davis @@ -23,23 +23,14 @@ Description: [![Build Status](https://travis-ci.com/Pencilcaseman/LibPyMath.svg? --- ## Features and usage - ### Matrix math + ### Matrix Math Easily create, manipulate and perform calculations with dense matrices. The matrices themselves are stored and manipulated with optimised C code, resulting in faster operations and more efficient calculations. To further increase the speed of the calculations, when libpymath imported into a project for the first time, it runs some tests on the CPU to find the optimal number of threads to use for the matrix calculations. - The matrix library contains many features, such as: - 1. Elementwise addition, subtraction, multiplication and division with another matrix - 2. Addition, subtraction, multiplication and division by a scalar - 3. Matrix transpose, - 4. Matrix product, - 5. Filling a matrix with ascending values, descending values, random values or a single value - 6. Getting or setting values - 7. Creating a matrix from data - 8. Mapping with sigmoid, tanh, ReLU and leaky ReLU, as well as their derivatives - 9. Getting the matrix as a Python list - 10. Supports pickling with the standard library ```pickle``` module - 11. Formatting and printing a matrix + ### Progress Bars + Wrap a progress bar around any Python iterator and have a progress bar generated automatically. The progress bar will adjust its width to the width of the console, shows the current percentage, time and time remaining, as well as the number of iterations per second the bar is running at. The rate at which the bar updates also adjusts dynamically, ensuring that it has a minimal impact on the speed of the loop, while updating frequently enough to provide relevant information. - \* Due to Clang on Mac OS the wheels do not support OpenMP, meaning some matrix operations may be slower than on other operating systems. + ### Neural Networks + Create, train and evaluate a neural network in only a few lines of code, customising the size of the network, its learning rate, it's activation functions (which can be customised on a per-layer basis) and the metrics which it logs. The network library also uses the efficient Matrix library, meaning it can train a simple network in under a second. You can also plot a graph of any metrics that are being logged, making it easy to evaluate the progress of the network. Keywords: math,matrix,vector,network,neural network,libpymath,pymath,libmath,progress bar,progress Platform: UNKNOWN diff --git a/libpymath.egg-info/SOURCES.txt b/libpymath.egg-info/SOURCES.txt index c2fd305..f492db7 100644 --- a/libpymath.egg-info/SOURCES.txt +++ b/libpymath.egg-info/SOURCES.txt @@ -16,6 +16,8 @@ libpymath/matrix/matrix.py libpymath/matrix/__pycache__/__init__.cpython-38.pyc libpymath/matrix/__pycache__/_threadSetup.cpython-38.pyc libpymath/matrix/__pycache__/matrix.cpython-38.pyc +libpymath/network/__init__.py +libpymath/network/network.py libpymath/progress/__init__.py libpymath/progress/progress.py libpymath/src/__init__.py diff --git a/libpymath/__init__.py b/libpymath/__init__.py index 44f1e32..2348761 100644 --- a/libpymath/__init__.py +++ b/libpymath/__init__.py @@ -19,6 +19,5 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ -from . import matrix -from . import progress +from . import matrix, progress, network import libpymath.error diff --git a/libpymath/matrix/matrix.py b/libpymath/matrix/matrix.py index dc5ad27..5240da1 100644 --- a/libpymath/matrix/matrix.py +++ b/libpymath/matrix/matrix.py @@ -346,6 +346,12 @@ def __matmul__(self, other): return self.dot(other) + def sum(self): + return self.matrix.matrixSum() + + def mean(self): + return self.matrix.matrixMean() + def __add__(self, other): """ Add a matrix to another matrix elementwise, or add a scalar to every value diff --git a/libpymath/network/__init__.py b/libpymath/network/__init__.py new file mode 100644 index 0000000..6cf34ce --- /dev/null +++ b/libpymath/network/__init__.py @@ -0,0 +1 @@ +from .network import * diff --git a/libpymath/network/network.py b/libpymath/network/network.py new file mode 100644 index 0000000..d362c9f --- /dev/null +++ b/libpymath/network/network.py @@ -0,0 +1,254 @@ +import libpymath as lpm +import random + + +# Matrix map options (shift 5 left for corresponding derivative) +SIGMOID = 1 << 5 +TANH = 1 << 6 +RELU = 1 << 7 +LEAKY_RELU = 1 << 8 + +# Matrix map derivative options (shift 5 right for corresponding activation) +D_SIGMOID = 1 << 10 +D_TANH = 1 << 11 +D_RELU = 1 << 12 +D_LEAKY_RELU = 1 << 13 + + +class Network: + def __init__(self, **kwargs): + if "layers" in kwargs: + if isinstance(kwargs["layers"], (list, tuple)): + self._nodeCounts = kwargs["layers"] + + # Check everything is an integer + for n in self._nodeCounts: + if not isinstance(n, int): + raise TypeError("\"layers\" must be a list or tuple of integers. Found {}", type(n)) + else: + raise TypeError("\"layers\" must be defined as a list or tuple of integers") + else: + raise TypeError("Missing required argument \"layers\"") + + self._activations = kwargs["activations"] if "activations" in kwargs else [lpm.matrix.RELU for _ in range(len(self._nodeCounts) - 1)] + + # Check activations + for a in self._activations: + if a not in [SIGMOID, TANH, RELU, LEAKY_RELU, lpm.matrix.SIGMOID, lpm.matrix.TANH, lpm.matrix.RELU, lpm.matrix.LEAKY_RELU]: + raise NotImplementedError("The activation function {} is not implemented. If you would like this to be added please raise an issue on GitHub: https://github.com/Pencilcaseman/LibPyMath/issues".format(a)) + + self._layers = [] + self._biases = [] + + if "lr" in kwargs: + if isinstance(kwargs["lr"], (int, float)): + self._learningRate = float(kwargs["lr"]) + else: + raise TypeError("\"lr\" must be an int or a float") + else: + self._learningRate = 0.025 + + for i in range(len(self._nodeCounts) - 1): + self._layers.append(lpm.matrix.Matrix(self._nodeCounts[i + 1], self._nodeCounts[i])) + self._biases.append(lpm.matrix.Matrix(self._nodeCounts[i + 1])) + + self._layers[-1].fillRandom() + self._biases[-1].fillRandom() + + self._metrics = { + "loss": [[], False] + } + + self._metricMod = { + "loss": 1 + } + + self.backpropagateIndex = 0 + + @property + def layers(self): + return self._layers.copy() + + @property + def biases(self): + return self._biases.copy() + + @property + def learningRate(self): + return self._learningRate + + @property + def shape(self): + return self._nodeCounts.copy() + + def parseData(self, dataIn, dataOut=None): + res = [] + + if isinstance(dataIn[0], (list, tuple)): + # Check for a single list containing input + output + if dataOut is None: + for element in dataIn: + if len(element) == self._nodeCounts[0] + self._nodeCounts[-1]: + # Contains input and output data in a single list + res.append((self.__parseData(element[:self._nodeCounts[0]]), self.__parseData(element[self._nodeCounts[0]:], -1))) + else: + raise ValueError("Invalid input data. Expected input data of length {} but got length {}".format(self._nodeCounts[0] + self._nodeCounts[-1], len(element))) + else: + if len(dataIn) != len(dataOut): + raise ValueError("Input and output data lengths must be equal") + + for a, b in zip(dataIn, dataOut): + res.append((self.__parseData(a), self.__parseData(b, -1))) + else: + raise NotImplementedError("Cannot yet parse 1 dimensional training data") + + return res + + def __parseData(self, data, layer=0): + # Check that data is valid and return a valid matrix if possible, else raise an error + if isinstance(data, (int, float)): + if self._nodeCounts[0] == 1: + # Single bit of data so create [[x]] + return lpm.matrix.Matrix(data=[[data]]).T + else: + raise ValueError("Only one value was passed, though input requires {}".format(self._nodeCounts[0])) + elif isinstance(data, (lpm.matrix.Matrix, list, tuple)): + # Check if data will fit currently + if isinstance(data, lpm.matrix.Matrix): + tmp = data + else: + tmp = lpm.matrix.Matrix(data=data) + + if tmp.rows == self._nodeCounts[layer] and tmp.cols == 1: + return tmp + elif tmp.cols == self._nodeCounts[layer] and tmp.rows == 1: + return tmp.T + else: + if tmp.rows == 1: + val = tmp.cols + elif tmp.cols == 1: + val = tmp.rows + else: + val = None + + raise ValueError("Inputted data is invalid for network of this size. Input requires {} values, received {}".format(self._nodeCounts[0], val if val is not None else "{}x{}".format(tmp.rows, tmp.cols))) + else: + raise TypeError("Invalid type for neural network. Requires list, tuple{}".format(", int or float" if self._nodeCounts[0] == 1 else "")) + + def feedForward(self, data, **kwargs): + # For improved speed when one is sure that the data is correct + if "noCheck" in kwargs: + current = data.copy() + else: + current = self.__parseData(data) + + for i in range(len(self._nodeCounts) - 1): + current = self._layers[i] @ current + current += self._biases[i] + current.map(self._activations[i]) + + return current + + def backpropagate(self, inputData, targetData, **kwargs): + # For improved speed when one is sure that the data is correct + if "noCheck" in kwargs: + inputs = inputData.copy() + targets = targetData.copy() + else: + inputs = self.__parseData(inputData) + targets = self.__parseData(targetData, layer=-1) + + layerData = [] + errors = [None for _ in range(len(self._nodeCounts) - 1)] + + current = inputs.copy() + for i in range(len(self._nodeCounts) - 1): + current = self._layers[i] @ current + current += self._biases[i] + current.map(self._activations[i]) + + layerData.append(current.copy()) + + errors[-1] = targets - layerData[-1] + + if self._metrics["loss"][1] and self.backpropagateIndex % self._metricMod["loss"] == 0: + self._metrics["loss"][0].append(errors[-1].mean() ** 2) + + self.backpropagateIndex += 1 + + for i in range(len(self._nodeCounts) - 2, -1, -1): + gradient = layerData[i].mapped(self._activations[i] << 5) + gradient *= errors[i] + gradient *= self._learningRate + + if i > 0: + transposed = layerData[i - 1].T + else: + transposed = inputs.T + + weight_deltas = gradient @ transposed + + self._layers[i] += weight_deltas + self._biases[i] += gradient + + if i > 0: + layerT = self._layers[i].T + errors[i - 1] = layerT @ errors[i] + + def log(self, metric, mod=1): + if metric == "loss" and self._metrics["loss"] != [None]: + self._metrics["loss"][1] = True + self._metricMod["loss"] = mod + + def metrics(self, metric): + if metric not in self._metrics: + raise KeyError("Metric {} does not exist".format(metric)) + if not self._metrics[metric][1]: + raise KeyError("Metric {} is not being logged".format(metric)) + + return self._metrics[metric][0] + + def plotMetric(self, metric): + if metric not in self._metrics: + raise KeyError("Metric {} does not exist".format(metric)) + if not self._metrics[metric][1]: + raise KeyError("Metric {} is not being logged".format(metric)) + + x = [i * self._metricMod[metric] for i in range(len(self.metrics(metric)))] + y = self._metrics[metric][0] + + try: + import matplotlib.pyplot as plt + + fig, axs = plt.figure(), plt.axes() + fig.canvas.set_window_title("Libpymath Network {}".format(metric.title())) + + axs.plot(x, y) + axs.set_title("{} vs Epoch".format(metric.title())) + axs.set_xlabel("Epoch") + axs.set_ylabel("{}".format(metric.title())) + + plt.show() + except ImportError: + raise ModuleNotFoundError("The module matplotlib.pyplot was not found, please install this via pip") + + def metricData(self, metric): + if metric not in self._metrics: + raise KeyError("Metric {} does not exist".format(metric)) + if not self._metrics[metric][1]: + raise KeyError("Metric {} is not being logged".format(metric)) + + return [i * self._metricMod[metric] for i in range(len(self.metrics(metric)))], self._metrics[metric][0] + + def fit(self, inputData, targetData=None, epochs=500, **kwargs): + data = self.parseData(inputData, targetData) + samples = len(data) + + if "progress" in kwargs and kwargs["progress"] not in [0, False]: + iterator = lpm.progress.Progress(range(epochs)) + else: + iterator = range(epochs) + + for _ in iterator: + pos = random.randint(0, samples - 1) + self.backpropagate(data[pos][0], data[pos][1], noCheck=True) diff --git a/libpymath/src/matrix/doubleRoutines.h b/libpymath/src/matrix/doubleRoutines.h index 61f4c0d..75db499 100644 --- a/libpymath/src/matrix/doubleRoutines.h +++ b/libpymath/src/matrix/doubleRoutines.h @@ -3,6 +3,89 @@ #include + +double doubleMatrixSum(double *a, long int rows, long long cols, long int rowStrideA, long int colStrideA, int threads) { + double res = 0; + + if (rows * cols < 90000) { + long long i, j; + for (i = 0; i < rows; i++) { + for (j = 0; j < cols - 3; j += 4) { + res += a[internalGet(i, j, rowStrideA, colStrideA)]; + res += a[internalGet(i, j, rowStrideA, colStrideA) + 1]; + res += a[internalGet(i, j, rowStrideA, colStrideA) + 2]; + res += a[internalGet(i, j, rowStrideA, colStrideA) + 3]; + } + + for (; j < cols; j++) { + res += a[internalGet(i, j, rowStrideA, colStrideA)]; + } + } + } else { + long long i, j; +# ifdef _OPENMP + omp_set_num_threads(threads); +# endif + +# pragma omp parallel for private(i, j) shared(a, b, c, rows, cols, rowStrideA, colStrideA, rowStrideB, colStrideB) default(none) + for (i = 0; i < rows; i++) { + for (j = 0; j < cols - 3; j += 4) { + res += a[internalGet(i, j, rowStrideA, colStrideA)]; + res += a[internalGet(i, j, rowStrideA, colStrideA) + 1]; + res += a[internalGet(i, j, rowStrideA, colStrideA) + 2]; + res += a[internalGet(i, j, rowStrideA, colStrideA) + 3]; + } + + for (; j < cols; j++) { + res += a[internalGet(i, j, rowStrideA, colStrideA)]; + } + } + } + + return res; +} + +double doubleMatrixMean(double *a, long int rows, long long cols, long int rowStrideA, long int colStrideA, int threads) { + double res = 0; + + if (rows * cols < 90000) { + long long i, j; + for (i = 0; i < rows; i++) { + for (j = 0; j < cols - 3; j += 4) { + res += a[internalGet(i, j, rowStrideA, colStrideA)]; + res += a[internalGet(i, j, rowStrideA, colStrideA) + 1]; + res += a[internalGet(i, j, rowStrideA, colStrideA) + 2]; + res += a[internalGet(i, j, rowStrideA, colStrideA) + 3]; + } + + for (; j < cols; j++) { + res += a[internalGet(i, j, rowStrideA, colStrideA)]; + } + } + } else { + long long i, j; +# ifdef _OPENMP + omp_set_num_threads(threads); +# endif + +# pragma omp parallel for private(i, j) shared(a, b, c, rows, cols, rowStrideA, colStrideA, rowStrideB, colStrideB) default(none) + for (i = 0; i < rows; i++) { + for (j = 0; j < cols - 3; j += 4) { + res += a[internalGet(i, j, rowStrideA, colStrideA)]; + res += a[internalGet(i, j, rowStrideA, colStrideA) + 1]; + res += a[internalGet(i, j, rowStrideA, colStrideA) + 2]; + res += a[internalGet(i, j, rowStrideA, colStrideA) + 3]; + } + + for (; j < cols; j++) { + res += a[internalGet(i, j, rowStrideA, colStrideA)]; + } + } + } + + return res / (double) (rows * cols); +} + void doubleMatrixAddMatrix(double *a, double *b, double *c, long int rows, long long cols, long int rowStrideA, long int colStrideA, long int rowStrideB, long int colStrideB, int threads) { if (rows * cols < 90000) { long long i, j; diff --git a/libpymath/src/matrix/matrix.c b/libpymath/src/matrix/matrix.c index 6bf12d0..a981b6f 100644 --- a/libpymath/src/matrix/matrix.c +++ b/libpymath/src/matrix/matrix.c @@ -207,6 +207,26 @@ static PyObject *matrixGetColStride(MatrixCoreObject *self, void *closure) { return PyLong_FromLong(self->colStride); } +static PyObject *matrixSum(MatrixCoreObject *self, PyObject *args) { + int threads = 1; + + if (!PyArg_ParseTuple(args, "|i", &threads)) { + return NULL; + } + + return Py_BuildValue("d", doubleMatrixSum(self->data, self->rows, self->cols, self->rowStride, self->colStride, threads)); +} + +static PyObject *matrixMean(MatrixCoreObject *self, PyObject *args) { + int threads = 1; + + if (!PyArg_ParseTuple(args, "|i", &threads)) { + return NULL; + } + + return Py_BuildValue("d", doubleMatrixMean(self->data, self->rows, self->cols, self->rowStride, self->colStride, threads)); +} + static PyObject *matrixTransposeReturn(MatrixCoreObject *self) { double *res = allocateMemory(self->rows * self->cols); long rows, cols, i, j, rs, cs; @@ -691,7 +711,9 @@ static PyMethodDef matrixMethods[] = { {"matrixMapRELUDerivative", (PyCFunction) matrixMapRELUDerivative, METH_VARARGS, "Apply the RELU derivative function to every element in a matrix"}, {"matrixMapLeakyRELUDerivative", (PyCFunction) matrixMapLeakyRELUDerivative, METH_VARARGS, "Apply the derivative of the leaky variant of the RELU function to every element in a matrix"}, {"matrixToList", (PyCFunction) matrixToList, METH_NOARGS, "Return the matrix represented as a 2D python list"}, - {"matrixReshape", (PyCFunction) matrixReshape, METH_VARARGS, "Resize the matrix"}, + {"matrixReshape", (PyCFunction) matrixReshape, METH_VARARGS, "Resize the matrix"}, + {"matrixSum", (PyCFunction) matrixSum, METH_VARARGS, "Calculate the sum of all values in the matrix"}, + {"matrixMean", (PyCFunction) matrixMean, METH_VARARGS, "Calculate the mean of all values in the matrix"}, {NULL} }; diff --git a/setup.py b/setup.py index 2b517d2..b40acbc 100644 --- a/setup.py +++ b/setup.py @@ -207,7 +207,7 @@ def Wall(): setup( name="libpymath", - version="0.5.7", + version="0.6.0", description="A general purpose Python math module", long_description=long_description, long_description_content_type='text/markdown',