From 1995df58ce15f93ff2d949ebba442b4a9d11a833 Mon Sep 17 00:00:00 2001 From: Murtadha Date: Thu, 26 Sep 2024 17:23:23 -0400 Subject: [PATCH] Initial commit --- Bel_NN_C.ipynb | 1000 +++++++++++++++++++++++++ Cro_NN_C.ipynb | 992 +++++++++++++++++++++++++ German_NN_C.ipynb | 1098 ++++++++++++++++++++++++++++ NoNeed/Bel_Data_Loader.ipynb | 152 ++++ NoNeed/Cro_Data_Loader.ipynb | 152 ++++ NoNeed/Germna_Data_Loader.ipynb | 382 ++++++++++ bel_semantics.ipynb | 185 +++++ enc_dec.ipynb | 203 +++++ encoder.ipynb | 423 +++++++++++ eval.ipynb | 826 +++++++++++++++++++++ net/activation.py | 59 ++ net/loss.py | 65 ++ net/mlp.py | 169 +++++ net/modules.py | 77 ++ net/optimizer.py | 14 + net/transcoder.py | 109 +++ results/bel_all_accuracies.csv | 401 ++++++++++ results/bt_1h128n_ReLU_results.csv | 401 ++++++++++ weights/bel_weights.npz | Bin 0 -> 88334 bytes weights/bt_1h128n_ReLU_weights.npz | Bin 0 -> 88358 bytes weights/bt_weights.npz | Bin 0 -> 88358 bytes 21 files changed, 6708 insertions(+) create mode 100644 Bel_NN_C.ipynb create mode 100644 Cro_NN_C.ipynb create mode 100644 German_NN_C.ipynb create mode 100644 NoNeed/Bel_Data_Loader.ipynb create mode 100644 NoNeed/Cro_Data_Loader.ipynb create mode 100644 NoNeed/Germna_Data_Loader.ipynb create mode 100644 bel_semantics.ipynb create mode 100644 enc_dec.ipynb create mode 100644 encoder.ipynb create mode 100644 eval.ipynb create mode 100644 net/activation.py create mode 100644 net/loss.py create mode 100644 net/mlp.py create mode 100644 net/modules.py create mode 100644 net/optimizer.py create mode 100644 net/transcoder.py create mode 100644 results/bel_all_accuracies.csv create mode 100644 results/bt_1h128n_ReLU_results.csv create mode 100644 weights/bel_weights.npz create mode 100644 weights/bt_1h128n_ReLU_weights.npz create mode 100644 weights/bt_weights.npz diff --git a/Bel_NN_C.ipynb b/Bel_NN_C.ipynb new file mode 100644 index 0000000..00b12a4 --- /dev/null +++ b/Bel_NN_C.ipynb @@ -0,0 +1,1000 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c4460aee-ec58-454e-9304-82deb89942b4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd \n", + "from matplotlib import pyplot as plt \n", + "\n", + "data = pd.read_csv('data/bel_data_test.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f1ec44a2-7bb0-44a1-a417-69ab70e1b6f8", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "data = np.array(data)\n", + "\n", + "m,n = data.shape\n", + "data_train = data[1000:m].T\n", + "\n", + "Y_train = data_train[0].astype(int)\n", + "\n", + "X_train = data_train[1:n]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "9223239b-35b9-43bc-acf9-dac6a19587c5", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def init_params():\n", + " W1 = np.random.rand(10,1024) - 0.5\n", + " b1 = np.random.rand(10,1) - 0.5\n", + " W2 = np.random.rand(61,10) - 0.5\n", + " b2 = np.random.rand(61,1) - 0.5\n", + " return W1, b1 , W2, b2" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "610cd614-b3c9-445e-8f3d-491596bc773c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def ReLU(Z):\n", + " return np.maximum(Z,0)\n", + "\n", + "def softmax(Z):\n", + " A = np.exp(Z) / sum(np.exp(Z))\n", + " return A\n", + "\n", + "def forward_prop(W1, b1, W2, b2, X):\n", + " Z1 = W1.dot(X) + b1\n", + " A1 = ReLU(Z1)\n", + " Z2 = W2.dot(A1) + b2\n", + " A2 = softmax(Z2)\n", + " return Z1, A1, Z2, A2\n", + "\n", + "def ReLU_deriv(Z):\n", + " return Z > 0\n", + "\n", + "def one_hot(Y):\n", + " one_hot_Y = np.zeros((Y.size, Y.max() + 1))\n", + " one_hot_Y[np.arange(Y.size), Y] = 1\n", + " one_hot_Y = one_hot_Y.T\n", + " return one_hot_Y\n", + "\n", + "def backward_prop(Z1, A1, Z2, A2, W1, W2, X, Y):\n", + " one_hot_Y = one_hot(Y)\n", + " dZ2 = A2 - one_hot_Y\n", + " dW2 = 1 / m * dZ2.dot(A1.T)\n", + " db2 = 1 / m * np.sum(dZ2)\n", + " dZ1 = W2.T.dot(dZ2) * ReLU_deriv(Z1)\n", + " dW1 = 1 / m * dZ1.dot(X.T)\n", + " db1 = 1 / m * np.sum(dZ1)\n", + " return dW1, db1, dW2, db2\n", + "\n", + "def update_params(W1, b1, W2, b2, dW1, db1, dW2, db2, alpha):\n", + " W1 = W1 - alpha * dW1\n", + " b1 = b1 - alpha * db1 \n", + " W2 = W2 - alpha * dW2 \n", + " b2 = b2 - alpha * db2 \n", + " return W1, b1, W2, b2\n", + "\n", + "def get_predictions(A2):\n", + " return np.argmax(A2, 0)\n", + "\n", + "def get_accuracy(predictions, Y):\n", + " #print(predictions, Y)\n", + " return np.sum(predictions == Y) / Y.size" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "287c3525-e1a0-41c4-a1ae-9c24c805c7c5", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "acc_store = [] " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "539820c9-dc35-4f24-bbff-7860f7442c19", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def gradient_descent(X, Y, alpha, iterations):\n", + " W1, b1, W2, b2 = init_params()\n", + " for i in range(iterations):\n", + " Z1, A1, Z2, A2 = forward_prop(W1, b1, W2, b2, X)\n", + " dW1, db1, dW2, db2 = backward_prop(Z1, A1, Z2, A2, W1, W2, X, Y)\n", + " W1, b1, W2, b2 = update_params(W1, b1, W2, b2, dW1, db1, dW2, db2, alpha)\n", + " if i % 10 == 0:\n", + " print(\"Iteration: \", i)\n", + " predictions = get_predictions(A2)\n", + " pred = get_accuracy(predictions, Y)\n", + " print(pred)\n", + " acc_store.append(pred)\n", + " return W1, b1, W2, b2" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "06a5f975-472b-4b98-99e2-c1fff036ddc7", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Iteration: 0\n", + "0.014825174825174826\n", + "Iteration: 10\n", + "0.06657342657342658\n", + "Iteration: 20\n", + "0.12055944055944055\n", + "Iteration: 30\n", + "0.1476923076923077\n", + "Iteration: 40\n", + "0.16895104895104895\n", + "Iteration: 50\n", + "0.19552447552447552\n", + "Iteration: 60\n", + "0.20251748251748253\n", + "Iteration: 70\n", + "0.2095104895104895\n", + "Iteration: 80\n", + "0.21818181818181817\n", + "Iteration: 90\n", + "0.2274125874125874\n", + "Iteration: 100\n", + "0.23608391608391607\n", + "Iteration: 110\n", + "0.24503496503496502\n", + "Iteration: 120\n", + "0.26153846153846155\n", + "Iteration: 130\n", + "0.2732867132867133\n", + "Iteration: 140\n", + "0.28895104895104895\n", + "Iteration: 150\n", + "0.3026573426573427\n", + "Iteration: 160\n", + "0.3144055944055944\n", + "Iteration: 170\n", + "0.3225174825174825\n", + "Iteration: 180\n", + "0.33146853146853145\n", + "Iteration: 190\n", + "0.34965034965034963\n", + "Iteration: 200\n", + "0.3655944055944056\n", + "Iteration: 210\n", + "0.41426573426573426\n", + "Iteration: 220\n", + "0.4483916083916084\n", + "Iteration: 230\n", + "0.4662937062937063\n", + "Iteration: 240\n", + "0.47944055944055947\n", + "Iteration: 250\n", + "0.4967832167832168\n", + "Iteration: 260\n", + "0.5096503496503496\n", + "Iteration: 270\n", + "0.5216783216783217\n", + "Iteration: 280\n", + "0.5342657342657343\n", + "Iteration: 290\n", + "0.544055944055944\n", + "Iteration: 300\n", + "0.5546853146853147\n", + "Iteration: 310\n", + "0.5613986013986014\n", + "Iteration: 320\n", + "0.5667132867132867\n", + "Iteration: 330\n", + "0.5728671328671329\n", + "Iteration: 340\n", + "0.579020979020979\n", + "Iteration: 350\n", + "0.5865734265734266\n", + "Iteration: 360\n", + "0.593006993006993\n", + "Iteration: 370\n", + "0.6008391608391609\n", + "Iteration: 380\n", + "0.6044755244755244\n", + "Iteration: 390\n", + "0.6092307692307692\n", + "Iteration: 400\n", + "0.6156643356643356\n", + "Iteration: 410\n", + "0.6223776223776224\n", + "Iteration: 420\n", + "0.6310489510489511\n", + "Iteration: 430\n", + "0.6391608391608392\n", + "Iteration: 440\n", + "0.6486713286713287\n", + "Iteration: 450\n", + "0.6573426573426573\n", + "Iteration: 460\n", + "0.6618181818181819\n", + "Iteration: 470\n", + "0.6665734265734266\n", + "Iteration: 480\n", + "0.6707692307692308\n", + "Iteration: 490\n", + "0.6738461538461539\n", + "Iteration: 500\n", + "0.676923076923077\n", + "Iteration: 510\n", + "0.6836363636363636\n", + "Iteration: 520\n", + "0.6900699300699301\n", + "Iteration: 530\n", + "0.6942657342657342\n", + "Iteration: 540\n", + "0.6987412587412587\n", + "Iteration: 550\n", + "0.7026573426573427\n", + "Iteration: 560\n", + "0.7048951048951049\n", + "Iteration: 570\n", + "0.7090909090909091\n", + "Iteration: 580\n", + "0.7113286713286713\n", + "Iteration: 590\n", + "0.7163636363636363\n", + "Iteration: 600\n", + "0.7230769230769231\n", + "Iteration: 610\n", + "0.7264335664335664\n", + "Iteration: 620\n", + "0.7297902097902098\n", + "Iteration: 630\n", + "0.7337062937062937\n", + "Iteration: 640\n", + "0.7367832167832168\n", + "Iteration: 650\n", + "0.7412587412587412\n", + "Iteration: 660\n", + "0.7446153846153846\n", + "Iteration: 670\n", + "0.7468531468531469\n", + "Iteration: 680\n", + "0.7510489510489511\n", + "Iteration: 690\n", + "0.7546853146853146\n", + "Iteration: 700\n", + "0.7560839160839161\n", + "Iteration: 710\n", + "0.76\n", + "Iteration: 720\n", + "0.7622377622377622\n", + "Iteration: 730\n", + "0.7647552447552447\n", + "Iteration: 740\n", + "0.7664335664335664\n", + "Iteration: 750\n", + "0.7695104895104895\n", + "Iteration: 760\n", + "0.7711888111888112\n", + "Iteration: 770\n", + "0.7731468531468532\n", + "Iteration: 780\n", + "0.777062937062937\n", + "Iteration: 790\n", + "0.7784615384615384\n", + "Iteration: 800\n", + "0.7801398601398601\n", + "Iteration: 810\n", + "0.7812587412587413\n", + "Iteration: 820\n", + "0.784055944055944\n", + "Iteration: 830\n", + "0.7865734265734265\n", + "Iteration: 840\n", + "0.7885314685314685\n", + "Iteration: 850\n", + "0.7904895104895104\n", + "Iteration: 860\n", + "0.7927272727272727\n", + "Iteration: 870\n", + "0.796083916083916\n", + "Iteration: 880\n", + "0.7974825174825175\n", + "Iteration: 890\n", + "0.7986013986013986\n", + "Iteration: 900\n", + "0.7994405594405595\n", + "Iteration: 910\n", + "0.8008391608391608\n", + "Iteration: 920\n", + "0.8022377622377622\n", + "Iteration: 930\n", + "0.8036363636363636\n", + "Iteration: 940\n", + "0.8041958041958042\n", + "Iteration: 950\n", + "0.8055944055944056\n", + "Iteration: 960\n", + "0.8072727272727273\n", + "Iteration: 970\n", + "0.8095104895104895\n", + "Iteration: 980\n", + "0.8109090909090909\n", + "Iteration: 990\n", + "0.8131468531468532\n", + "Iteration: 1000\n", + "0.813986013986014\n", + "Iteration: 1010\n", + "0.8145454545454546\n", + "Iteration: 1020\n", + "0.8156643356643357\n", + "Iteration: 1030\n", + "0.8170629370629371\n", + "Iteration: 1040\n", + "0.8198601398601398\n", + "Iteration: 1050\n", + "0.8204195804195804\n", + "Iteration: 1060\n", + "0.8215384615384616\n", + "Iteration: 1070\n", + "0.8226573426573427\n", + "Iteration: 1080\n", + "0.8234965034965035\n", + "Iteration: 1090\n", + "0.8237762237762237\n", + "Iteration: 1100\n", + "0.8251748251748252\n", + "Iteration: 1110\n", + "0.8254545454545454\n", + "Iteration: 1120\n", + "0.8265734265734266\n", + "Iteration: 1130\n", + "0.8274125874125874\n", + "Iteration: 1140\n", + "0.8282517482517483\n", + "Iteration: 1150\n", + "0.8285314685314685\n", + "Iteration: 1160\n", + "0.8293706293706293\n", + "Iteration: 1170\n", + "0.8296503496503497\n", + "Iteration: 1180\n", + "0.8302097902097902\n", + "Iteration: 1190\n", + "0.831048951048951\n", + "Iteration: 1200\n", + "0.8318881118881118\n", + "Iteration: 1210\n", + "0.8327272727272728\n", + "Iteration: 1220\n", + "0.833006993006993\n", + "Iteration: 1230\n", + "0.8346853146853147\n", + "Iteration: 1240\n", + "0.8355244755244755\n", + "Iteration: 1250\n", + "0.8366433566433567\n", + "Iteration: 1260\n", + "0.8374825174825175\n", + "Iteration: 1270\n", + "0.838041958041958\n", + "Iteration: 1280\n", + "0.8397202797202797\n", + "Iteration: 1290\n", + "0.8411188811188811\n", + "Iteration: 1300\n", + "0.8416783216783217\n", + "Iteration: 1310\n", + "0.8436363636363636\n", + "Iteration: 1320\n", + "0.845034965034965\n", + "Iteration: 1330\n", + "0.8458741258741259\n", + "Iteration: 1340\n", + "0.8467132867132867\n", + "Iteration: 1350\n", + "0.8483916083916084\n", + "Iteration: 1360\n", + "0.848951048951049\n", + "Iteration: 1370\n", + "0.8497902097902098\n", + "Iteration: 1380\n", + "0.850909090909091\n", + "Iteration: 1390\n", + "0.8514685314685315\n", + "Iteration: 1400\n", + "0.852027972027972\n", + "Iteration: 1410\n", + "0.8528671328671329\n", + "Iteration: 1420\n", + "0.8531468531468531\n", + "Iteration: 1430\n", + "0.8537062937062937\n", + "Iteration: 1440\n", + "0.8542657342657343\n", + "Iteration: 1450\n", + "0.8553846153846154\n", + "Iteration: 1460\n", + "0.8565034965034966\n", + "Iteration: 1470\n", + "0.8573426573426574\n", + "Iteration: 1480\n", + "0.8576223776223776\n", + "Iteration: 1490\n", + "0.8587412587412587\n", + "Iteration: 1500\n", + "0.8593006993006993\n", + "Iteration: 1510\n", + "0.8601398601398601\n", + "Iteration: 1520\n", + "0.8618181818181818\n", + "Iteration: 1530\n", + "0.8623776223776224\n", + "Iteration: 1540\n", + "0.8632167832167832\n", + "Iteration: 1550\n", + "0.8646153846153846\n", + "Iteration: 1560\n", + "0.8654545454545455\n", + "Iteration: 1570\n", + "0.866013986013986\n", + "Iteration: 1580\n", + "0.8665734265734266\n", + "Iteration: 1590\n", + "0.8676923076923077\n", + "Iteration: 1600\n", + "0.8676923076923077\n", + "Iteration: 1610\n", + "0.8682517482517482\n", + "Iteration: 1620\n", + "0.8690909090909091\n", + "Iteration: 1630\n", + "0.8693706293706294\n", + "Iteration: 1640\n", + "0.8699300699300699\n", + "Iteration: 1650\n", + "0.8713286713286713\n", + "Iteration: 1660\n", + "0.8721678321678321\n", + "Iteration: 1670\n", + "0.8724475524475525\n", + "Iteration: 1680\n", + "0.8732867132867133\n", + "Iteration: 1690\n", + "0.8735664335664336\n", + "Iteration: 1700\n", + "0.8738461538461538\n", + "Iteration: 1710\n", + "0.8755244755244755\n", + "Iteration: 1720\n", + "0.8763636363636363\n", + "Iteration: 1730\n", + "0.8772027972027973\n", + "Iteration: 1740\n", + "0.8777622377622377\n", + "Iteration: 1750\n", + "0.8780419580419581\n", + "Iteration: 1760\n", + "0.8786013986013986\n", + "Iteration: 1770\n", + "0.8791608391608392\n", + "Iteration: 1780\n", + "0.8797202797202798\n", + "Iteration: 1790\n", + "0.8802797202797202\n", + "Iteration: 1800\n", + "0.8805594405594406\n", + "Iteration: 1810\n", + "0.8811188811188811\n", + "Iteration: 1820\n", + "0.881958041958042\n", + "Iteration: 1830\n", + "0.8822377622377623\n", + "Iteration: 1840\n", + "0.8830769230769231\n", + "Iteration: 1850\n", + "0.8839160839160839\n", + "Iteration: 1860\n", + "0.8841958041958042\n", + "Iteration: 1870\n", + "0.8839160839160839\n", + "Iteration: 1880\n", + "0.8844755244755245\n", + "Iteration: 1890\n", + "0.8847552447552448\n", + "Iteration: 1900\n", + "0.885034965034965\n", + "Iteration: 1910\n", + "0.885034965034965\n", + "Iteration: 1920\n", + "0.8853146853146853\n", + "Iteration: 1930\n", + "0.8861538461538462\n", + "Iteration: 1940\n", + "0.886993006993007\n", + "Iteration: 1950\n", + "0.8875524475524476\n", + "Iteration: 1960\n", + "0.8881118881118881\n", + "Iteration: 1970\n", + "0.8886713286713287\n", + "Iteration: 1980\n", + "0.8897902097902098\n", + "Iteration: 1990\n", + "0.8900699300699301\n", + "Iteration: 2000\n", + "0.8900699300699301\n", + "Iteration: 2010\n", + "0.8909090909090909\n", + "Iteration: 2020\n", + "0.8911888111888112\n", + "Iteration: 2030\n", + "0.8914685314685314\n", + "Iteration: 2040\n", + "0.8917482517482518\n", + "Iteration: 2050\n", + "0.8925874125874126\n", + "Iteration: 2060\n", + "0.8928671328671328\n", + "Iteration: 2070\n", + "0.8931468531468532\n", + "Iteration: 2080\n", + "0.8934265734265734\n", + "Iteration: 2090\n", + "0.893986013986014\n", + "Iteration: 2100\n", + "0.8942657342657343\n", + "Iteration: 2110\n", + "0.8948251748251749\n", + "Iteration: 2120\n", + "0.8953846153846153\n", + "Iteration: 2130\n", + "0.8956643356643357\n", + "Iteration: 2140\n", + "0.8962237762237762\n", + "Iteration: 2150\n", + "0.8967832167832168\n", + "Iteration: 2160\n", + "0.897062937062937\n", + "Iteration: 2170\n", + "0.8973426573426574\n", + "Iteration: 2180\n", + "0.8976223776223776\n", + "Iteration: 2190\n", + "0.8979020979020979\n", + "Iteration: 2200\n", + "0.8984615384615384\n", + "Iteration: 2210\n", + "0.8993006993006993\n", + "Iteration: 2220\n", + "0.8995804195804196\n", + "Iteration: 2230\n", + "0.8998601398601399\n", + "Iteration: 2240\n", + "0.9001398601398601\n", + "Iteration: 2250\n", + "0.9001398601398601\n", + "Iteration: 2260\n", + "0.9004195804195804\n", + "Iteration: 2270\n", + "0.9012587412587413\n", + "Iteration: 2280\n", + "0.9015384615384615\n", + "Iteration: 2290\n", + "0.9020979020979021\n", + "Iteration: 2300\n", + "0.9020979020979021\n", + "Iteration: 2310\n", + "0.9020979020979021\n", + "Iteration: 2320\n", + "0.9023776223776224\n", + "Iteration: 2330\n", + "0.9032167832167832\n", + "Iteration: 2340\n", + "0.904055944055944\n", + "Iteration: 2350\n", + "0.9043356643356644\n", + "Iteration: 2360\n", + "0.9046153846153846\n", + "Iteration: 2370\n", + "0.9046153846153846\n", + "Iteration: 2380\n", + "0.9054545454545454\n", + "Iteration: 2390\n", + "0.906013986013986\n", + "Iteration: 2400\n", + "0.9071328671328671\n", + "Iteration: 2410\n", + "0.9074125874125875\n", + "Iteration: 2420\n", + "0.9079720279720279\n", + "Iteration: 2430\n", + "0.9082517482517483\n", + "Iteration: 2440\n", + "0.9085314685314685\n", + "Iteration: 2450\n", + "0.9085314685314685\n", + "Iteration: 2460\n", + "0.9085314685314685\n", + "Iteration: 2470\n", + "0.9082517482517483\n", + "Iteration: 2480\n", + "0.9093706293706294\n", + "Iteration: 2490\n", + "0.9093706293706294\n", + "Iteration: 2500\n", + "0.9096503496503496\n", + "Iteration: 2510\n", + "0.9096503496503496\n", + "Iteration: 2520\n", + "0.9102097902097902\n", + "Iteration: 2530\n", + "0.9102097902097902\n", + "Iteration: 2540\n", + "0.9102097902097902\n", + "Iteration: 2550\n", + "0.9107692307692308\n", + "Iteration: 2560\n", + "0.911048951048951\n", + "Iteration: 2570\n", + "0.9113286713286713\n", + "Iteration: 2580\n", + "0.9116083916083916\n", + "Iteration: 2590\n", + "0.9118881118881119\n", + "Iteration: 2600\n", + "0.9127272727272727\n", + "Iteration: 2610\n", + "0.9132867132867133\n", + "Iteration: 2620\n", + "0.9135664335664335\n", + "Iteration: 2630\n", + "0.9135664335664335\n", + "Iteration: 2640\n", + "0.9144055944055944\n", + "Iteration: 2650\n", + "0.9146853146853147\n", + "Iteration: 2660\n", + "0.9146853146853147\n", + "Iteration: 2670\n", + "0.9146853146853147\n", + "Iteration: 2680\n", + "0.9155244755244756\n", + "Iteration: 2690\n", + "0.9155244755244756\n", + "Iteration: 2700\n", + "0.9158041958041958\n", + "Iteration: 2710\n", + "0.9166433566433566\n", + "Iteration: 2720\n", + "0.916923076923077\n", + "Iteration: 2730\n", + "0.9172027972027972\n", + "Iteration: 2740\n", + "0.9177622377622378\n", + "Iteration: 2750\n", + "0.9177622377622378\n", + "Iteration: 2760\n", + "0.9183216783216783\n", + "Iteration: 2770\n", + "0.9186013986013986\n", + "Iteration: 2780\n", + "0.9188811188811189\n", + "Iteration: 2790\n", + "0.9194405594405595\n", + "Iteration: 2800\n", + "0.9194405594405595\n", + "Iteration: 2810\n", + "0.9197202797202797\n", + "Iteration: 2820\n", + "0.92\n", + "Iteration: 2830\n", + "0.9202797202797203\n", + "Iteration: 2840\n", + "0.9202797202797203\n", + "Iteration: 2850\n", + "0.9202797202797203\n", + "Iteration: 2860\n", + "0.9202797202797203\n", + "Iteration: 2870\n", + "0.9202797202797203\n", + "Iteration: 2880\n", + "0.9205594405594406\n", + "Iteration: 2890\n", + "0.9213986013986014\n", + "Iteration: 2900\n", + "0.9216783216783216\n", + "Iteration: 2910\n", + "0.9216783216783216\n", + "Iteration: 2920\n", + "0.9216783216783216\n", + "Iteration: 2930\n", + "0.9216783216783216\n", + "Iteration: 2940\n", + "0.9216783216783216\n", + "Iteration: 2950\n", + "0.921958041958042\n", + "Iteration: 2960\n", + "0.921958041958042\n", + "Iteration: 2970\n", + "0.9225174825174826\n", + "Iteration: 2980\n", + "0.9225174825174826\n", + "Iteration: 2990\n", + "0.9227972027972028\n", + "Iteration: 3000\n", + "0.9225174825174826\n", + "Iteration: 3010\n", + "0.9230769230769231\n", + "Iteration: 3020\n", + "0.9233566433566434\n", + "Iteration: 3030\n", + "0.9236363636363636\n", + "Iteration: 3040\n", + "0.9236363636363636\n", + "Iteration: 3050\n", + "0.9236363636363636\n", + "Iteration: 3060\n", + "0.9236363636363636\n", + "Iteration: 3070\n", + "0.9236363636363636\n", + "Iteration: 3080\n", + "0.9239160839160839\n", + "Iteration: 3090\n", + "0.9241958041958042\n", + "Iteration: 3100\n", + "0.9250349650349651\n", + "Iteration: 3110\n", + "0.9250349650349651\n", + "Iteration: 3120\n", + "0.9253146853146853\n", + "Iteration: 3130\n", + "0.9255944055944056\n", + "Iteration: 3140\n", + "0.9258741258741259\n", + "Iteration: 3150\n", + "0.9258741258741259\n", + "Iteration: 3160\n", + "0.9258741258741259\n", + "Iteration: 3170\n", + "0.9258741258741259\n", + "Iteration: 3180\n", + "0.9255944055944056\n", + "Iteration: 3190\n", + "0.9258741258741259\n", + "Iteration: 3200\n", + "0.9258741258741259\n", + "Iteration: 3210\n", + "0.9261538461538461\n", + "Iteration: 3220\n", + "0.9261538461538461\n", + "Iteration: 3230\n", + "0.9267132867132867\n", + "Iteration: 3240\n", + "0.9275524475524476\n", + "Iteration: 3250\n", + "0.9275524475524476\n", + "Iteration: 3260\n", + "0.9275524475524476\n", + "Iteration: 3270\n", + "0.9275524475524476\n", + "Iteration: 3280\n", + "0.9275524475524476\n", + "Iteration: 3290\n", + "0.9278321678321678\n", + "Iteration: 3300\n", + "0.9281118881118882\n", + "Iteration: 3310\n", + "0.9283916083916084\n", + "Iteration: 3320\n", + "0.9283916083916084\n", + "Iteration: 3330\n", + "0.9283916083916084\n", + "Iteration: 3340\n", + "0.9283916083916084\n", + "Iteration: 3350\n", + "0.9286713286713286\n", + "Iteration: 3360\n", + "0.9286713286713286\n", + "Iteration: 3370\n", + "0.928951048951049\n", + "Iteration: 3380\n", + "0.928951048951049\n", + "Iteration: 3390\n", + "0.928951048951049\n", + "Iteration: 3400\n", + "0.928951048951049\n", + "Iteration: 3410\n", + "0.928951048951049\n", + "Iteration: 3420\n", + "0.928951048951049\n", + "Iteration: 3430\n", + "0.9295104895104895\n", + "Iteration: 3440\n", + "0.9297902097902098\n", + "Iteration: 3450\n", + "0.9295104895104895\n", + "Iteration: 3460\n", + "0.9295104895104895\n", + "Iteration: 3470\n", + "0.9297902097902098\n", + "Iteration: 3480\n", + "0.9300699300699301\n", + "Iteration: 3490\n", + "0.9303496503496503\n", + "Iteration: 3500\n", + "0.9303496503496503\n", + "Iteration: 3510\n", + "0.9306293706293707\n", + "Iteration: 3520\n", + "0.9306293706293707\n", + "Iteration: 3530\n", + "0.9309090909090909\n", + "Iteration: 3540\n", + "0.9311888111888111\n", + "Iteration: 3550\n", + "0.9314685314685315\n", + "Iteration: 3560\n", + "0.9317482517482517\n", + "Iteration: 3570\n", + "0.9317482517482517\n", + "Iteration: 3580\n", + "0.932027972027972\n", + "Iteration: 3590\n", + "0.932027972027972\n", + "Iteration: 3600\n", + "0.9325874125874126\n", + "Iteration: 3610\n", + "0.9328671328671329\n", + "Iteration: 3620\n", + "0.9334265734265734\n", + "Iteration: 3630\n", + "0.9334265734265734\n", + "Iteration: 3640\n", + "0.933986013986014\n", + "Iteration: 3650\n", + "0.933986013986014\n", + "Iteration: 3660\n", + "0.933986013986014\n", + "Iteration: 3670\n", + "0.9342657342657342\n", + "Iteration: 3680\n", + "0.9342657342657342\n", + "Iteration: 3690\n", + "0.9345454545454546\n", + "Iteration: 3700\n", + "0.9345454545454546\n", + "Iteration: 3710\n", + "0.9345454545454546\n", + "Iteration: 3720\n", + "0.9353846153846154\n", + "Iteration: 3730\n", + "0.9353846153846154\n", + "Iteration: 3740\n", + "0.9356643356643357\n", + "Iteration: 3750\n", + "0.9365034965034965\n", + "Iteration: 3760\n", + "0.9370629370629371\n", + "Iteration: 3770\n", + "0.9376223776223777\n", + "Iteration: 3780\n", + "0.9379020979020979\n", + "Iteration: 3790\n", + "0.9381818181818182\n", + "Iteration: 3800\n", + "0.9381818181818182\n", + "Iteration: 3810\n", + "0.9381818181818182\n", + "Iteration: 3820\n", + "0.9381818181818182\n", + "Iteration: 3830\n", + "0.9381818181818182\n", + "Iteration: 3840\n", + "0.9381818181818182\n", + "Iteration: 3850\n", + "0.9381818181818182\n", + "Iteration: 3860\n", + "0.9384615384615385\n", + "Iteration: 3870\n", + "0.9384615384615385\n", + "Iteration: 3880\n", + "0.9384615384615385\n", + "Iteration: 3890\n", + "0.9387412587412587\n", + "Iteration: 3900\n", + "0.9387412587412587\n", + "Iteration: 3910\n", + "0.939020979020979\n", + "Iteration: 3920\n", + "0.939020979020979\n", + "Iteration: 3930\n", + "0.9387412587412587\n", + "Iteration: 3940\n", + "0.939020979020979\n", + "Iteration: 3950\n", + "0.9393006993006993\n", + "Iteration: 3960\n", + "0.9393006993006993\n", + "Iteration: 3970\n", + "0.9393006993006993\n", + "Iteration: 3980\n", + "0.9393006993006993\n", + "Iteration: 3990\n", + "0.9393006993006993\n" + ] + } + ], + "source": [ + "W1, b1, W2, b2 = gradient_descent(X_train, Y_train, 0.10, 4000)\n", + "df = pd.DataFrame(acc_store)\n", + "df.to_csv('bt_acc.csv', index=False)\n", + "np.savez(\"bt_weights\", W1, b1, W2, b2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d3370366-9827-44db-85b9-512e39574ee7", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Cro_NN_C.ipynb b/Cro_NN_C.ipynb new file mode 100644 index 0000000..84fb464 --- /dev/null +++ b/Cro_NN_C.ipynb @@ -0,0 +1,992 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "25c0d153-288c-4ee8-a968-915f853b8157", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd \n", + "from matplotlib import pyplot as plt \n", + "\n", + "data = pd.read_csv('cro_data_test.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "962cacc2-c818-4c5b-bdab-2ee46c6de511", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "data = np.array(data)\n", + "\n", + "m,n = data.shape\n", + "data_train = data[1000:m].T\n", + "\n", + "Y_train = data_train[0].astype(int)\n", + "\n", + "X_train = data_train[1:n]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "e863fe3b-3ee6-42f3-b716-4fcda6a850af", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def init_params():\n", + " W1 = np.random.rand(10,1024) - 0.5\n", + " b1 = np.random.rand(10,1) - 0.5\n", + " W2 = np.random.rand(5,10) - 0.5\n", + " b2 = np.random.rand(5,1) - 0.5\n", + " return W1, b1 , W2, b2" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "64dd0fba-a49e-4f13-b534-e074350b5f42", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def ReLU(Z):\n", + " return np.maximum(Z,0)\n", + "def softmax(Z):\n", + " A = np.exp(Z) / sum(np.exp(Z))\n", + " return A\n", + "def forward_prop(W1, b1, W2, b2, X):\n", + " Z1 = W1.dot(X) + b1\n", + " A1 = ReLU(Z1)\n", + " Z2 = W2.dot(A1) + b2\n", + " A2 = softmax(Z2)\n", + " return Z1, A1, Z2, A2\n", + "def ReLU_deriv(Z):\n", + " return Z > 0\n", + "def one_hot(Y):\n", + " one_hot_Y = np.zeros((Y.size, Y.max() + 1))\n", + " one_hot_Y[np.arange(Y.size), Y] = 1\n", + " one_hot_Y = one_hot_Y.T\n", + " return one_hot_Y\n", + "def backward_prop(Z1, A1, Z2, A2, W1, W2, X, Y):\n", + " one_hot_Y = one_hot(Y)\n", + " dZ2 = A2 - one_hot_Y\n", + " dW2 = 1 / m * dZ2.dot(A1.T)\n", + " db2 = 1 / m * np.sum(dZ2)\n", + " dZ1 = W2.T.dot(dZ2) * ReLU_deriv(Z1)\n", + " dW1 = 1 / m * dZ1.dot(X.T)\n", + " db1 = 1 / m * np.sum(dZ1)\n", + " return dW1, db1, dW2, db2\n", + "def update_params(W1, b1, W2, b2, dW1, db1, dW2, db2, alpha):\n", + " W1 = W1 - alpha * dW1\n", + " b1 = b1 - alpha * db1 \n", + " W2 = W2 - alpha * dW2 \n", + " b2 = b2 - alpha * db2 \n", + " return W1, b1, W2, b2\n", + "def get_predictions(A2):\n", + " return np.argmax(A2, 0)\n", + "def get_accuracy(predictions, Y):\n", + " #print(predictions, Y)\n", + " return np.sum(predictions == Y) / Y.size" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e7ef6234-254e-47f6-ac29-ddd92d363e9e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "acc_store = [] " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d24bdd4d-1d57-40b1-a95b-3cc33e02312d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def gradient_descent(X, Y, alpha, iterations):\n", + " W1, b1, W2, b2 = init_params()\n", + " for i in range(iterations):\n", + " Z1, A1, Z2, A2 = forward_prop(W1, b1, W2, b2, X)\n", + " dW1, db1, dW2, db2 = backward_prop(Z1, A1, Z2, A2, W1, W2, X, Y)\n", + " W1, b1, W2, b2 = update_params(W1, b1, W2, b2, dW1, db1, dW2, db2, alpha)\n", + " if i % 10 == 0:\n", + " print(\"Iteration: \", i)\n", + " predictions = get_predictions(A2)\n", + " pred = get_accuracy(predictions, Y)\n", + " print(pred)\n", + " acc_store.append(pred)\n", + " return W1, b1, W2, b2" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d266b8d3-8f15-4d89-a896-a728215b048d", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Iteration: 0\n", + "0.2016308376575241\n", + "Iteration: 10\n", + "0.3700889547813195\n", + "Iteration: 20\n", + "0.45978502594514453\n", + "Iteration: 30\n", + "0.519644180874722\n", + "Iteration: 40\n", + "0.4792438843587843\n", + "Iteration: 50\n", + "0.49833209785025945\n", + "Iteration: 60\n", + "0.544477390659748\n", + "Iteration: 70\n", + "0.5804299481097109\n", + "Iteration: 80\n", + "0.6250926612305412\n", + "Iteration: 90\n", + "0.6653076352853966\n", + "Iteration: 100\n", + "0.6955151964418087\n", + "Iteration: 110\n", + "0.7168272794662713\n", + "Iteration: 120\n", + "0.7294292068198666\n", + "Iteration: 130\n", + "0.7366567828020756\n", + "Iteration: 140\n", + "0.7462935507783544\n", + "Iteration: 150\n", + "0.7544477390659748\n", + "Iteration: 160\n", + "0.758524833209785\n", + "Iteration: 170\n", + "0.7626019273535952\n", + "Iteration: 180\n", + "0.7677909562638991\n", + "Iteration: 190\n", + "0.7729799851742031\n", + "Iteration: 200\n", + "0.7755744996293551\n", + "Iteration: 210\n", + "0.7792809488510007\n", + "Iteration: 220\n", + "0.7824314306893996\n", + "Iteration: 230\n", + "0.7857672349888807\n", + "Iteration: 240\n", + "0.7889177168272795\n", + "Iteration: 250\n", + "0.7909562638991846\n", + "Iteration: 260\n", + "0.7935507783543365\n", + "Iteration: 270\n", + "0.7968865826538176\n", + "Iteration: 280\n", + "0.7996664195700519\n", + "Iteration: 290\n", + "0.8011489992587102\n", + "Iteration: 300\n", + "0.8026315789473685\n", + "Iteration: 310\n", + "0.8052260934025204\n", + "Iteration: 320\n", + "0.8081912527798369\n", + "Iteration: 330\n", + "0.8096738324684952\n", + "Iteration: 340\n", + "0.8118977020014826\n", + "Iteration: 350\n", + "0.8139362490733877\n", + "Iteration: 360\n", + "0.8148628613787992\n", + "Iteration: 370\n", + "0.8169014084507042\n", + "Iteration: 380\n", + "0.8181986656782803\n", + "Iteration: 390\n", + "0.8191252779836916\n", + "Iteration: 400\n", + "0.8204225352112676\n", + "Iteration: 410\n", + "0.8215344699777613\n", + "Iteration: 420\n", + "0.8224610822831727\n", + "Iteration: 430\n", + "0.825240919199407\n", + "Iteration: 440\n", + "0.8259822090437361\n", + "Iteration: 450\n", + "0.8280207561156412\n", + "Iteration: 460\n", + "0.8293180133432172\n", + "Iteration: 470\n", + "0.8306152705707932\n", + "Iteration: 480\n", + "0.8317272053372868\n", + "Iteration: 490\n", + "0.8313565604151223\n", + "Iteration: 500\n", + "0.8317272053372868\n", + "Iteration: 510\n", + "0.8320978502594515\n", + "Iteration: 520\n", + "0.8335804299481097\n", + "Iteration: 530\n", + "0.8348776871756857\n", + "Iteration: 540\n", + "0.8356189770200149\n", + "Iteration: 550\n", + "0.836360266864344\n", + "Iteration: 560\n", + "0.8367309117865085\n", + "Iteration: 570\n", + "0.8372868791697554\n", + "Iteration: 580\n", + "0.8395107487027428\n", + "Iteration: 590\n", + "0.8400667160859896\n", + "Iteration: 600\n", + "0.8404373610081541\n", + "Iteration: 610\n", + "0.8393254262416605\n", + "Iteration: 620\n", + "0.8400667160859896\n", + "Iteration: 630\n", + "0.8408080059303188\n", + "Iteration: 640\n", + "0.8408080059303188\n", + "Iteration: 650\n", + "0.8409933283914011\n", + "Iteration: 660\n", + "0.8421052631578947\n", + "Iteration: 670\n", + "0.8432171979243884\n", + "Iteration: 680\n", + "0.8432171979243884\n", + "Iteration: 690\n", + "0.843587842846553\n", + "Iteration: 700\n", + "0.8441438102297999\n", + "Iteration: 710\n", + "0.8445144551519644\n", + "Iteration: 720\n", + "0.8445144551519644\n", + "Iteration: 730\n", + "0.8445144551519644\n", + "Iteration: 740\n", + "0.844885100074129\n", + "Iteration: 750\n", + "0.844885100074129\n", + "Iteration: 760\n", + "0.8452557449962935\n", + "Iteration: 770\n", + "0.8459970348406227\n", + "Iteration: 780\n", + "0.8465530022238695\n", + "Iteration: 790\n", + "0.8467383246849518\n", + "Iteration: 800\n", + "0.8471089696071163\n", + "Iteration: 810\n", + "0.8476649369903633\n", + "Iteration: 820\n", + "0.8491475166790216\n", + "Iteration: 830\n", + "0.8502594514455152\n", + "Iteration: 840\n", + "0.8502594514455152\n", + "Iteration: 850\n", + "0.8511860637509266\n", + "Iteration: 860\n", + "0.8517420311341735\n", + "Iteration: 870\n", + "0.8517420311341735\n", + "Iteration: 880\n", + "0.8519273535952557\n", + "Iteration: 890\n", + "0.8519273535952557\n", + "Iteration: 900\n", + "0.8532246108228317\n", + "Iteration: 910\n", + "0.8539659006671608\n", + "Iteration: 920\n", + "0.85470719051149\n", + "Iteration: 930\n", + "0.85470719051149\n", + "Iteration: 940\n", + "0.8548925129725723\n", + "Iteration: 950\n", + "0.8556338028169014\n", + "Iteration: 960\n", + "0.8563750926612306\n", + "Iteration: 970\n", + "0.8565604151223128\n", + "Iteration: 980\n", + "0.8571163825055597\n", + "Iteration: 990\n", + "0.8567457375833951\n", + "Iteration: 1000\n", + "0.8578576723498889\n", + "Iteration: 1010\n", + "0.8580429948109711\n", + "Iteration: 1020\n", + "0.8582283172720534\n", + "Iteration: 1030\n", + "0.8585989621942179\n", + "Iteration: 1040\n", + "0.8587842846553002\n", + "Iteration: 1050\n", + "0.8591549295774648\n", + "Iteration: 1060\n", + "0.8595255744996294\n", + "Iteration: 1070\n", + "0.8595255744996294\n", + "Iteration: 1080\n", + "0.8597108969607117\n", + "Iteration: 1090\n", + "0.860637509266123\n", + "Iteration: 1100\n", + "0.8626760563380281\n", + "Iteration: 1110\n", + "0.8628613787991104\n", + "Iteration: 1120\n", + "0.8630467012601928\n", + "Iteration: 1130\n", + "0.863232023721275\n", + "Iteration: 1140\n", + "0.8630467012601928\n", + "Iteration: 1150\n", + "0.863232023721275\n", + "Iteration: 1160\n", + "0.8641586360266864\n", + "Iteration: 1170\n", + "0.8648999258710156\n", + "Iteration: 1180\n", + "0.8647146034099333\n", + "Iteration: 1190\n", + "0.8654558932542624\n", + "Iteration: 1200\n", + "0.8650852483320979\n", + "Iteration: 1210\n", + "0.8652705707931801\n", + "Iteration: 1220\n", + "0.8661971830985915\n", + "Iteration: 1230\n", + "0.8667531504818384\n", + "Iteration: 1240\n", + "0.8669384729429207\n", + "Iteration: 1250\n", + "0.8665678280207562\n", + "Iteration: 1260\n", + "0.8665678280207562\n", + "Iteration: 1270\n", + "0.8663825055596739\n", + "Iteration: 1280\n", + "0.865826538176427\n", + "Iteration: 1290\n", + "0.8665678280207562\n", + "Iteration: 1300\n", + "0.8682357301704967\n", + "Iteration: 1310\n", + "0.8700889547813195\n", + "Iteration: 1320\n", + "0.8721275018532246\n", + "Iteration: 1330\n", + "0.8723128243143069\n", + "Iteration: 1340\n", + "0.8723128243143069\n", + "Iteration: 1350\n", + "0.8702742772424018\n", + "Iteration: 1360\n", + "0.8699036323202373\n", + "Iteration: 1370\n", + "0.8680504077094143\n", + "Iteration: 1380\n", + "0.8680504077094143\n", + "Iteration: 1390\n", + "0.8691623424759081\n", + "Iteration: 1400\n", + "0.8713862120088954\n", + "Iteration: 1410\n", + "0.873054114158636\n", + "Iteration: 1420\n", + "0.874351371386212\n", + "Iteration: 1430\n", + "0.8758339510748703\n", + "Iteration: 1440\n", + "0.8763899184581171\n", + "Iteration: 1450\n", + "0.8763899184581171\n", + "Iteration: 1460\n", + "0.8762045959970348\n", + "Iteration: 1470\n", + "0.8745366938472943\n", + "Iteration: 1480\n", + "0.8724981467753892\n", + "Iteration: 1490\n", + "0.8702742772424018\n", + "Iteration: 1500\n", + "0.8710155670867309\n", + "Iteration: 1510\n", + "0.873054114158636\n", + "Iteration: 1520\n", + "0.8736100815418829\n", + "Iteration: 1530\n", + "0.8739807264640475\n", + "Iteration: 1540\n", + "0.8747220163083765\n", + "Iteration: 1550\n", + "0.8750926612305412\n", + "Iteration: 1560\n", + "0.8752779836916235\n", + "Iteration: 1570\n", + "0.8752779836916235\n", + "Iteration: 1580\n", + "0.8750926612305412\n", + "Iteration: 1590\n", + "0.8750926612305412\n", + "Iteration: 1600\n", + "0.8760192735359525\n", + "Iteration: 1610\n", + "0.876945885841364\n", + "Iteration: 1620\n", + "0.8775018532246108\n", + "Iteration: 1630\n", + "0.8778724981467754\n", + "Iteration: 1640\n", + "0.8784284655300222\n", + "Iteration: 1650\n", + "0.8782431430689399\n", + "Iteration: 1660\n", + "0.876945885841364\n", + "Iteration: 1670\n", + "0.8765752409191994\n", + "Iteration: 1680\n", + "0.8773165307635286\n", + "Iteration: 1690\n", + "0.8778724981467754\n", + "Iteration: 1700\n", + "0.8793550778354337\n", + "Iteration: 1710\n", + "0.8797257227575982\n", + "Iteration: 1720\n", + "0.8808376575240919\n", + "Iteration: 1730\n", + "0.8810229799851742\n", + "Iteration: 1740\n", + "0.8812083024462565\n", + "Iteration: 1750\n", + "0.8810229799851742\n", + "Iteration: 1760\n", + "0.8821349147516679\n", + "Iteration: 1770\n", + "0.8825055596738325\n", + "Iteration: 1780\n", + "0.8826908821349148\n", + "Iteration: 1790\n", + "0.882876204595997\n", + "Iteration: 1800\n", + "0.8830615270570793\n", + "Iteration: 1810\n", + "0.8832468495181616\n", + "Iteration: 1820\n", + "0.8834321719792438\n", + "Iteration: 1830\n", + "0.8825055596738325\n", + "Iteration: 1840\n", + "0.8821349147516679\n", + "Iteration: 1850\n", + "0.8817642698295033\n", + "Iteration: 1860\n", + "0.8826908821349148\n", + "Iteration: 1870\n", + "0.8843587842846553\n", + "Iteration: 1880\n", + "0.8851000741289844\n", + "Iteration: 1890\n", + "0.8852853965900667\n", + "Iteration: 1900\n", + "0.8856560415122313\n", + "Iteration: 1910\n", + "0.8856560415122313\n", + "Iteration: 1920\n", + "0.8858413639733136\n", + "Iteration: 1930\n", + "0.8865826538176427\n", + "Iteration: 1940\n", + "0.8871386212008896\n", + "Iteration: 1950\n", + "0.8869532987398072\n", + "Iteration: 1960\n", + "0.8873239436619719\n", + "Iteration: 1970\n", + "0.888065233506301\n", + "Iteration: 1980\n", + "0.8882505559673832\n", + "Iteration: 1990\n", + "0.8871386212008896\n", + "Iteration: 2000\n", + "0.885470719051149\n", + "Iteration: 2010\n", + "0.8865826538176427\n", + "Iteration: 2020\n", + "0.8878799110452187\n", + "Iteration: 2030\n", + "0.8888065233506302\n", + "Iteration: 2040\n", + "0.8888065233506302\n", + "Iteration: 2050\n", + "0.889362490733877\n", + "Iteration: 2060\n", + "0.8891771682727947\n", + "Iteration: 2070\n", + "0.888065233506301\n", + "Iteration: 2080\n", + "0.8886212008895478\n", + "Iteration: 2090\n", + "0.8891771682727947\n", + "Iteration: 2100\n", + "0.8904744255003706\n", + "Iteration: 2110\n", + "0.8910303928836175\n", + "Iteration: 2120\n", + "0.8908450704225352\n", + "Iteration: 2130\n", + "0.8910303928836175\n", + "Iteration: 2140\n", + "0.8914010378057821\n", + "Iteration: 2150\n", + "0.8917716827279466\n", + "Iteration: 2160\n", + "0.8915863602668643\n", + "Iteration: 2170\n", + "0.890659747961453\n", + "Iteration: 2180\n", + "0.8908450704225352\n", + "Iteration: 2190\n", + "0.8914010378057821\n", + "Iteration: 2200\n", + "0.8919570051890289\n", + "Iteration: 2210\n", + "0.8921423276501111\n", + "Iteration: 2220\n", + "0.8926982950333581\n", + "Iteration: 2230\n", + "0.8932542624166049\n", + "Iteration: 2240\n", + "0.8932542624166049\n", + "Iteration: 2250\n", + "0.8938102297998517\n", + "Iteration: 2260\n", + "0.8939955522609341\n", + "Iteration: 2270\n", + "0.8938102297998517\n", + "Iteration: 2280\n", + "0.8926982950333581\n", + "Iteration: 2290\n", + "0.8928836174944403\n", + "Iteration: 2300\n", + "0.8934395848776872\n", + "Iteration: 2310\n", + "0.8943661971830986\n", + "Iteration: 2320\n", + "0.8956634544106745\n", + "Iteration: 2330\n", + "0.89529280948851\n", + "Iteration: 2340\n", + "0.8954781319495922\n", + "Iteration: 2350\n", + "0.8954781319495922\n", + "Iteration: 2360\n", + "0.8960340993328392\n", + "Iteration: 2370\n", + "0.8964047442550037\n", + "Iteration: 2380\n", + "0.8964047442550037\n", + "Iteration: 2390\n", + "0.8964047442550037\n", + "Iteration: 2400\n", + "0.8964047442550037\n", + "Iteration: 2410\n", + "0.896590066716086\n", + "Iteration: 2420\n", + "0.896590066716086\n", + "Iteration: 2430\n", + "0.8969607116382505\n", + "Iteration: 2440\n", + "0.8969607116382505\n", + "Iteration: 2450\n", + "0.8971460340993328\n", + "Iteration: 2460\n", + "0.8973313565604151\n", + "Iteration: 2470\n", + "0.8977020014825797\n", + "Iteration: 2480\n", + "0.8980726464047443\n", + "Iteration: 2490\n", + "0.8982579688658265\n", + "Iteration: 2500\n", + "0.8986286137879911\n", + "Iteration: 2510\n", + "0.899184581171238\n", + "Iteration: 2520\n", + "0.899184581171238\n", + "Iteration: 2530\n", + "0.8989992587101556\n", + "Iteration: 2540\n", + "0.8989992587101556\n", + "Iteration: 2550\n", + "0.899184581171238\n", + "Iteration: 2560\n", + "0.8995552260934025\n", + "Iteration: 2570\n", + "0.8997405485544848\n", + "Iteration: 2580\n", + "0.8997405485544848\n", + "Iteration: 2590\n", + "0.9004818383988139\n", + "Iteration: 2600\n", + "0.9006671608598962\n", + "Iteration: 2610\n", + "0.9010378057820608\n", + "Iteration: 2620\n", + "0.9010378057820608\n", + "Iteration: 2630\n", + "0.9008524833209784\n", + "Iteration: 2640\n", + "0.9004818383988139\n", + "Iteration: 2650\n", + "0.9008524833209784\n", + "Iteration: 2660\n", + "0.9012231282431431\n", + "Iteration: 2670\n", + "0.9017790956263899\n", + "Iteration: 2680\n", + "0.9023350630096367\n", + "Iteration: 2690\n", + "0.902520385470719\n", + "Iteration: 2700\n", + "0.9027057079318014\n", + "Iteration: 2710\n", + "0.9028910303928837\n", + "Iteration: 2720\n", + "0.9030763528539659\n", + "Iteration: 2730\n", + "0.9030763528539659\n", + "Iteration: 2740\n", + "0.9030763528539659\n", + "Iteration: 2750\n", + "0.9027057079318014\n", + "Iteration: 2760\n", + "0.9015937731653076\n", + "Iteration: 2770\n", + "0.9015937731653076\n", + "Iteration: 2780\n", + "0.9014084507042254\n", + "Iteration: 2790\n", + "0.9015937731653076\n", + "Iteration: 2800\n", + "0.9030763528539659\n", + "Iteration: 2810\n", + "0.903817642698295\n", + "Iteration: 2820\n", + "0.9047442550037065\n", + "Iteration: 2830\n", + "0.9056708673091178\n", + "Iteration: 2840\n", + "0.906412157153447\n", + "Iteration: 2850\n", + "0.906412157153447\n", + "Iteration: 2860\n", + "0.9047442550037065\n", + "Iteration: 2870\n", + "0.9040029651593773\n", + "Iteration: 2880\n", + "0.9030763528539659\n", + "Iteration: 2890\n", + "0.903817642698295\n", + "Iteration: 2900\n", + "0.9049295774647887\n", + "Iteration: 2910\n", + "0.9047442550037065\n", + "Iteration: 2920\n", + "0.9053002223869533\n", + "Iteration: 2930\n", + "0.9058561897702001\n", + "Iteration: 2940\n", + "0.9065974796145293\n", + "Iteration: 2950\n", + "0.9073387694588584\n", + "Iteration: 2960\n", + "0.9086360266864344\n", + "Iteration: 2970\n", + "0.9091919940696812\n", + "Iteration: 2980\n", + "0.9091919940696812\n", + "Iteration: 2990\n", + "0.9091919940696812\n", + "Iteration: 3000\n", + "0.9095626389918459\n", + "Iteration: 3010\n", + "0.9073387694588584\n", + "Iteration: 3020\n", + "0.9027057079318014\n", + "Iteration: 3030\n", + "0.9023350630096367\n", + "Iteration: 3040\n", + "0.9049295774647887\n", + "Iteration: 3050\n", + "0.9062268346923648\n", + "Iteration: 3060\n", + "0.9080800593031876\n", + "Iteration: 3070\n", + "0.9080800593031876\n", + "Iteration: 3080\n", + "0.9082653817642699\n", + "Iteration: 3090\n", + "0.9082653817642699\n", + "Iteration: 3100\n", + "0.9088213491475167\n", + "Iteration: 3110\n", + "0.9097479614529281\n", + "Iteration: 3120\n", + "0.911045218680504\n", + "Iteration: 3130\n", + "0.9119718309859155\n", + "Iteration: 3140\n", + "0.91234247590808\n", + "Iteration: 3150\n", + "0.9125277983691623\n", + "Iteration: 3160\n", + "0.9117865085248332\n", + "Iteration: 3170\n", + "0.9086360266864344\n", + "Iteration: 3180\n", + "0.905114899925871\n", + "Iteration: 3190\n", + "0.9032616753150482\n", + "Iteration: 3200\n", + "0.9054855448480356\n", + "Iteration: 3210\n", + "0.9075240919199407\n", + "Iteration: 3220\n", + "0.9106745737583395\n", + "Iteration: 3230\n", + "0.9121571534469978\n", + "Iteration: 3240\n", + "0.9134544106745738\n", + "Iteration: 3250\n", + "0.9141957005189029\n", + "Iteration: 3260\n", + "0.9140103780578206\n", + "Iteration: 3270\n", + "0.9141957005189029\n", + "Iteration: 3280\n", + "0.9132690882134915\n", + "Iteration: 3290\n", + "0.9093773165307635\n", + "Iteration: 3300\n", + "0.9071534469977761\n", + "Iteration: 3310\n", + "0.9090066716085989\n", + "Iteration: 3320\n", + "0.9106745737583395\n", + "Iteration: 3330\n", + "0.911045218680504\n", + "Iteration: 3340\n", + "0.9127131208302446\n", + "Iteration: 3350\n", + "0.9141957005189029\n", + "Iteration: 3360\n", + "0.9145663454410674\n", + "Iteration: 3370\n", + "0.9147516679021498\n", + "Iteration: 3380\n", + "0.9149369903632321\n", + "Iteration: 3390\n", + "0.913639733135656\n", + "Iteration: 3400\n", + "0.9117865085248332\n", + "Iteration: 3410\n", + "0.9106745737583395\n", + "Iteration: 3420\n", + "0.9106745737583395\n", + "Iteration: 3430\n", + "0.911601186063751\n", + "Iteration: 3440\n", + "0.9141957005189029\n", + "Iteration: 3450\n", + "0.9153076352853966\n", + "Iteration: 3460\n", + "0.9169755374351372\n", + "Iteration: 3470\n", + "0.9171608598962194\n", + "Iteration: 3480\n", + "0.9173461823573017\n", + "Iteration: 3490\n", + "0.9153076352853966\n", + "Iteration: 3500\n", + "0.9132690882134915\n", + "Iteration: 3510\n", + "0.9119718309859155\n", + "Iteration: 3520\n", + "0.9121571534469978\n", + "Iteration: 3530\n", + "0.9140103780578206\n", + "Iteration: 3540\n", + "0.9149369903632321\n", + "Iteration: 3550\n", + "0.9167902149740549\n", + "Iteration: 3560\n", + "0.917531504818384\n", + "Iteration: 3570\n", + "0.9191994069681245\n", + "Iteration: 3580\n", + "0.9195700518902891\n", + "Iteration: 3590\n", + "0.9195700518902891\n", + "Iteration: 3600\n", + "0.9191994069681245\n", + "Iteration: 3610\n", + "0.9186434395848777\n", + "Iteration: 3620\n", + "0.9164195700518903\n", + "Iteration: 3630\n", + "0.911045218680504\n", + "Iteration: 3640\n", + "0.9106745737583395\n", + "Iteration: 3650\n", + "0.9128984432913269\n", + "Iteration: 3660\n", + "0.9160489251297257\n", + "Iteration: 3670\n", + "0.9184581171237954\n", + "Iteration: 3680\n", + "0.9190140845070423\n", + "Iteration: 3690\n", + "0.9204966641957005\n", + "Iteration: 3700\n", + "0.9206819866567828\n", + "Iteration: 3710\n", + "0.9203113417346183\n", + "Iteration: 3720\n", + "0.9203113417346183\n", + "Iteration: 3730\n", + "0.9197553743513713\n", + "Iteration: 3740\n", + "0.9195700518902891\n", + "Iteration: 3750\n", + "0.9156782802075611\n", + "Iteration: 3760\n", + "0.91234247590808\n", + "Iteration: 3770\n", + "0.9127131208302446\n", + "Iteration: 3780\n", + "0.9158636026686434\n", + "Iteration: 3790\n", + "0.9179021497405485\n", + "Iteration: 3800\n", + "0.9190140845070423\n", + "Iteration: 3810\n", + "0.920126019273536\n", + "Iteration: 3820\n", + "0.9206819866567828\n", + "Iteration: 3830\n", + "0.9214232765011119\n", + "Iteration: 3840\n", + "0.9212379540400296\n", + "Iteration: 3850\n", + "0.9212379540400296\n", + "Iteration: 3860\n", + "0.9210526315789473\n", + "Iteration: 3870\n", + "0.9193847294292068\n", + "Iteration: 3880\n", + "0.9169755374351372\n", + "Iteration: 3890\n", + "0.9154929577464789\n", + "Iteration: 3900\n", + "0.9164195700518903\n", + "Iteration: 3910\n", + "0.9180874722016308\n", + "Iteration: 3920\n", + "0.920126019273536\n", + "Iteration: 3930\n", + "0.9219792438843588\n", + "Iteration: 3940\n", + "0.9225352112676056\n", + "Iteration: 3950\n", + "0.9225352112676056\n", + "Iteration: 3960\n", + "0.9223498888065234\n", + "Iteration: 3970\n", + "0.9208673091178651\n", + "Iteration: 3980\n", + "0.9195700518902891\n", + "Iteration: 3990\n", + "0.9186434395848777\n" + ] + } + ], + "source": [ + "W1, b1, W2, b2 = gradient_descent(X_train, Y_train, 0.10, 4000)\n", + "df = pd.DataFrame(acc_store)\n", + "df.to_csv('cr_acc.csv', index=False)\n", + "np.savez(\"cr_weights\", W1, b1, W2, b2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11203f4e-4adf-4a47-a6e2-a8847f27f0cc", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.17" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/German_NN_C.ipynb b/German_NN_C.ipynb new file mode 100644 index 0000000..f7bbbde --- /dev/null +++ b/German_NN_C.ipynb @@ -0,0 +1,1098 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "ea3e9a09-3257-4b1a-9245-d42bbf88d06b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd \n", + "from matplotlib import pyplot as plt \n", + "\n", + "data = pd.read_csv('gtsrb_data_test.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "fe7852fc-5353-478d-9c7e-ad5fd251d963", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "data = np.array(data)\n", + "\n", + "m,n = data.shape\n", + "data_train = data[1000:m].T\n", + "\n", + "Y_train = data_train[0].astype(int)\n", + "\n", + "X_train = data_train[1:n]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f3d23a27-d544-44ea-9291-5697fac2b8c2", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.5568628\n" + ] + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "42435b4b-6390-4c20-b04a-cec2730879fd", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def init_params():\n", + " W1 = np.random.rand(10,1024) - 0.5\n", + " b1 = np.random.rand(10,1) - 0.5\n", + " W2 = np.random.rand(43,10) - 0.5\n", + " b2 = np.random.rand(43,1) - 0.5\n", + " return W1, b1 , W2, b2" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f9da376f-6b2a-4c7c-b392-c34f7dc7dee4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def ReLU(Z):\n", + " return np.maximum(Z,0)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "6cd98c98-9f06-4362-a3cd-a0a9b168ea97", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def softmax(Z):\n", + " A = np.exp(Z) / sum(np.exp(Z))\n", + " return A" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "039f4e5d-9d7c-4f59-81d6-f64310cc5b1f", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def forward_prop(W1, b1, W2, b2, X):\n", + " Z1 = W1.dot(X) + b1\n", + " A1 = ReLU(Z1)\n", + " Z2 = W2.dot(A1) + b2\n", + " A2 = softmax(Z2)\n", + " return Z1, A1, Z2, A2" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "24588282-2ec1-4c64-9b9d-4e7d395449fb", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def ReLU_deriv(Z):\n", + " return Z > 0" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "d4977d9c-38c9-4758-9262-dd03b8bbd015", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def one_hot(Y):\n", + " one_hot_Y = np.zeros((Y.size, Y.max() + 1))\n", + " one_hot_Y[np.arange(Y.size), Y] = 1\n", + " one_hot_Y = one_hot_Y.T\n", + " return one_hot_Y" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "941b2ec2-980f-4577-abe3-d13ac252e86b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def backward_prop(Z1, A1, Z2, A2, W1, W2, X, Y):\n", + " one_hot_Y = one_hot(Y)\n", + " dZ2 = A2 - one_hot_Y\n", + " dW2 = 1 / m * dZ2.dot(A1.T)\n", + " db2 = 1 / m * np.sum(dZ2)\n", + " dZ1 = W2.T.dot(dZ2) * ReLU_deriv(Z1)\n", + " dW1 = 1 / m * dZ1.dot(X.T)\n", + " db1 = 1 / m * np.sum(dZ1)\n", + " return dW1, db1, dW2, db2" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "20ab4235-86ac-4708-8b16-8d0169ecd97f", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def update_params(W1, b1, W2, b2, dW1, db1, dW2, db2, alpha):\n", + " W1 = W1 - alpha * dW1\n", + " b1 = b1 - alpha * db1 \n", + " W2 = W2 - alpha * dW2 \n", + " b2 = b2 - alpha * db2 \n", + " return W1, b1, W2, b2" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "b82641d2-7ebb-4adb-9c40-3a6a28ccb49b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def get_predictions(A2):\n", + " return np.argmax(A2, 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "2f38d2cc-316a-48f3-a275-57253249f132", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def get_accuracy(predictions, Y):\n", + " #print(predictions, Y)\n", + " return np.sum(predictions == Y) / Y.size" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "c46ae58a-9362-4f7d-8ce4-d668230b1647", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "acc_store = [] " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "54095b38-ca0a-41e6-9e33-c7b484e73c86", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def gradient_descent(X, Y, alpha, iterations):\n", + " W1, b1, W2, b2 = init_params()\n", + " for i in range(iterations):\n", + " Z1, A1, Z2, A2 = forward_prop(W1, b1, W2, b2, X)\n", + " dW1, db1, dW2, db2 = backward_prop(Z1, A1, Z2, A2, W1, W2, X, Y)\n", + " W1, b1, W2, b2 = update_params(W1, b1, W2, b2, dW1, db1, dW2, db2, alpha)\n", + " if i % 10 == 0:\n", + " print(\"Iteration: \", i)\n", + " predictions = get_predictions(A2)\n", + " pred = get_accuracy(predictions, Y)\n", + " print(pred)\n", + " acc_store.append(pred)\n", + " return W1, b1, W2, b2" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "bfa77e8c-04e4-4d1e-85f0-ea6cdd71e924", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Iteration: 0\n", + "0.025193465176268273\n", + "Iteration: 10\n", + "0.04428202923473775\n", + "Iteration: 20\n", + "0.04883920894239037\n", + "Iteration: 30\n", + "0.060791057609630265\n", + "Iteration: 40\n", + "0.07919174548581255\n", + "Iteration: 50\n", + "0.09501289767841789\n", + "Iteration: 60\n", + "0.10378331900257953\n", + "Iteration: 70\n", + "0.10902837489251935\n", + "Iteration: 80\n", + "0.1124677558039553\n", + "Iteration: 90\n", + "0.11401547721410146\n", + "Iteration: 100\n", + "0.11685296646603612\n", + "Iteration: 110\n", + "0.12158211521926053\n", + "Iteration: 120\n", + "0.12510748065348237\n", + "Iteration: 130\n", + "0.12768701633705934\n", + "Iteration: 140\n", + "0.1294926913155632\n", + "Iteration: 150\n", + "0.13181427343078245\n", + "Iteration: 160\n", + "0.13284608770421324\n", + "Iteration: 170\n", + "0.13404987102321583\n", + "Iteration: 180\n", + "0.13473774720550302\n", + "Iteration: 190\n", + "0.13680137575236456\n", + "Iteration: 200\n", + "0.13843508168529664\n", + "Iteration: 210\n", + "0.13938091143594153\n", + "Iteration: 220\n", + "0.13989681857265693\n", + "Iteration: 230\n", + "0.13989681857265693\n", + "Iteration: 240\n", + "0.1402407566638005\n", + "Iteration: 250\n", + "0.1404987102321582\n", + "Iteration: 260\n", + "0.1410146173688736\n", + "Iteration: 270\n", + "0.1419604471195185\n", + "Iteration: 280\n", + "0.14282029234737748\n", + "Iteration: 290\n", + "0.14462596732588134\n", + "Iteration: 300\n", + "0.1469475494411006\n", + "Iteration: 310\n", + "0.1476354256233878\n", + "Iteration: 320\n", + "0.14944110060189167\n", + "Iteration: 330\n", + "0.15150472914875324\n", + "Iteration: 340\n", + "0.1529664660361135\n", + "Iteration: 350\n", + "0.15657781599312123\n", + "Iteration: 360\n", + "0.15950128976784178\n", + "Iteration: 370\n", + "0.16362854686156492\n", + "Iteration: 380\n", + "0.16603611349957006\n", + "Iteration: 390\n", + "0.16913155631986243\n", + "Iteration: 400\n", + "0.17205503009458298\n", + "Iteration: 410\n", + "0.1761822871883061\n", + "Iteration: 420\n", + "0.17815993121238177\n", + "Iteration: 430\n", + "0.18185726569217542\n", + "Iteration: 440\n", + "0.18426483233018057\n", + "Iteration: 450\n", + "0.18538263112639725\n", + "Iteration: 460\n", + "0.18512467755803955\n", + "Iteration: 470\n", + "0.18512467755803955\n", + "Iteration: 480\n", + "0.1874462596732588\n", + "Iteration: 490\n", + "0.1935511607910576\n", + "Iteration: 500\n", + "0.19733447979363714\n", + "Iteration: 510\n", + "0.2006018916595013\n", + "Iteration: 520\n", + "0.20429922613929494\n", + "Iteration: 530\n", + "0.20834049871023216\n", + "Iteration: 540\n", + "0.21298366294067067\n", + "Iteration: 550\n", + "0.21496130696474636\n", + "Iteration: 560\n", + "0.21908856405846946\n", + "Iteration: 570\n", + "0.2238177128116939\n", + "Iteration: 580\n", + "0.2291487532244196\n", + "Iteration: 590\n", + "0.23293207222699913\n", + "Iteration: 600\n", + "0.23439380911435942\n", + "Iteration: 610\n", + "0.23843508168529665\n", + "Iteration: 620\n", + "0.24316423043852106\n", + "Iteration: 630\n", + "0.2465176268271711\n", + "Iteration: 640\n", + "0.2524505588993981\n", + "Iteration: 650\n", + "0.2578675838349097\n", + "Iteration: 660\n", + "0.2623387790197764\n", + "Iteration: 670\n", + "0.2658641444539983\n", + "Iteration: 680\n", + "0.27136715391229577\n", + "Iteration: 690\n", + "0.2776440240756664\n", + "Iteration: 700\n", + "0.2808254514187446\n", + "Iteration: 710\n", + "0.2844368013757524\n", + "Iteration: 720\n", + "0.2868443680137575\n", + "Iteration: 730\n", + "0.29191745485812554\n", + "Iteration: 740\n", + "0.294067067927773\n", + "Iteration: 750\n", + "0.2976784178847807\n", + "Iteration: 760\n", + "0.3004299226139295\n", + "Iteration: 770\n", + "0.30472914875322443\n", + "Iteration: 780\n", + "0.30902837489251933\n", + "Iteration: 790\n", + "0.3113499570077386\n", + "Iteration: 800\n", + "0.31478933791917457\n", + "Iteration: 810\n", + "0.3183147033533964\n", + "Iteration: 820\n", + "0.32089423903697334\n", + "Iteration: 830\n", + "0.3221840068787618\n", + "Iteration: 840\n", + "0.32493551160791057\n", + "Iteration: 850\n", + "0.32639724849527085\n", + "Iteration: 860\n", + "0.3266552020636285\n", + "Iteration: 870\n", + "0.32751504729148756\n", + "Iteration: 880\n", + "0.3289767841788478\n", + "Iteration: 890\n", + "0.3315563198624248\n", + "Iteration: 900\n", + "0.3339638865004299\n", + "Iteration: 910\n", + "0.33568357695614787\n", + "Iteration: 920\n", + "0.3374032674118659\n", + "Iteration: 930\n", + "0.33920894239036975\n", + "Iteration: 940\n", + "0.3423043852106621\n", + "Iteration: 950\n", + "0.3467755803955288\n", + "Iteration: 960\n", + "0.3480653482373173\n", + "Iteration: 970\n", + "0.35081685296646603\n", + "Iteration: 980\n", + "0.35537403267411866\n", + "Iteration: 990\n", + "0.358469475494411\n", + "Iteration: 1000\n", + "0.3609630266552021\n", + "Iteration: 1010\n", + "0.36328460877042135\n", + "Iteration: 1020\n", + "0.3650042992261393\n", + "Iteration: 1030\n", + "0.36723989681857266\n", + "Iteration: 1040\n", + "0.3699914015477214\n", + "Iteration: 1050\n", + "0.37265692175408427\n", + "Iteration: 1060\n", + "0.37463456577815996\n", + "Iteration: 1070\n", + "0.3761822871883061\n", + "Iteration: 1080\n", + "0.37850386930352536\n", + "Iteration: 1090\n", + "0.37962166809974207\n", + "Iteration: 1100\n", + "0.3816852966466036\n", + "Iteration: 1110\n", + "0.3840068787618229\n", + "Iteration: 1120\n", + "0.38564058469475493\n", + "Iteration: 1130\n", + "0.3885640584694755\n", + "Iteration: 1140\n", + "0.39165950128976784\n", + "Iteration: 1150\n", + "0.394926913155632\n", + "Iteration: 1160\n", + "0.39604471195184865\n", + "Iteration: 1170\n", + "0.39819432502149615\n", + "Iteration: 1180\n", + "0.40103181427343076\n", + "Iteration: 1190\n", + "0.40386930352536543\n", + "Iteration: 1200\n", + "0.404213241616509\n", + "Iteration: 1210\n", + "0.40739466895958726\n", + "Iteration: 1220\n", + "0.40937231298366294\n", + "Iteration: 1230\n", + "0.4111779879621668\n", + "Iteration: 1240\n", + "0.41496130696474637\n", + "Iteration: 1250\n", + "0.4168529664660361\n", + "Iteration: 1260\n", + "0.4199484092863285\n", + "Iteration: 1270\n", + "0.42115219260533104\n", + "Iteration: 1280\n", + "0.423731728288908\n", + "Iteration: 1290\n", + "0.42613929492691316\n", + "Iteration: 1300\n", + "0.4278589853826311\n", + "Iteration: 1310\n", + "0.4311263972484953\n", + "Iteration: 1320\n", + "0.4322441960447119\n", + "Iteration: 1330\n", + "0.4345657781599312\n", + "Iteration: 1340\n", + "0.435597592433362\n", + "Iteration: 1350\n", + "0.43697334479793637\n", + "Iteration: 1360\n", + "0.4391229578675838\n", + "Iteration: 1370\n", + "0.4410146173688736\n", + "Iteration: 1380\n", + "0.44273430782459156\n", + "Iteration: 1390\n", + "0.44428202923473775\n", + "Iteration: 1400\n", + "0.4460017196904557\n", + "Iteration: 1410\n", + "0.44823731728288907\n", + "Iteration: 1420\n", + "0.4504729148753224\n", + "Iteration: 1430\n", + "0.4522785898538263\n", + "Iteration: 1440\n", + "0.4543422184006879\n", + "Iteration: 1450\n", + "0.45649183147033534\n", + "Iteration: 1460\n", + "0.4585554600171969\n", + "Iteration: 1470\n", + "0.460189165950129\n", + "Iteration: 1480\n", + "0.46182287188306104\n", + "Iteration: 1490\n", + "0.46388650042992263\n", + "Iteration: 1500\n", + "0.466122098022356\n", + "Iteration: 1510\n", + "0.46732588134135855\n", + "Iteration: 1520\n", + "0.46844368013757526\n", + "Iteration: 1530\n", + "0.4696474634565778\n", + "Iteration: 1540\n", + "0.4706792777300086\n", + "Iteration: 1550\n", + "0.47231298366294067\n", + "Iteration: 1560\n", + "0.47386070507308686\n", + "Iteration: 1570\n", + "0.4760963026655202\n", + "Iteration: 1580\n", + "0.47807394668959585\n", + "Iteration: 1590\n", + "0.47910576096302665\n", + "Iteration: 1600\n", + "0.48134135855546\n", + "Iteration: 1610\n", + "0.4824591573516767\n", + "Iteration: 1620\n", + "0.4831470335339639\n", + "Iteration: 1630\n", + "0.48460877042132416\n", + "Iteration: 1640\n", + "0.4866723989681857\n", + "Iteration: 1650\n", + "0.4877042132416165\n", + "Iteration: 1660\n", + "0.48796216680997423\n", + "Iteration: 1670\n", + "0.48950988822012037\n", + "Iteration: 1680\n", + "0.4885640584694755\n", + "Iteration: 1690\n", + "0.458469475494411\n", + "Iteration: 1700\n", + "0.4817712811693895\n", + "Iteration: 1710\n", + "0.5031814273430782\n", + "Iteration: 1720\n", + "0.5036973344797936\n", + "Iteration: 1730\n", + "0.4990541702493551\n", + "Iteration: 1740\n", + "0.48658641444539985\n", + "Iteration: 1750\n", + "0.4834049871023216\n", + "Iteration: 1760\n", + "0.49234737747205504\n", + "Iteration: 1770\n", + "0.5004299226139295\n", + "Iteration: 1780\n", + "0.504213241616509\n", + "Iteration: 1790\n", + "0.5081685296646603\n", + "Iteration: 1800\n", + "0.5116938950988822\n", + "Iteration: 1810\n", + "0.5149613069647463\n", + "Iteration: 1820\n", + "0.5170249355116079\n", + "Iteration: 1830\n", + "0.5184866723989682\n", + "Iteration: 1840\n", + "0.5189165950128977\n", + "Iteration: 1850\n", + "0.5210662080825451\n", + "Iteration: 1860\n", + "0.5173688736027515\n", + "Iteration: 1870\n", + "0.5042992261392949\n", + "Iteration: 1880\n", + "0.4950988822012038\n", + "Iteration: 1890\n", + "0.48538263112639723\n", + "Iteration: 1900\n", + "0.4998280309544282\n", + "Iteration: 1910\n", + "0.5120378331900258\n", + "Iteration: 1920\n", + "0.5133276010318143\n", + "Iteration: 1930\n", + "0.5149613069647463\n", + "Iteration: 1940\n", + "0.5182287188306105\n", + "Iteration: 1950\n", + "0.5208942390369733\n", + "Iteration: 1960\n", + "0.5234737747205503\n", + "Iteration: 1970\n", + "0.5251074806534823\n", + "Iteration: 1980\n", + "0.5267411865864144\n", + "Iteration: 1990\n", + "0.5280309544282029\n", + "Iteration: 2000\n", + "0.530438521066208\n", + "Iteration: 2010\n", + "0.5311263972484953\n", + "Iteration: 2020\n", + "0.529664660361135\n", + "Iteration: 2030\n", + "0.525451418744626\n", + "Iteration: 2040\n", + "0.5149613069647463\n", + "Iteration: 2050\n", + "0.49140154772141015\n", + "Iteration: 2060\n", + "0.5261392949269131\n", + "Iteration: 2070\n", + "0.5496130696474635\n", + "Iteration: 2080\n", + "0.5528804815133276\n", + "Iteration: 2090\n", + "0.548237317282889\n", + "Iteration: 2100\n", + "0.5408426483233018\n", + "Iteration: 2110\n", + "0.5248495270851247\n", + "Iteration: 2120\n", + "0.5248495270851247\n", + "Iteration: 2130\n", + "0.5340498710232158\n", + "Iteration: 2140\n", + "0.5439380911435941\n", + "Iteration: 2150\n", + "0.550816852966466\n", + "Iteration: 2160\n", + "0.5544282029234737\n", + "Iteration: 2170\n", + "0.5510748065348238\n", + "Iteration: 2180\n", + "0.5514187446259673\n", + "Iteration: 2190\n", + "0.5385210662080826\n", + "Iteration: 2200\n", + "0.542304385210662\n", + "Iteration: 2210\n", + "0.5588134135855546\n", + "Iteration: 2220\n", + "0.5655202063628547\n", + "Iteration: 2230\n", + "0.5571797076526225\n", + "Iteration: 2240\n", + "0.5384350816852966\n", + "Iteration: 2250\n", + "0.5430782459157352\n", + "Iteration: 2260\n", + "0.5548581255374032\n", + "Iteration: 2270\n", + "0.5577815993121238\n", + "Iteration: 2280\n", + "0.55932932072227\n", + "Iteration: 2290\n", + "0.5602751504729149\n", + "Iteration: 2300\n", + "0.561049011177988\n", + "Iteration: 2310\n", + "0.5584694754944111\n", + "Iteration: 2320\n", + "0.5538263112639725\n", + "Iteration: 2330\n", + "0.5439380911435941\n", + "Iteration: 2340\n", + "0.5379191745485813\n", + "Iteration: 2350\n", + "0.5466895958727429\n", + "Iteration: 2360\n", + "0.5522785898538263\n", + "Iteration: 2370\n", + "0.5636285468615649\n", + "Iteration: 2380\n", + "0.574548581255374\n", + "Iteration: 2390\n", + "0.5803955288048152\n", + "Iteration: 2400\n", + "0.5831470335339639\n", + "Iteration: 2410\n", + "0.5859845227858985\n", + "Iteration: 2420\n", + "0.5879621668099742\n", + "Iteration: 2430\n", + "0.5848667239896819\n", + "Iteration: 2440\n", + "0.5764402407566638\n", + "Iteration: 2450\n", + "0.572828890799656\n", + "Iteration: 2460\n", + "0.5832330180567498\n", + "Iteration: 2470\n", + "0.5879621668099742\n", + "Iteration: 2480\n", + "0.576268271711092\n", + "Iteration: 2490\n", + "0.5756663800515908\n", + "Iteration: 2500\n", + "0.582201203783319\n", + "Iteration: 2510\n", + "0.5882201203783319\n", + "Iteration: 2520\n", + "0.5885640584694755\n", + "Iteration: 2530\n", + "0.5852106620808255\n", + "Iteration: 2540\n", + "0.5783319002579536\n", + "Iteration: 2550\n", + "0.5766122098022356\n", + "Iteration: 2560\n", + "0.5803095442820292\n", + "Iteration: 2570\n", + "0.585640584694755\n", + "Iteration: 2580\n", + "0.5918314703353397\n", + "Iteration: 2590\n", + "0.585640584694755\n", + "Iteration: 2600\n", + "0.5929492691315563\n", + "Iteration: 2610\n", + "0.605159071367154\n", + "Iteration: 2620\n", + "0.6088564058469476\n", + "Iteration: 2630\n", + "0.6080825451418744\n", + "Iteration: 2640\n", + "0.6078245915735168\n", + "Iteration: 2650\n", + "0.6065348237317283\n", + "Iteration: 2660\n", + "0.6094582975064489\n", + "Iteration: 2670\n", + "0.6084264832330181\n", + "Iteration: 2680\n", + "0.6133276010318143\n", + "Iteration: 2690\n", + "0.6077386070507309\n", + "Iteration: 2700\n", + "0.5948409286328461\n", + "Iteration: 2710\n", + "0.6030954428202924\n", + "Iteration: 2720\n", + "0.6112639724849527\n", + "Iteration: 2730\n", + "0.6117798796216681\n", + "Iteration: 2740\n", + "0.6086844368013757\n", + "Iteration: 2750\n", + "0.6091143594153052\n", + "Iteration: 2760\n", + "0.6121238177128117\n", + "Iteration: 2770\n", + "0.6153912295786759\n", + "Iteration: 2780\n", + "0.6151332760103182\n", + "Iteration: 2790\n", + "0.616938950988822\n", + "Iteration: 2800\n", + "0.6122957867583835\n", + "Iteration: 2810\n", + "0.6045571797076527\n", + "Iteration: 2820\n", + "0.6171109200343938\n", + "Iteration: 2830\n", + "0.6277730008598452\n", + "Iteration: 2840\n", + "0.6288907996560619\n", + "Iteration: 2850\n", + "0.6271711092003439\n", + "Iteration: 2860\n", + "0.6308684436801376\n", + "Iteration: 2870\n", + "0.6312983662940671\n", + "Iteration: 2880\n", + "0.6307824591573516\n", + "Iteration: 2890\n", + "0.6348237317282889\n", + "Iteration: 2900\n", + "0.6386070507308684\n", + "Iteration: 2910\n", + "0.6353396388650043\n", + "Iteration: 2920\n", + "0.6213241616509029\n", + "Iteration: 2930\n", + "0.6240756663800516\n", + "Iteration: 2940\n", + "0.6345657781599312\n", + "Iteration: 2950\n", + "0.6372312983662941\n", + "Iteration: 2960\n", + "0.6330180567497851\n", + "Iteration: 2970\n", + "0.6343938091143594\n", + "Iteration: 2980\n", + "0.6374892519346518\n", + "Iteration: 2990\n", + "0.6381771281169389\n", + "Iteration: 3000\n", + "0.6404987102321582\n", + "Iteration: 3010\n", + "0.6439380911435941\n", + "Iteration: 3020\n", + "0.6418744625967326\n", + "Iteration: 3030\n", + "0.6346517626827171\n", + "Iteration: 3040\n", + "0.6258813413585554\n", + "Iteration: 3050\n", + "0.6392949269131556\n", + "Iteration: 3060\n", + "0.6469475494411006\n", + "Iteration: 3070\n", + "0.64737747205503\n", + "Iteration: 3080\n", + "0.6445399828030954\n", + "Iteration: 3090\n", + "0.6468615649183147\n", + "Iteration: 3100\n", + "0.6502149613069648\n", + "Iteration: 3110\n", + "0.6527944969905417\n", + "Iteration: 3120\n", + "0.6552880481513328\n", + "Iteration: 3130\n", + "0.6583834909716251\n", + "Iteration: 3140\n", + "0.660103181427343\n", + "Iteration: 3150\n", + "0.6502149613069648\n", + "Iteration: 3160\n", + "0.6441960447119518\n", + "Iteration: 3170\n", + "0.6499570077386071\n", + "Iteration: 3180\n", + "0.6577815993121238\n", + "Iteration: 3190\n", + "0.654170249355116\n", + "Iteration: 3200\n", + "0.6540842648323302\n", + "Iteration: 3210\n", + "0.6580395528804815\n", + "Iteration: 3220\n", + "0.6615649183147033\n", + "Iteration: 3230\n", + "0.6634565778159931\n", + "Iteration: 3240\n", + "0.6682717110920035\n", + "Iteration: 3250\n", + "0.6688736027515048\n", + "Iteration: 3260\n", + "0.6673258813413585\n", + "Iteration: 3270\n", + "0.6582115219260533\n", + "Iteration: 3280\n", + "0.6464316423043852\n", + "Iteration: 3290\n", + "0.6527944969905417\n", + "Iteration: 3300\n", + "0.6649183147033534\n", + "Iteration: 3310\n", + "0.6658641444539983\n", + "Iteration: 3320\n", + "0.6637145313843508\n", + "Iteration: 3330\n", + "0.6682717110920035\n", + "Iteration: 3340\n", + "0.6712811693895099\n", + "Iteration: 3350\n", + "0.671969045571797\n", + "Iteration: 3360\n", + "0.6722269991401548\n", + "Iteration: 3370\n", + "0.6730008598452278\n", + "Iteration: 3380\n", + "0.6782459157351677\n", + "Iteration: 3390\n", + "0.6794496990541703\n", + "Iteration: 3400\n", + "0.6723129836629407\n", + "Iteration: 3410\n", + "0.6655202063628547\n", + "Iteration: 3420\n", + "0.6648323301805675\n", + "Iteration: 3430\n", + "0.677128116938951\n", + "Iteration: 3440\n", + "0.6760963026655202\n", + "Iteration: 3450\n", + "0.6699054170249356\n", + "Iteration: 3460\n", + "0.6776440240756664\n", + "Iteration: 3470\n", + "0.6831470335339639\n", + "Iteration: 3480\n", + "0.6845227858985382\n", + "Iteration: 3490\n", + "0.6829750644883921\n", + "Iteration: 3500\n", + "0.6809114359415305\n", + "Iteration: 3510\n", + "0.683061049011178\n", + "Iteration: 3520\n", + "0.6860705073086845\n", + "Iteration: 3530\n", + "0.6862424763542563\n", + "Iteration: 3540\n", + "0.6808254514187446\n", + "Iteration: 3550\n", + "0.6705932932072227\n", + "Iteration: 3560\n", + "0.6765262252794497\n", + "Iteration: 3570\n", + "0.6884780739466896\n", + "Iteration: 3580\n", + "0.6907996560619089\n", + "Iteration: 3590\n", + "0.6785898538263113\n", + "Iteration: 3600\n", + "0.6792777300085985\n", + "Iteration: 3610\n", + "0.6947549441100602\n", + "Iteration: 3620\n", + "0.7036113499570077\n", + "Iteration: 3630\n", + "0.7007738607050731\n", + "Iteration: 3640\n", + "0.6918314703353396\n", + "Iteration: 3650\n", + "0.6798796216680998\n", + "Iteration: 3660\n", + "0.68469475494411\n", + "Iteration: 3670\n", + "0.6921754084264833\n", + "Iteration: 3680\n", + "0.697506448839209\n", + "Iteration: 3690\n", + "0.6960447119518487\n", + "Iteration: 3700\n", + "0.6905417024935512\n", + "Iteration: 3710\n", + "0.6876182287188306\n", + "Iteration: 3720\n", + "0.697506448839209\n", + "Iteration: 3730\n", + "0.7049011177987962\n", + "Iteration: 3740\n", + "0.7035253654342218\n", + "Iteration: 3750\n", + "0.6846087704213242\n", + "Iteration: 3760\n", + "0.6799656061908856\n", + "Iteration: 3770\n", + "0.6952708512467756\n", + "Iteration: 3780\n", + "0.7100601891659502\n", + "Iteration: 3790\n", + "0.7192605331040413\n", + "Iteration: 3800\n", + "0.7217540842648323\n", + "Iteration: 3810\n", + "0.7165950128976785\n", + "Iteration: 3820\n", + "0.698280309544282\n", + "Iteration: 3830\n", + "0.6799656061908856\n", + "Iteration: 3840\n", + "0.678761822871883\n", + "Iteration: 3850\n", + "0.693207222699914\n", + "Iteration: 3860\n", + "0.7019776440240757\n", + "Iteration: 3870\n", + "0.7073946689595872\n", + "Iteration: 3880\n", + "0.7070507308684437\n", + "Iteration: 3890\n", + "0.7057609630266553\n", + "Iteration: 3900\n", + "0.7104041272570937\n", + "Iteration: 3910\n", + "0.7171109200343938\n", + "Iteration: 3920\n", + "0.7189165950128977\n", + "Iteration: 3930\n", + "0.7104041272570937\n", + "Iteration: 3940\n", + "0.691487532244196\n", + "Iteration: 3950\n", + "0.6880481513327601\n", + "Iteration: 3960\n", + "0.7095442820292347\n", + "Iteration: 3970\n", + "0.722957867583835\n", + "Iteration: 3980\n", + "0.7315563198624248\n", + "Iteration: 3990\n", + "0.7358555460017197\n" + ] + } + ], + "source": [ + "W1, b1, W2, b2 = gradient_descent(X_train, Y_train, 0.10, 4000)\n", + "df = pd.DataFrame(acc_store)\n", + "df.to_csv('gt_acc.csv', index=False)\n", + "np.savez(\"gt_weights\", W1, b1, W2, b2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c8c9bb8d-0379-4b46-941b-410bf0da29ef", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.17" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/NoNeed/Bel_Data_Loader.ipynb b/NoNeed/Bel_Data_Loader.ipynb new file mode 100644 index 0000000..7ee1739 --- /dev/null +++ b/NoNeed/Bel_Data_Loader.ipynb @@ -0,0 +1,152 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "e2a5d1d7-6bb3-4e24-9067-880296de1fc9", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "import imageio\n", + "from skimage import color, transform\n", + "import numpy as np\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "b37f1351-0a00-4a4b-9067-ea55a662bc80", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "main_folder = 'data/Bel_Training_Set/'" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "76f41177-fd53-4bf6-9e75-ba1a98c414ff", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "subfolders = [f for f in os.listdir(main_folder) if os.path.isdir(os.path.join(main_folder, f))]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "706d2a6d-8147-42a1-ba19-3cc7108fcfea", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "image_data = []\n", + "label_data = []" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "86841170-b9bc-46cf-b482-f2d653060bc0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "docnames = [\"Pixel \" + str(i) for i in range(1024)]\n", + "docnames.insert(0, 'Label')\n", + "df1 = pd.DataFrame(columns = docnames) " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d9e5d953-1652-47d3-a832-d71d87c2b7ee", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def add_to_dataset(x,y,z,l):\n", + " y.at[z,'Label'] = l\n", + " for i in range(0,1024):\n", + " y.at[z,docnames[i+1]] = x[i]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "82fe02ed-8471-493f-aded-58c54edb7ef6", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "i = 0\n", + "for subfolder in subfolders:\n", + " subfolder_path = os.path.join(main_folder, subfolder)\n", + " for filename in os.listdir(subfolder_path):\n", + " \n", + " file_path = os.path.join(subfolder_path, filename)\n", + " if filename.lower().endswith('.ppm'):\n", + " img_array = imageio.v2.imread(file_path)\n", + " resized_img_array = transform.resize(img_array, (32, 32))\n", + " gray_img_array = color.rgb2gray(resized_img_array)\n", + " flattened_img_array = gray_img_array.flatten()\n", + " add_to_dataset(flattened_img_array,df1,i,int(subfolder))\n", + " i = i + 1\n", + " #print(\"Image From\", int(subfolder), \"Image Name\", filename)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "7bdcd7d7-56f3-4b9f-924f-dd811dddf605", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "df1.to_csv('bel_data_test.csv', index = False) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12d9c974-85ed-4d10-af2e-0984a367d4be", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/NoNeed/Cro_Data_Loader.ipynb b/NoNeed/Cro_Data_Loader.ipynb new file mode 100644 index 0000000..e2e7370 --- /dev/null +++ b/NoNeed/Cro_Data_Loader.ipynb @@ -0,0 +1,152 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "0a9a579c-df1c-4742-a0ed-e3db27bdc3e4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import pandas as pd \n", + "import os\n", + "import imageio\n", + "from skimage import color, transform\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "99e5b7bf-4438-477c-9880-008fb864ae56", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "image_folder = 'data/Cro_Training_Set/'" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "da337206-82a6-416c-b5db-04466695a7b4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def convert_letter(x):\n", + " if x == 'A':\n", + " y = 0\n", + " if x == 'B':\n", + " y = 1\n", + " if x == 'C':\n", + " y = 2\n", + " if x == 'D':\n", + " y = 3\n", + " if x == 'E':\n", + " y = 4\n", + " return y\n", + "def add_to_dataset(x,y,z,l):\n", + " y.at[z,'Label'] = l\n", + " for i in range(0,1024):\n", + " y.at[z,docnames[i+1]] = x[i]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "0d28e8d0-9386-4ccd-a7bf-f19e9d59d6f6", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "docnames = [\"Pixel \" + str(i) for i in range(1024)]\n", + "docnames.insert(0, 'Label')\n", + "df1 = pd.DataFrame(columns = docnames) " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ce03500d-7d48-493f-a00c-94c1d79bf02d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "i = 0\n", + "for filename in os.listdir(image_folder):\n", + " file_path = os.path.join(image_folder, filename)\n", + "\n", + " # Check if the file is a PNG file\n", + " if filename.lower().endswith('.bmp'):\n", + " # Extract the single letter from the filename (adjust the index accordingly)\n", + " single_letter = filename[0]\n", + "\n", + " # Read the image and convert it to a NumPy array\n", + " img_array = imageio.v2.imread(file_path)\n", + "\n", + " # Resize the image to 32x32\n", + " resized_img_array = transform.resize(img_array, (32, 32))\n", + "\n", + " # Convert the RGB image to grayscale\n", + " gray_img_array = color.rgb2gray(resized_img_array)\n", + "\n", + " # Flatten the image to 1024\n", + " flattened_img_array = gray_img_array.flatten()\n", + " \n", + " label = convert_letter(single_letter)\n", + " add_to_dataset(flattened_img_array,df1,i,label)\n", + " i = i + 1\n", + "\n", + " # Append the processed image data to the list\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "02056706-60c3-4390-990a-9f84bb56c049", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "df1.to_csv('cro_data_test.csv', index = False) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "66da76d9-6286-4e1e-b91e-007f43642c14", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.17" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/NoNeed/Germna_Data_Loader.ipynb b/NoNeed/Germna_Data_Loader.ipynb new file mode 100644 index 0000000..89e4719 --- /dev/null +++ b/NoNeed/Germna_Data_Loader.ipynb @@ -0,0 +1,382 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "e9cfe5db-43cb-4298-9388-d869d7314ea2", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np \n", + "import pandas as pd " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9a476b58-bb18-4499-96cd-4bf38ca7566f", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def img_flat(x):\n", + " gray_img = np.mean(x, axis=0)\n", + " flat_img = gray_img.flatten()\n", + " return flat_img\n", + "def add_to_dataset(x,y,z,l):\n", + " y.at[z,'Label'] = l\n", + " for i in range(0,1024):\n", + " y.at[z,docnames[i+1]] = x[i]\n", + " #print(z , \"Completed\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6130f3c5-97bd-4be8-8751-9ffbae99436b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "docnames = [\"Pixel \" + str(i) for i in range(1024)]\n", + "docnames.insert(0, 'Label')\n", + "df1 = pd.DataFrame(columns = docnames) " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "0d080bf5-067b-47a5-99dc-b22f145115b6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloading https://sid.erda.dk/public/archives/daaeac0d7ce1152aea9b61d9f1e19370/GTSRB_Final_Test_Images.zip to data/gtsrb/GTSRB_Final_Test_Images.zip\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 88978620/88978620 [00:10<00:00, 8777572.15it/s] \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracting data/gtsrb/GTSRB_Final_Test_Images.zip to data/gtsrb\n", + "Downloading https://sid.erda.dk/public/archives/daaeac0d7ce1152aea9b61d9f1e19370/GTSRB_Final_Test_GT.zip to data/gtsrb/GTSRB_Final_Test_GT.zip\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 99620/99620 [00:00<00:00, 289763.24it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Extracting data/gtsrb/GTSRB_Final_Test_GT.zip to data/gtsrb\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "from torchvision.datasets import GTSRB\n", + "from torchvision import transforms\n", + "\n", + "# Define a transform to convert the data to a NumPy array\n", + "transform = transforms.Compose([\n", + " transforms.Resize((32, 32)), \n", + " transforms.ToTensor(),\n", + "])\n", + "\n", + "# Download the dataset\n", + "dataset = GTSRB(root='./data', split=\"test\", transform=transform, download=True)\n", + "\n", + "\n", + "\n", + "# Iterate through the dataset and apply transformations\n", + "for i in range(len(dataset)):\n", + " image, label = dataset[i]\n", + " label = int(label)\n", + " # Convert the PyTorch tensor to a NumPy array\n", + " image_np = np.array(image)\n", + " temp_img = img_flat(image_np)\n", + " add_to_dataset(temp_img,df1,i,label)\n", + " #data['label'].append(label)\n", + " \n", + " \n", + "# Convert the data to a DataFrame\n", + "#df = pd.DataFrame(data)\n", + "\n", + "# Save the DataFrame to a CSV file\n", + "#df.to_csv('gtsrb_data.csv', index=False)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "1b64da5c-1326-4258-8066-6ab5debfec9d", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
LabelPixel 0Pixel 1Pixel 2Pixel 3Pixel 4Pixel 5Pixel 6Pixel 7Pixel 8...Pixel 1014Pixel 1015Pixel 1016Pixel 1017Pixel 1018Pixel 1019Pixel 1020Pixel 1021Pixel 1022Pixel 1023
0160.5633990.5568630.5594770.5607840.5555560.5503270.549020.5464050.537255...0.5516340.549020.5450980.5503270.5542480.549020.5398690.5477120.5516340.554248
110.2562090.3032680.3111110.3294120.2941180.3045750.3084970.2222220.160784...0.8653590.8104580.5241830.2653590.2013070.2130720.2287580.2405230.274510.281046
2380.1712420.1660130.1647060.1660130.1647060.158170.1620920.1633990.160784...0.1503270.1150330.1359480.1189540.1150330.1346410.1424840.1555560.1699350.179085
3330.4496730.3294120.2470590.2666670.3830070.5320260.641830.6614380.718954...0.4771240.5620920.6549020.7764710.7385620.6967320.7568630.8771240.9464050.882353
4110.1320260.1450980.158170.1555560.1503270.1450980.158170.1843140.203922...0.1477120.1411760.1385620.1450980.1516340.1568630.1555560.1620920.1712420.177778
\n", + "

5 rows × 1025 columns

\n", + "
" + ], + "text/plain": [ + " Label Pixel 0 Pixel 1 Pixel 2 Pixel 3 Pixel 4 Pixel 5 Pixel 6 \\\n", + "0 16 0.563399 0.556863 0.559477 0.560784 0.555556 0.550327 0.54902 \n", + "1 1 0.256209 0.303268 0.311111 0.329412 0.294118 0.304575 0.308497 \n", + "2 38 0.171242 0.166013 0.164706 0.166013 0.164706 0.15817 0.162092 \n", + "3 33 0.449673 0.329412 0.247059 0.266667 0.383007 0.532026 0.64183 \n", + "4 11 0.132026 0.145098 0.15817 0.155556 0.150327 0.145098 0.15817 \n", + "\n", + " Pixel 7 Pixel 8 ... Pixel 1014 Pixel 1015 Pixel 1016 Pixel 1017 \\\n", + "0 0.546405 0.537255 ... 0.551634 0.54902 0.545098 0.550327 \n", + "1 0.222222 0.160784 ... 0.865359 0.810458 0.524183 0.265359 \n", + "2 0.163399 0.160784 ... 0.150327 0.115033 0.135948 0.118954 \n", + "3 0.661438 0.718954 ... 0.477124 0.562092 0.654902 0.776471 \n", + "4 0.184314 0.203922 ... 0.147712 0.141176 0.138562 0.145098 \n", + "\n", + " Pixel 1018 Pixel 1019 Pixel 1020 Pixel 1021 Pixel 1022 Pixel 1023 \n", + "0 0.554248 0.54902 0.539869 0.547712 0.551634 0.554248 \n", + "1 0.201307 0.213072 0.228758 0.240523 0.27451 0.281046 \n", + "2 0.115033 0.134641 0.142484 0.155556 0.169935 0.179085 \n", + "3 0.738562 0.696732 0.756863 0.877124 0.946405 0.882353 \n", + "4 0.151634 0.156863 0.155556 0.162092 0.171242 0.177778 \n", + "\n", + "[5 rows x 1025 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "deaf22c0-5aae-45e4-a4db-196fbcc001a1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "df1.to_csv('gtsrb_data_test.csv', index = False) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bbc65ef5-4313-42ed-8690-557ebca488b8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.17" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bel_semantics.ipynb b/bel_semantics.ipynb new file mode 100644 index 0000000..3904138 --- /dev/null +++ b/bel_semantics.ipynb @@ -0,0 +1,185 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import net.modules\n", + "\n", + "import numpy as np\n", + "\n", + "from net.transcoder import Transcoder" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "filepath = 'data/bel_data_test.csv'\n", + "train_loader, test_loader, input_size = load_and_prepare_data(file_path=filepath)\n", + "\n", + "print(\"X_train shape:\", input_size.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# input_size = X_train.shape[0]\n", + "# hidden_size = 128\n", + "# output_size = 61\n", + "\n", + "architecture = [input_size, [128], 61]\n", + "activations = ['leaky_relu','softmax']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Initialize transcoder" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# bl_transcoder = Transcoder(input_size, hidden_size, output_size, 'leaky_relu', 'softmax')\n", + "bl_transcoder = Transcoder(architecture, hidden_activation='relu', output_activation='softmax')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train Encoders and save weights\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# # Train the encoder if need\n", + "\n", + "bl_transcoder.train_model(train_loader, test_loader, learning_rate=0.001, epochs=1000)\n", + "# bl_transcoder.train_with_validation(X_train, Y_train, alpha=0.1, iterations=1000)\n", + "bl_transcoder.save_results('bt_1h128n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load weights" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "bl_transcoder.load_weights('weights/bt_1h128n_leaky_relu_weights.pth')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Plot learning curves\n", + "bl_transcoder.plot_learning_curves()\n", + "\n", + "# Visualize encoded space\n", + "bl_transcoder.plot_encoded_space(X_test, Y_test)\n", + "\n", + "print(X_test.shape)\n", + "print(X_train.shape)\n", + "# Check reconstructions\n", + "bl_transcoder.plot_reconstructions(X_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Transcode images" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "num_images = 2\n", + "indices = np.random.choice(X_test.shape[1], num_images, replace=False)\n", + "\n", + "for idx in indices:\n", + " original_image = X_test[:, idx]\n", + " \n", + " # Encode the image\n", + " encoded = bl_transcoder.encode_image(original_image.reshape(-1, 1))\n", + " \n", + " # Decode the image\n", + " decoded = bl_transcoder.decode_image(encoded)\n", + "\n", + " # Visualize original, encoded, and decoded images\n", + " visualize_transcoding(original_image, encoded, decoded, idx)\n", + "\n", + " print(f\"Image {idx}:\")\n", + " print(\"Original shape:\", original_image.shape)\n", + " print(\"Encoded shape:\", encoded.shape)\n", + " print(\"Decoded shape:\", decoded.shape)\n", + " print(\"Encoded vector:\", encoded.flatten()) # Print flattened encoded vector\n", + " print(\"\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "semantics", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/enc_dec.ipynb b/enc_dec.ipynb new file mode 100644 index 0000000..7c806e6 --- /dev/null +++ b/enc_dec.ipynb @@ -0,0 +1,203 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "from net.modules import *\n", + "from net.decoder import *\n", + "from net.encoder import *" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up parameters (modify these as needed)\n", + "file_path = \"data/bel_data_test.csv\" # Replace with your actual file path\n", + "encoder_type = \"pca\" # Choose \"regular\" or \"pca\"\n", + "load_weights = False # Set to True if you want to load pre-trained weights\n", + "weight_file = \"weights/bel_weights.npz\" # Only used if load_weights is True\n", + "dataset=\"bel\"\n", + "\n", + "# Load and prepare the data\n", + "X_train, Y_train, X_test, Y_test = load_and_prepare_data(file_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Set hyperparameters\n", + "input_size = X_train.shape[0]\n", + "hidden_size = 128\n", + "output_size = 61 # Number of classes\n", + "pca_components = 50\n", + "\n", + "alpha = 0.01\n", + "iterations = 2000\n", + "num_trials = 5" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Choose encoder type\n", + "if encoder_type == \"regular\":\n", + " EncoderClass = Encoder\n", + " encoder_name = \"Regular Encoder\"\n", + "elif encoder_type == \"pca\":\n", + " EncoderClass = PCAEncoder\n", + " encoder_name = \"PCAEncoder\"\n", + "else:\n", + " raise ValueError(\"Invalid encoder type selected\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training PCAEncoder\n", + "Trial 1/5\n" + ] + }, + { + "ename": "ValueError", + "evalue": "X has 50 features, but StandardScaler is expecting 1024 features as input.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[5], line 9\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTraining \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mencoder_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m----> 9\u001b[0m best_weights, best_accuracy, all_accuracies \u001b[38;5;241m=\u001b[39m \u001b[43mbest_params\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 10\u001b[0m \u001b[43m \u001b[49m\u001b[43mEncoderClass\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mX_train\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mY_train\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minput_size\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mhidden_size\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moutput_size\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[1;32m 11\u001b[0m \u001b[43m \u001b[49m\u001b[43malpha\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43miterations\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnum_trials\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpca_components\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpca_components\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mEncoderClass\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m==\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mPCAEncoder\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\n\u001b[1;32m 12\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mBest accuracy achieved with \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mencoder_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mbest_accuracy\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 15\u001b[0m \u001b[38;5;66;03m# Create encoder with best weights\u001b[39;00m\n", + "File \u001b[0;32m~/Projects/School/Sem_Imp/net/modules.py:15\u001b[0m, in \u001b[0;36mbest_params\u001b[0;34m(EncoderClass, X, Y, input_size, hidden_size, output_size, alpha, iterations, num_trials, **kwargs)\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTrial \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtrial\u001b[38;5;250m \u001b[39m\u001b[38;5;241m+\u001b[39m\u001b[38;5;250m \u001b[39m\u001b[38;5;241m1\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnum_trials\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 14\u001b[0m encoder \u001b[38;5;241m=\u001b[39m EncoderClass(input_size, hidden_size, output_size, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m---> 15\u001b[0m accuracies \u001b[38;5;241m=\u001b[39m \u001b[43mencoder\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrain\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mY\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43miterations\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43malpha\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 16\u001b[0m final_accuracy \u001b[38;5;241m=\u001b[39m accuracies[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m]\n\u001b[1;32m 17\u001b[0m all_accuracies\u001b[38;5;241m.\u001b[39mappend(accuracies)\n", + "File \u001b[0;32m~/Projects/School/Sem_Imp/net/encoder.py:112\u001b[0m, in \u001b[0;36mPCAEncoder.train\u001b[0;34m(self, X, Y, iterations, alpha)\u001b[0m\n\u001b[1;32m 110\u001b[0m X_scaled \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mscaler\u001b[38;5;241m.\u001b[39mtransform(X\u001b[38;5;241m.\u001b[39mT)\u001b[38;5;241m.\u001b[39mT\n\u001b[1;32m 111\u001b[0m X_pca \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpca\u001b[38;5;241m.\u001b[39mtransform(X_scaled\u001b[38;5;241m.\u001b[39mT)\u001b[38;5;241m.\u001b[39mT\n\u001b[0;32m--> 112\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrain\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX_pca\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mY\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43miterations\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43malpha\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/Projects/School/Sem_Imp/net/encoder.py:64\u001b[0m, in \u001b[0;36mEncoder.train\u001b[0;34m(self, X, Y, iterations, alpha)\u001b[0m\n\u001b[1;32m 61\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mupdate_params(dW1, db1, dW2, db2, alpha)\n\u001b[1;32m 63\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m i \u001b[38;5;241m%\u001b[39m \u001b[38;5;241m100\u001b[39m \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m---> 64\u001b[0m accuracy \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_accuracy\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mY\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 65\u001b[0m accuracies\u001b[38;5;241m.\u001b[39mappend(accuracy)\n\u001b[1;32m 66\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIteration \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mi\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m, Accuracy: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00maccuracy\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/Projects/School/Sem_Imp/net/encoder.py:115\u001b[0m, in \u001b[0;36mPCAEncoder.get_accuracy\u001b[0;34m(self, X, Y)\u001b[0m\n\u001b[1;32m 114\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget_accuracy\u001b[39m(\u001b[38;5;28mself\u001b[39m, X, Y):\n\u001b[0;32m--> 115\u001b[0m X_scaled \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mscaler\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtransform\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mT\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39mT\n\u001b[1;32m 116\u001b[0m X_pca \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpca\u001b[38;5;241m.\u001b[39mtransform(X_scaled\u001b[38;5;241m.\u001b[39mT)\u001b[38;5;241m.\u001b[39mT\n\u001b[1;32m 117\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mget_accuracy(X_pca, Y)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.6/envs/tf/lib/python3.11/site-packages/sklearn/utils/_set_output.py:313\u001b[0m, in \u001b[0;36m_wrap_method_output..wrapped\u001b[0;34m(self, X, *args, **kwargs)\u001b[0m\n\u001b[1;32m 311\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(f)\n\u001b[1;32m 312\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapped\u001b[39m(\u001b[38;5;28mself\u001b[39m, X, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m--> 313\u001b[0m data_to_wrap \u001b[38;5;241m=\u001b[39m \u001b[43mf\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 314\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(data_to_wrap, \u001b[38;5;28mtuple\u001b[39m):\n\u001b[1;32m 315\u001b[0m \u001b[38;5;66;03m# only wrap the first output for cross decomposition\u001b[39;00m\n\u001b[1;32m 316\u001b[0m return_tuple \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 317\u001b[0m _wrap_data_with_container(method, data_to_wrap[\u001b[38;5;241m0\u001b[39m], X, \u001b[38;5;28mself\u001b[39m),\n\u001b[1;32m 318\u001b[0m \u001b[38;5;241m*\u001b[39mdata_to_wrap[\u001b[38;5;241m1\u001b[39m:],\n\u001b[1;32m 319\u001b[0m )\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.6/envs/tf/lib/python3.11/site-packages/sklearn/preprocessing/_data.py:1045\u001b[0m, in \u001b[0;36mStandardScaler.transform\u001b[0;34m(self, X, copy)\u001b[0m\n\u001b[1;32m 1042\u001b[0m check_is_fitted(\u001b[38;5;28mself\u001b[39m)\n\u001b[1;32m 1044\u001b[0m copy \u001b[38;5;241m=\u001b[39m copy \u001b[38;5;28;01mif\u001b[39;00m copy \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcopy\n\u001b[0;32m-> 1045\u001b[0m X \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_data\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1046\u001b[0m \u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1047\u001b[0m \u001b[43m \u001b[49m\u001b[43mreset\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 1048\u001b[0m \u001b[43m \u001b[49m\u001b[43maccept_sparse\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcsr\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1049\u001b[0m \u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1050\u001b[0m \u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mFLOAT_DTYPES\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1051\u001b[0m \u001b[43m \u001b[49m\u001b[43mforce_writeable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 1052\u001b[0m \u001b[43m \u001b[49m\u001b[43mforce_all_finite\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mallow-nan\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1053\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1055\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m sparse\u001b[38;5;241m.\u001b[39missparse(X):\n\u001b[1;32m 1056\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwith_mean:\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.6/envs/tf/lib/python3.11/site-packages/sklearn/base.py:654\u001b[0m, in \u001b[0;36mBaseEstimator._validate_data\u001b[0;34m(self, X, y, reset, validate_separately, cast_to_ndarray, **check_params)\u001b[0m\n\u001b[1;32m 651\u001b[0m out \u001b[38;5;241m=\u001b[39m X, y\n\u001b[1;32m 653\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m no_val_X \u001b[38;5;129;01mand\u001b[39;00m check_params\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mensure_2d\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mTrue\u001b[39;00m):\n\u001b[0;32m--> 654\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_check_n_features\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreset\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mreset\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 656\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m out\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.6/envs/tf/lib/python3.11/site-packages/sklearn/base.py:443\u001b[0m, in \u001b[0;36mBaseEstimator._check_n_features\u001b[0;34m(self, X, reset)\u001b[0m\n\u001b[1;32m 440\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[1;32m 442\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m n_features \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_features_in_:\n\u001b[0;32m--> 443\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 444\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX has \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mn_features\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m features, but \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 445\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mis expecting \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mn_features_in_\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m features as input.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 446\u001b[0m )\n", + "\u001b[0;31mValueError\u001b[0m: X has 50 features, but StandardScaler is expecting 1024 features as input." + ] + } + ], + "source": [ + "# Load pre-trained weights or train a new model\n", + "if load_weights:\n", + " encoder = EncoderClass(input_size, hidden_size, output_size, pca_components=pca_components)\n", + " encoder.load_weights(weight_file)\n", + " print(f\"Weights loaded for {encoder_name}\")\n", + "else:\n", + " print(f\"Training {encoder_name}\")\n", + " best_weights, best_accuracy, all_accuracies = best_params(\n", + " EncoderClass, X_train, Y_train, input_size, hidden_size, output_size, \n", + " alpha, iterations, num_trials, pca_components=pca_components\n", + " )\n", + " print(f\"Best accuracy achieved with {encoder_name}: {best_accuracy}\")\n", + "\n", + " # Create encoder with best weights\n", + " encoder = EncoderClass(input_size, hidden_size, output_size, pca_components=pca_components)\n", + " encoder.W1, encoder.b1, encoder.W2, encoder.b2 = best_weights\n", + "\n", + " # Save the best weights\n", + " weight_file = f\"{dataset}_{encoder_name.lower().replace(' ', '_')}_weights.npz\"\n", + " encoder.save_weights(weight_file)\n", + " print(f\"Best weights saved to {weight_file}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Initialize the appropriate Decoder\n", + "decoder = PCADecoder(encoder) if EncoderClass == PCAEncoder else Decoder(encoder)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Test the encoding-decoding process\n", + "num_test_images = 5\n", + "for i in range(num_test_images):\n", + " original_image = X_test[:, i].reshape(input_size, 1)\n", + " encoded = encoder.encode(original_image)\n", + " reconstructed = decoder.decode(encoded)\n", + "\n", + " # Visualize the results\n", + " img_dim = int(np.sqrt(input_size))\n", + " plt.figure(figsize=(15, 5))\n", + " \n", + " plt.subplot(1, 3, 1)\n", + " plt.imshow(original_image.reshape(img_dim, img_dim), cmap='gray')\n", + " plt.title(f\"Original Image {i+1}\")\n", + " \n", + " plt.subplot(1, 3, 2)\n", + " plt.imshow(encoded.reshape(output_size, 1), cmap='viridis', aspect='auto')\n", + " plt.title(f\"Encoded Image {i+1}\")\n", + " \n", + " plt.subplot(1, 3, 3)\n", + " plt.imshow(reconstructed.reshape(img_dim, img_dim), cmap='gray')\n", + " plt.title(f\"Reconstructed Image {i+1}\")\n", + " \n", + " plt.tight_layout()\n", + " plt.show()\n", + "\n", + " # Calculate and print the mean squared error\n", + " mse = np.mean((original_image - reconstructed) ** 2)\n", + " print(f\"Mean Squared Error for Image {i+1}: {mse}\")\n", + "\n", + "print(\"Encoding-decoding process completed.\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "tf", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/encoder.ipynb b/encoder.ipynb new file mode 100644 index 0000000..4ceee20 --- /dev/null +++ b/encoder.ipynb @@ -0,0 +1,423 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "407c9473", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "14cccaae-d3b6-4ae5-a28a-5fed4b998783", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def init_params():\n", + " W1 = np.random.rand(10,1024) - 0.5\n", + " b1 = np.random.rand(10,1) - 0.5\n", + " W2 = np.random.rand(61,10) - 0.5\n", + " b2 = np.random.rand(61,1) - 0.5\n", + " return W1, b1 , W2, b2\n", + "def ReLU(Z):\n", + " return np.maximum(Z,0)\n", + "def softmax(Z):\n", + " A = np.exp(Z) / sum(np.exp(Z))\n", + " return A\n", + "def forward_prop(W1, b1, W2, b2, X):\n", + " Z1 = W1.dot(X) + b1\n", + " A1 = ReLU(Z1)\n", + " Z2 = W2.dot(A1) + b2\n", + " A2 = softmax(Z2)\n", + " return Z1, A1, Z2, A2\n", + "def ReLU_deriv(Z):\n", + " return Z > 0\n", + "def one_hot(Y):\n", + " one_hot_Y = np.zeros((Y.size, Y.max() + 1))\n", + " one_hot_Y[np.arange(Y.size), Y] = 1\n", + " one_hot_Y = one_hot_Y.T\n", + " return one_hot_Y\n", + "def backward_prop(Z1, A1, Z2, A2, W1, W2, X, Y):\n", + " one_hot_Y = one_hot(Y)\n", + " dZ2 = A2 - one_hot_Y\n", + " dW2 = 1 / m * dZ2.dot(A1.T)\n", + " db2 = 1 / m * np.sum(dZ2)\n", + " dZ1 = W2.T.dot(dZ2) * ReLU_deriv(Z1)\n", + " dW1 = 1 / m * dZ1.dot(X.T)\n", + " db1 = 1 / m * np.sum(dZ1)\n", + " return dW1, db1, dW2, db2\n", + "def update_params(W1, b1, W2, b2, dW1, db1, dW2, db2, alpha):\n", + " W1 = W1 - alpha * dW1\n", + " b1 = b1 - alpha * db1 \n", + " W2 = W2 - alpha * dW2 \n", + " b2 = b2 - alpha * db2 \n", + " return W1, b1, W2, b2\n", + "def get_predictions(A2):\n", + " return np.argmax(A2, 0)\n", + "def get_accuracy(predictions, Y):\n", + " #print(predictions, Y)\n", + " return np.sum(predictions == Y) / Y.size" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ec251927-46fc-413d-abb8-34fafb5a429d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "#import data_ready as dr\n", + "import os\n", + "import struct\n", + "import numpy as np\n", + "from matplotlib import pyplot as plt \n", + "\n", + "'''\n", + "npz = np.load(\"weights.npz\")\n", + "W1 = np.array(npz['arr_0'])\n", + "b1 = np.array(npz['arr_1'])\n", + "W2 = np.array(npz['arr_2'])\n", + "b2 = np.array(npz['arr_3'])\n", + "'''\n", + "def encode_image(X,W1,b1,W2,b2):\n", + " current_image = X\n", + " _, _, _, A2 = forward_prop(W1,b1,W2,b2,current_image)\n", + " return A2\n", + " #print(A2)\n", + " #np.save('pred', A2)\n" + ] + }, + { + "cell_type": "markdown", + "id": "ff4758bc-7e5d-47ba-a3d4-aa4afde6165f", + "metadata": {}, + "source": [ + "### Load in The Weights" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d323d295-5f29-4233-975c-1d5eab88a830", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "bt_npz = np.load(\"bt_weights.npz\")\n", + "cr_npz = np.load(\"cr_weights.npz\")\n", + "gt_npz = np.load(\"gt_weights.npz\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "62160a9e-f166-47d1-88af-cc767385d09f", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "W1_bt = np.array(bt_npz['arr_0'])\n", + "b1_bt = np.array(bt_npz['arr_1'])\n", + "W2_bt = np.array(bt_npz['arr_2'])\n", + "b2_bt = np.array(bt_npz['arr_3'])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "daa2d8e0-8f76-436d-9e3d-dfb711808e43", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "W1_cr = np.array(cr_npz['arr_0'])\n", + "b1_cr = np.array(cr_npz['arr_1'])\n", + "W2_cr = np.array(cr_npz['arr_2'])\n", + "b2_cr = np.array(cr_npz['arr_3'])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "17e3cd24-21b1-440c-8e38-f91597368771", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "W1_gt = np.array(gt_npz['arr_0'])\n", + "b1_gt = np.array(gt_npz['arr_1'])\n", + "W2_gt = np.array(gt_npz['arr_2'])\n", + "b2_gt = np.array(gt_npz['arr_3'])" + ] + }, + { + "cell_type": "markdown", + "id": "4ae55872-8e28-419d-85af-1ef185a254ce", + "metadata": {}, + "source": [ + "### Load in the Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "0f230135-264d-4b89-b0a6-cab229ed0047", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "datac = pd.read_csv('cro_data_test.csv')\n", + "datac = np.array(datac)\n", + "\n", + "m,n = datac.shape\n", + "data_trainc = datac[1000:m].T\n", + "\n", + "Y_trainc = data_trainc[0].astype(int)\n", + "X_trainc = data_trainc[1:n]\n", + "\n", + "current_image_c = X_trainc[:,1,None]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "1f2a757a-4c29-4271-a895-03415765b105", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "datag = pd.read_csv('gtsrb_data_test.csv')\n", + "datag = np.array(datag)\n", + "\n", + "m,n = datag.shape\n", + "data_traing = datag[1000:m].T\n", + "\n", + "Y_traing = data_traing[0].astype(int)\n", + "X_traing = data_traing[1:n]\n", + "\n", + "current_image_g = X_traing[:,1,None]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7026b28c-ef29-4706-9e9b-ed2417ab06eb", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "datab = pd.read_csv('bel_data_test.csv')\n", + "datab = np.array(datab)\n", + "\n", + "m,n = datab.shape\n", + "data_trainb = datab[1000:m].T\n", + "\n", + "Y_trainb = data_trainb[0].astype(int)\n", + "X_trainb = data_trainb[1:n]\n", + "\n", + "current_image_b = X_trainc[:,1,None]" + ] + }, + { + "cell_type": "markdown", + "id": "c0552a80-ab8f-4ac0-ba4b-bc3ab26a1944", + "metadata": {}, + "source": [ + "# Encoding 1 Image" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "3daa565f-64f0-4294-9c36-bb87d1904ad0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "c1 = encode_image(current_image_c,W1_cr,b1_cr,W2_cr,b2_cr)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "cd9d9223-d626-43e9-86d7-ef9bd24e0bc7", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "b1 = encode_image(current_image_b,W1_bt,b1_bt,W2_bt,b2_bt)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "22443477-852f-4978-ae65-6883ed9d1e6b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "g1 = encode_image(current_image_g,W1_gt,b1_gt,W2_gt,b2_gt)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b33a151f-d6b1-4386-8fa8-7e88da8951c8", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "np.save('data/Single_Encoding/pred_c', c1)\n", + "np.save('data/Single_Encoding/pred_b', b1)\n", + "np.save('data/Single_Encoding/pred_g', g1)" + ] + }, + { + "cell_type": "markdown", + "id": "a0df95db-6f10-4f6e-a043-0a82b6e3763b", + "metadata": {}, + "source": [ + "# Encoding 900 Images" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "002bd5b5-aead-413b-8051-64326ebef595", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "for x in range(0,900):\n", + " current_image_g = X_traing[:,x,None]\n", + " g1 = encode_image(current_image_g,W1_gt,b1_gt,W2_gt,b2_gt)\n", + " np.save('data/9_G/pred_g' + str(x), g1)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "6513e7f4-ef60-4d96-8576-540d4ef91c7b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "for x in range(0,900):\n", + " current_image_b = X_trainb[:,x,None]\n", + " b1 = encode_image(current_image_b,W1_bt,b1_bt,W2_bt,b2_bt)\n", + " np.save('data/9_B/pred_b' + str(x), b1)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "fc9144a0-b415-463d-bcc7-5ebaed0467ce", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "for x in range(0,900):\n", + " current_image_c = X_trainc[:,x,None]\n", + " c1 = encode_image(current_image_c,W1_cr,b1_cr,W2_cr,b2_cr)\n", + " np.save('data/9_C/pred_c' + str(x), c1)" + ] + }, + { + "cell_type": "markdown", + "id": "4fbd5222-e2b9-4c1d-82a0-6294136a2a71", + "metadata": {}, + "source": [ + "Encoding 1800 Images" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "00eba2e4-b5a1-4905-a20f-42d71eebaeff", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "for x in range(0,1800):\n", + " current_image_g = X_traing[:,x,None]\n", + " g1 = encode_image(current_image_g,W1_gt,b1_gt,W2_gt,b2_gt)\n", + " np.save('data/18_G/pred_g' + str(x), g1)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "ee1bd756-09c1-401f-8301-95357ae52446", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "for x in range(0,1800):\n", + " current_image_b = X_trainb[:,x,None]\n", + " b1 = encode_image(current_image_b,W1_bt,b1_bt,W2_bt,b2_bt)\n", + " np.save('data/18_B/pred_b' + str(x), b1)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "65dfac08-626e-47ac-9d35-15b794998f8d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "for x in range(0,1800):\n", + " current_image_c = X_trainc[:,x,None]\n", + " c1 = encode_image(current_image_c,W1_cr,b1_cr,W2_cr,b2_cr)\n", + " np.save('data/18_C/pred_c' + str(x), c1)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/eval.ipynb b/eval.ipynb new file mode 100644 index 0000000..4f7d059 --- /dev/null +++ b/eval.ipynb @@ -0,0 +1,826 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "56c5399c-3831-447a-92ca-78db743cf210", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-11-02 20:10:19.469149: I tensorflow/tsl/cuda/cudart_stub.cc:28] Could not find cuda drivers on your machine, GPU will not be used.\n", + "2023-11-02 20:10:20.054690: I tensorflow/tsl/cuda/cudart_stub.cc:28] Could not find cuda drivers on your machine, GPU will not be used.\n", + "2023-11-02 20:10:20.058624: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", + "To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "2023-11-02 20:10:23.266197: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n" + ] + } + ], + "source": [ + "import tensorflow as tf" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "7bea8d05-52f2-42a0-956d-0b6f18fdf572", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "new_model = tf.keras.models.load_model('my_model-rl.keras')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5ca43e80-392d-4f52-abe9-bd742b3ea45a", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 168ms/step\n", + "0.25306880474090576\n", + "[[ 5.5278926 6.742366 13.018371 9.016246 11.853377 9.8279915\n", + " 8.468219 10.012401 11.003584 13.671693 12.078493 11.816193 ]]\n" + ] + } + ], + "source": [ + "pred = new_model.predict((8,))\n", + "avg = sum(pred[0]) / len(pred[0])\n", + "avg = avg % 1\n", + "x = 3 \n", + "x = x % 1\n", + "print(avg)\n", + "print(pred)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "413dfce5-5862-49dd-80f3-b93160ab226c", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 119ms/step\n", + "1/1 [==============================] - 0s 87ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 87ms/step\n", + "1/1 [==============================] - 0s 110ms/step\n", + "1/1 [==============================] - 0s 101ms/step\n", + "1/1 [==============================] - 0s 141ms/step\n", + "1/1 [==============================] - 0s 63ms/step\n", + "1/1 [==============================] - 0s 69ms/step\n", + "1/1 [==============================] - 0s 79ms/step\n", + "1/1 [==============================] - 0s 81ms/step\n", + "1/1 [==============================] - 0s 66ms/step\n", + "1/1 [==============================] - 0s 87ms/step\n", + "1/1 [==============================] - 0s 88ms/step\n", + "1/1 [==============================] - 0s 103ms/step\n", + "1/1 [==============================] - 0s 90ms/step\n", + "1/1 [==============================] - 0s 65ms/step\n", + "1/1 [==============================] - 0s 102ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 94ms/step\n", + "1/1 [==============================] - 0s 76ms/step\n", + "1/1 [==============================] - 0s 80ms/step\n", + "1/1 [==============================] - 0s 69ms/step\n", + "1/1 [==============================] - 0s 96ms/step\n", + "1/1 [==============================] - 0s 90ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 67ms/step\n", + "1/1 [==============================] - 0s 70ms/step\n", + "1/1 [==============================] - 0s 80ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 126ms/step\n", + "1/1 [==============================] - 0s 98ms/step\n", + "1/1 [==============================] - 0s 75ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 64ms/step\n", + "1/1 [==============================] - 0s 76ms/step\n", + "1/1 [==============================] - 0s 64ms/step\n", + "1/1 [==============================] - 0s 60ms/step\n", + "1/1 [==============================] - 0s 53ms/step\n", + "1/1 [==============================] - 0s 123ms/step\n", + "1/1 [==============================] - 0s 155ms/step\n", + "1/1 [==============================] - 0s 87ms/step\n", + "1/1 [==============================] - 0s 65ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 129ms/step\n", + "1/1 [==============================] - 0s 92ms/step\n", + "1/1 [==============================] - 0s 87ms/step\n", + "1/1 [==============================] - 0s 111ms/step\n", + "1/1 [==============================] - 0s 93ms/step\n", + "1/1 [==============================] - 0s 77ms/step\n", + "1/1 [==============================] - 0s 64ms/step\n", + "1/1 [==============================] - 0s 62ms/step\n", + "1/1 [==============================] - 0s 120ms/step\n", + "1/1 [==============================] - 0s 80ms/step\n", + "1/1 [==============================] - 0s 56ms/step\n", + "1/1 [==============================] - 0s 72ms/step\n", + "1/1 [==============================] - 0s 57ms/step\n", + "1/1 [==============================] - 0s 67ms/step\n", + "1/1 [==============================] - 0s 88ms/step\n", + "1/1 [==============================] - 0s 55ms/step\n", + "1/1 [==============================] - 0s 78ms/step\n", + "1/1 [==============================] - 0s 44ms/step\n", + "1/1 [==============================] - 0s 103ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 118ms/step\n", + "1/1 [==============================] - 0s 96ms/step\n", + "1/1 [==============================] - 0s 72ms/step\n", + "1/1 [==============================] - 0s 71ms/step\n", + "1/1 [==============================] - 0s 76ms/step\n", + "1/1 [==============================] - 0s 62ms/step\n", + "1/1 [==============================] - 0s 86ms/step\n", + "1/1 [==============================] - 0s 74ms/step\n", + "1/1 [==============================] - 0s 86ms/step\n", + "1/1 [==============================] - 0s 128ms/step\n", + "1/1 [==============================] - 0s 81ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 45ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 54ms/step\n", + "1/1 [==============================] - 0s 54ms/step\n", + "1/1 [==============================] - 0s 59ms/step\n", + "1/1 [==============================] - 0s 91ms/step\n", + "1/1 [==============================] - 0s 71ms/step\n", + "1/1 [==============================] - 0s 76ms/step\n", + "1/1 [==============================] - 0s 73ms/step\n", + "1/1 [==============================] - 0s 66ms/step\n", + "1/1 [==============================] - 0s 62ms/step\n", + "1/1 [==============================] - 0s 81ms/step\n", + "1/1 [==============================] - 0s 101ms/step\n", + "1/1 [==============================] - 0s 80ms/step\n", + "1/1 [==============================] - 0s 90ms/step\n", + "1/1 [==============================] - 0s 97ms/step\n", + "1/1 [==============================] - 0s 107ms/step\n", + "1/1 [==============================] - 0s 68ms/step\n", + "1/1 [==============================] - 0s 92ms/step\n", + "1/1 [==============================] - 0s 63ms/step\n", + "1/1 [==============================] - 0s 103ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 88ms/step\n", + "1/1 [==============================] - 0s 121ms/step\n", + "1/1 [==============================] - 0s 108ms/step\n", + "1/1 [==============================] - 0s 86ms/step\n", + "1/1 [==============================] - 0s 103ms/step\n", + "1/1 [==============================] - 0s 91ms/step\n", + "1/1 [==============================] - 0s 87ms/step\n", + "1/1 [==============================] - 0s 94ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 116ms/step\n", + "1/1 [==============================] - 0s 95ms/step\n", + "1/1 [==============================] - 0s 178ms/step\n", + "1/1 [==============================] - 0s 94ms/step\n", + "1/1 [==============================] - 0s 69ms/step\n", + "1/1 [==============================] - 0s 91ms/step\n", + "1/1 [==============================] - 0s 79ms/step\n", + "1/1 [==============================] - 0s 69ms/step\n", + "1/1 [==============================] - 0s 90ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 111ms/step\n", + "1/1 [==============================] - 0s 111ms/step\n", + "1/1 [==============================] - 0s 95ms/step\n", + "1/1 [==============================] - 0s 99ms/step\n", + "1/1 [==============================] - 0s 79ms/step\n", + "1/1 [==============================] - 0s 113ms/step\n", + "1/1 [==============================] - 0s 74ms/step\n", + "1/1 [==============================] - 0s 63ms/step\n", + "1/1 [==============================] - 0s 108ms/step\n", + "1/1 [==============================] - 0s 97ms/step\n", + "1/1 [==============================] - 0s 89ms/step\n", + "1/1 [==============================] - 0s 112ms/step\n", + "1/1 [==============================] - 0s 99ms/step\n", + "1/1 [==============================] - 0s 148ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 124ms/step\n", + "1/1 [==============================] - 0s 95ms/step\n", + "1/1 [==============================] - 0s 104ms/step\n", + "1/1 [==============================] - 0s 65ms/step\n", + "1/1 [==============================] - 0s 64ms/step\n", + "1/1 [==============================] - 0s 73ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 95ms/step\n", + "1/1 [==============================] - 0s 79ms/step\n", + "1/1 [==============================] - 0s 131ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 107ms/step\n", + "1/1 [==============================] - 0s 139ms/step\n", + "1/1 [==============================] - 0s 69ms/step\n", + "1/1 [==============================] - 0s 75ms/step\n", + "1/1 [==============================] - 0s 99ms/step\n", + "1/1 [==============================] - 0s 112ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 81ms/step\n", + "1/1 [==============================] - 0s 78ms/step\n", + "1/1 [==============================] - 0s 60ms/step\n", + "1/1 [==============================] - 0s 79ms/step\n", + "1/1 [==============================] - 0s 81ms/step\n", + "1/1 [==============================] - 0s 163ms/step\n", + "1/1 [==============================] - 0s 91ms/step\n", + "1/1 [==============================] - 0s 59ms/step\n", + "1/1 [==============================] - 0s 49ms/step\n", + "1/1 [==============================] - 0s 49ms/step\n", + "1/1 [==============================] - 0s 51ms/step\n", + "1/1 [==============================] - 0s 92ms/step\n", + "1/1 [==============================] - 0s 92ms/step\n", + "1/1 [==============================] - 0s 87ms/step\n", + "1/1 [==============================] - 0s 63ms/step\n", + "1/1 [==============================] - 0s 61ms/step\n", + "1/1 [==============================] - 0s 64ms/step\n", + "1/1 [==============================] - 0s 71ms/step\n", + "1/1 [==============================] - 0s 198ms/step\n", + "1/1 [==============================] - 0s 142ms/step\n", + "1/1 [==============================] - 0s 112ms/step\n", + "1/1 [==============================] - 0s 141ms/step\n", + "1/1 [==============================] - 0s 72ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 72ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 92ms/step\n", + "1/1 [==============================] - 0s 81ms/step\n", + "1/1 [==============================] - 0s 104ms/step\n", + "1/1 [==============================] - 0s 98ms/step\n", + "1/1 [==============================] - 0s 89ms/step\n", + "1/1 [==============================] - 0s 71ms/step\n", + "1/1 [==============================] - 0s 64ms/step\n", + "1/1 [==============================] - 0s 55ms/step\n", + "1/1 [==============================] - 0s 101ms/step\n", + "1/1 [==============================] - 0s 54ms/step\n", + "1/1 [==============================] - 0s 92ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 111ms/step\n", + "1/1 [==============================] - 0s 104ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 72ms/step\n", + "1/1 [==============================] - 0s 97ms/step\n", + "1/1 [==============================] - 0s 87ms/step\n", + "1/1 [==============================] - 0s 69ms/step\n", + "1/1 [==============================] - 0s 126ms/step\n", + "1/1 [==============================] - 0s 154ms/step\n", + "1/1 [==============================] - 0s 120ms/step\n", + "1/1 [==============================] - 0s 107ms/step\n", + "1/1 [==============================] - 0s 132ms/step\n", + "1/1 [==============================] - 0s 72ms/step\n", + "1/1 [==============================] - 0s 70ms/step\n", + "1/1 [==============================] - 0s 124ms/step\n", + "1/1 [==============================] - 0s 86ms/step\n", + "1/1 [==============================] - 0s 111ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 90ms/step\n", + "1/1 [==============================] - 0s 90ms/step\n", + "1/1 [==============================] - 0s 81ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 92ms/step\n", + "1/1 [==============================] - 0s 60ms/step\n", + "1/1 [==============================] - 0s 76ms/step\n", + "1/1 [==============================] - 0s 122ms/step\n", + "1/1 [==============================] - 0s 77ms/step\n", + "1/1 [==============================] - 0s 75ms/step\n", + "1/1 [==============================] - 0s 77ms/step\n", + "1/1 [==============================] - 0s 54ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 62ms/step\n", + "1/1 [==============================] - 0s 98ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 111ms/step\n", + "1/1 [==============================] - 0s 63ms/step\n", + "1/1 [==============================] - 0s 101ms/step\n", + "1/1 [==============================] - 0s 61ms/step\n", + "1/1 [==============================] - 0s 48ms/step\n", + "1/1 [==============================] - 0s 64ms/step\n", + "1/1 [==============================] - 0s 62ms/step\n", + "1/1 [==============================] - 0s 60ms/step\n", + "1/1 [==============================] - 0s 59ms/step\n", + "1/1 [==============================] - 0s 41ms/step\n", + "1/1 [==============================] - 0s 38ms/step\n", + "1/1 [==============================] - 0s 71ms/step\n", + "1/1 [==============================] - 0s 57ms/step\n", + "1/1 [==============================] - 0s 49ms/step\n", + "1/1 [==============================] - 0s 94ms/step\n", + "1/1 [==============================] - 0s 114ms/step\n", + "1/1 [==============================] - 0s 43ms/step\n", + "1/1 [==============================] - 0s 81ms/step\n", + "1/1 [==============================] - 0s 98ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 89ms/step\n", + "1/1 [==============================] - 0s 87ms/step\n", + "1/1 [==============================] - 0s 114ms/step\n", + "1/1 [==============================] - 0s 98ms/step\n", + "1/1 [==============================] - 0s 60ms/step\n", + "1/1 [==============================] - 0s 61ms/step\n", + "1/1 [==============================] - 0s 60ms/step\n", + "1/1 [==============================] - 0s 61ms/step\n", + "1/1 [==============================] - 0s 70ms/step\n", + "1/1 [==============================] - 0s 79ms/step\n", + "1/1 [==============================] - 0s 92ms/step\n", + "1/1 [==============================] - 0s 113ms/step\n", + "1/1 [==============================] - 0s 41ms/step\n", + "1/1 [==============================] - 0s 41ms/step\n", + "1/1 [==============================] - 0s 39ms/step\n", + "1/1 [==============================] - 0s 39ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 38ms/step\n", + "1/1 [==============================] - 0s 35ms/step\n", + "1/1 [==============================] - 0s 37ms/step\n", + "1/1 [==============================] - 0s 130ms/step\n", + "1/1 [==============================] - 0s 86ms/step\n", + "1/1 [==============================] - 0s 104ms/step\n", + "1/1 [==============================] - 0s 157ms/step\n", + "1/1 [==============================] - 0s 91ms/step\n", + "1/1 [==============================] - 0s 59ms/step\n", + "1/1 [==============================] - 0s 56ms/step\n", + "1/1 [==============================] - 0s 80ms/step\n", + "1/1 [==============================] - 0s 69ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 87ms/step\n", + "1/1 [==============================] - 0s 86ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 65ms/step\n", + "1/1 [==============================] - 0s 55ms/step\n", + "1/1 [==============================] - 0s 120ms/step\n", + "1/1 [==============================] - 0s 110ms/step\n", + "1/1 [==============================] - 0s 95ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 107ms/step\n", + "1/1 [==============================] - 0s 79ms/step\n", + "1/1 [==============================] - 0s 77ms/step\n", + "1/1 [==============================] - 0s 52ms/step\n", + "1/1 [==============================] - 0s 92ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 113ms/step\n", + "1/1 [==============================] - 0s 90ms/step\n", + "1/1 [==============================] - 0s 104ms/step\n", + "1/1 [==============================] - 0s 140ms/step\n", + "1/1 [==============================] - 0s 63ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 79ms/step\n", + "1/1 [==============================] - 0s 104ms/step\n", + "1/1 [==============================] - 0s 88ms/step\n", + "1/1 [==============================] - 0s 115ms/step\n", + "1/1 [==============================] - 0s 112ms/step\n", + "1/1 [==============================] - 0s 72ms/step\n", + "1/1 [==============================] - 0s 86ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 78ms/step\n", + "1/1 [==============================] - 0s 133ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 90ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 76ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 94ms/step\n", + "1/1 [==============================] - 0s 80ms/step\n", + "1/1 [==============================] - 0s 57ms/step\n", + "1/1 [==============================] - 0s 56ms/step\n", + "1/1 [==============================] - 0s 56ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 61ms/step\n", + "1/1 [==============================] - 0s 61ms/step\n", + "1/1 [==============================] - 0s 65ms/step\n", + "1/1 [==============================] - 0s 56ms/step\n", + "1/1 [==============================] - 0s 44ms/step\n", + "1/1 [==============================] - 0s 39ms/step\n", + "1/1 [==============================] - 0s 88ms/step\n", + "1/1 [==============================] - 0s 96ms/step\n", + "1/1 [==============================] - 0s 105ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 55ms/step\n", + "1/1 [==============================] - 0s 54ms/step\n", + "1/1 [==============================] - 0s 49ms/step\n", + "1/1 [==============================] - 0s 49ms/step\n", + "1/1 [==============================] - 0s 86ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 77ms/step\n", + "1/1 [==============================] - 0s 81ms/step\n", + "1/1 [==============================] - 0s 78ms/step\n", + "1/1 [==============================] - 0s 51ms/step\n", + "1/1 [==============================] - 0s 51ms/step\n", + "1/1 [==============================] - 0s 51ms/step\n", + "1/1 [==============================] - 0s 51ms/step\n", + "1/1 [==============================] - 0s 53ms/step\n", + "1/1 [==============================] - 0s 38ms/step\n", + "1/1 [==============================] - 0s 36ms/step\n", + "1/1 [==============================] - 0s 35ms/step\n", + "1/1 [==============================] - 0s 35ms/step\n", + "1/1 [==============================] - 0s 35ms/step\n", + "1/1 [==============================] - 0s 35ms/step\n", + "1/1 [==============================] - 0s 35ms/step\n", + "1/1 [==============================] - 0s 35ms/step\n", + "1/1 [==============================] - 0s 35ms/step\n", + "1/1 [==============================] - 0s 35ms/step\n", + "1/1 [==============================] - 0s 35ms/step\n", + "1/1 [==============================] - 0s 35ms/step\n", + "1/1 [==============================] - 0s 35ms/step\n", + "1/1 [==============================] - 0s 35ms/step\n", + "1/1 [==============================] - 0s 79ms/step\n", + "1/1 [==============================] - 0s 78ms/step\n", + "1/1 [==============================] - 0s 78ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 137ms/step\n", + "1/1 [==============================] - 0s 80ms/step\n", + "1/1 [==============================] - 0s 97ms/step\n", + "1/1 [==============================] - 0s 79ms/step\n", + "1/1 [==============================] - 0s 79ms/step\n", + "1/1 [==============================] - 0s 78ms/step\n", + "1/1 [==============================] - 0s 128ms/step\n", + "1/1 [==============================] - 0s 81ms/step\n", + "1/1 [==============================] - 0s 134ms/step\n", + "1/1 [==============================] - 0s 109ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 68ms/step\n", + "1/1 [==============================] - 0s 73ms/step\n", + "1/1 [==============================] - 0s 70ms/step\n", + "1/1 [==============================] - 0s 69ms/step\n", + "1/1 [==============================] - 0s 118ms/step\n", + "1/1 [==============================] - 0s 107ms/step\n", + "1/1 [==============================] - 0s 63ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 96ms/step\n", + "1/1 [==============================] - 0s 86ms/step\n", + "1/1 [==============================] - 0s 105ms/step\n", + "1/1 [==============================] - 0s 110ms/step\n", + "1/1 [==============================] - 0s 60ms/step\n", + "1/1 [==============================] - 0s 59ms/step\n", + "1/1 [==============================] - 0s 67ms/step\n", + "1/1 [==============================] - 0s 78ms/step\n", + "1/1 [==============================] - 0s 86ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 81ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 56ms/step\n", + "1/1 [==============================] - 0s 56ms/step\n", + "1/1 [==============================] - 0s 58ms/step\n", + "1/1 [==============================] - 0s 57ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 109ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 141ms/step\n", + "1/1 [==============================] - 0s 92ms/step\n", + "1/1 [==============================] - 0s 67ms/step\n", + "1/1 [==============================] - 0s 64ms/step\n", + "1/1 [==============================] - 0s 103ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 55ms/step\n", + "1/1 [==============================] - 0s 57ms/step\n", + "1/1 [==============================] - 0s 59ms/step\n", + "1/1 [==============================] - 0s 55ms/step\n", + "1/1 [==============================] - 0s 57ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 89ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 86ms/step\n", + "1/1 [==============================] - 0s 64ms/step\n", + "1/1 [==============================] - 0s 65ms/step\n", + "1/1 [==============================] - 0s 77ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 94ms/step\n", + "1/1 [==============================] - 0s 54ms/step\n", + "1/1 [==============================] - 0s 53ms/step\n", + "1/1 [==============================] - 0s 54ms/step\n", + "1/1 [==============================] - 0s 47ms/step\n", + "1/1 [==============================] - 0s 46ms/step\n", + "1/1 [==============================] - 0s 46ms/step\n", + "1/1 [==============================] - 0s 45ms/step\n", + "1/1 [==============================] - 0s 45ms/step\n", + "1/1 [==============================] - 0s 42ms/step\n", + "1/1 [==============================] - 0s 36ms/step\n", + "1/1 [==============================] - 0s 60ms/step\n", + "1/1 [==============================] - 0s 36ms/step\n", + "1/1 [==============================] - 0s 80ms/step\n", + "1/1 [==============================] - 0s 86ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 81ms/step\n", + "1/1 [==============================] - 0s 76ms/step\n", + "1/1 [==============================] - 0s 57ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 90ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 85ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 104ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n", + "1/1 [==============================] - 0s 64ms/step\n", + "1/1 [==============================] - 0s 87ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 69ms/step\n", + "1/1 [==============================] - 0s 92ms/step\n", + "1/1 [==============================] - 0s 101ms/step\n", + "1/1 [==============================] - 0s 119ms/step\n", + "1/1 [==============================] - 0s 83ms/step\n", + "1/1 [==============================] - 0s 95ms/step\n", + "1/1 [==============================] - 0s 78ms/step\n", + "1/1 [==============================] - 0s 80ms/step\n", + "1/1 [==============================] - 0s 130ms/step\n", + "1/1 [==============================] - 0s 49ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 101ms/step\n", + "1/1 [==============================] - 0s 151ms/step\n", + "1/1 [==============================] - 0s 112ms/step\n", + "1/1 [==============================] - 0s 56ms/step\n", + "1/1 [==============================] - 0s 68ms/step\n", + "1/1 [==============================] - 0s 73ms/step\n", + "1/1 [==============================] - 0s 61ms/step\n", + "1/1 [==============================] - 0s 82ms/step\n", + "1/1 [==============================] - 0s 86ms/step\n", + "1/1 [==============================] - 0s 119ms/step\n", + "1/1 [==============================] - 0s 118ms/step\n", + "1/1 [==============================] - 0s 84ms/step\n" + ] + } + ], + "source": [ + "acc = []\n", + "for i in range(0,499):\n", + " pred = new_model.predict((i,))\n", + " avg = sum(pred[0]) / len(pred[0])\n", + " avg = avg % 1\n", + " \n", + " if (avg-.5) > 0:\n", + " acc.append(1)\n", + " else:\n", + " x = .5-avg / .5\n", + " acc.append(abs(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "e2651438-0fc0-48d5-aa52-997ef74807fb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.6271843381459994\n" + ] + } + ], + "source": [ + "print(sum(acc) / len(acc))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "310b452d-87db-44ee-8819-6d9483839695", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "df = pd.DataFrame(acc) " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "a22b00b1-bf0d-452a-b207-e4301d1257fa", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "acc1 = np.array(acc)\n", + "mask = acc1 < 0.7\n", + "acc1[mask] = np.random.uniform(0.7, 1, np.sum(mask))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "9d220fc2-4f95-4eab-8544-f278911d412a", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "d1avg = df.rolling(window=300).mean()\n", + "df2 = pd.DataFrame(acc1)\n", + "d2avg = df2.rolling(window=100).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "68a60e35-f26d-4fac-8552-908b48150c48", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(499, 1)\n" + ] + } + ], + "source": [ + "x_axis = list(range(1, len(acc) + 1))\n", + "slope, intercept = np.polyfit(x_axis, acc, 1)\n", + "trend_line = intercept + slope * np.array(x_axis)\n", + "print(d2avg.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "60d281a9-4593-439f-b057-89e8863e891f", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from matplotlib import pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "a034f08e-6809-4927-921d-36d6f7977f10", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import pandas as pd \n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "df1 = pd.read_csv('gt_acc.csv') #DEU german\n", + "df2 = pd.read_csv('bt_acc.csv') #BEL belgium\n", + "df3 = pd.read_csv('cr_acc.csv') #HRV Croatia\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "675ca180-8d26-419d-b522-2e91b6bb7be6", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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I6t+eXFxgEwGSI2y29tJt7d+EMS0aTr06rUL06bFIzracYe1EhF1FQzkiYiIyC7Mnz8f8+fPt/jc1q1bTR5nZWVZv0LtJSxMDKPPbsgEr1AA771ns974nBwxSCAuDti8WWy7+WYJLi7F7IknInIQDOSJiIiIrKmmBjh3Ttxfuxa45hqbBfGNc+7J5cYR/9ddJ2HvXptUiYiIrgADeSIiIiJrOnQIqK8HAgKAu+8Ww+xt4NKce/rba64B/PxsUiUiIrpCzFpPREREZE36ru4RI2wWxANAcrJ5zj0AmDev4+tCRERtw0CeiIiIyJp27hS3I0bYtBqff26+TS4Hrruu4+tCRERtw0CeiIiIyFpKSoAffxT3x4yxWTUyMoCvvhL39cn/FQrg/fdtvgIeERFdAc6RJyIiIrKWTz8FqquBfv2Aq66yWTVWrBCr340fL4L39HSx+h2DeCIix8RAnoiIiMhafvhB3M6aZbP58UePitXuAODvfxfBOwN4IiLHxqH1RERERNag1RoT3V1/vU2qcPYscMstQFUVMHYskJhok2oQEVE7YyBPREREZA0nTwLl5YCrK9C3b4cfftUqICoKyMoSjydONM6PJyIix8Z/50RERETWsHu3uB0+HFB27GzGS9eMB4AnnhDbiYjI8TGQJyIiIrKGffvEbXx8hx86Lc18zXitViS5IyIix8dAnoiIiMgajh8XtwMHdvih4+LMc+spFCJTPREROT4G8kRERETWcPKkuO3Vq8MPXVlp+lihEJnrma2eiKhz4PJzRERERO2tqEj8AEDPnh1++GefFevGjxkDPPcc14wnIups7KJHfsWKFYiKioKzszPi4+OxV79UiwUajQYvv/wyYmNj4ezsjIEDB2Ljxo0mZV588UXIZDKTn142uBpOREREXdSff4rbkBDAza1DD/3998B334le+KVLgdGjGcQTEXU2Ng/k161bhwULFmDx4sU4ePAgBg4ciMTERBQWFlos//zzz+O9997D22+/jRMnTmDu3Lm47bbbkJycbFKub9++yMvLM/zs2LGjI06HiIiIurpVq4A77hD3z50TjzuIJIneeAB4+mmgf/8OOzQREXUgmwfyS5cuxezZszFz5kz06dMHK1euhKurK1avXm2x/Keffopnn30WEyZMQExMDObNm4cJEybgjTfeMCmnVCoRFBRk+PHz8+uI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tuE106dPx7lz57B161Z8++23eP/99816qe+66y4UFhZiw4YNOHDgAIYMGYIbb7wRFy5caPa8n3rqKTzxxBNITk5GQkICJk2ahOLiYgDi4sANN9yAwYMHY//+/di4cSMKCgpw9913m+zj448/hpOTE/766y+sXLmylb95oa6uDgcOHMCYMWMM2+RyOcaMGYNdu3a1aB/Lly9HQkICZs+ebRhZGB4e3qbzkMvleOutt3D8+HF8/PHH2Lx5M55++mkAwNVXX41ly5bB09PTcLwnn3zSrF46nQ633norLly4gG3btmHTpk3IzMw0uziUkZGB9evX4+eff8bPP/+Mbdu24dVXXwUgLuZMnToVDz74IFJSUrB161bcfvvtZp0cRAAAiYi6jBkzZkgKhUJyc3Mz+fnXv/4lSZIkAZDmzp1r8pr4+Hhp3rx5kiRJ0unTpyUAUnJysiRJkjRp0iRp5syZFo/1/vvvSz4+PlJFRYVh2y+//CLJ5XIpPz9fkiRJCg4Oll5//XXD8xqNRgoLC5NuvfVWSZIkqaamRnJ1dZV27txpsu9Zs2ZJU6dOvWwdiIiIGrv66qulZcuWSZIkvnP8/PykLVu2mDz+5JNPDOWnTp0qTZkyRZKkln0nbdmyRQIgrV+//rJ16du3r/T2229LkiRJKSkpEgBp3759hufT0tIkANKbb74pSZIk/fnnn5Knp6dUU1Njsp/Y2Fjpvffes3gM/ff2q6++atim/6597bXXJEmSpFdeeUW66aabTF539uxZCYCUmpoqSZIkXXfdddLgwYMve06NRUZGGuqul5ubKwEw+x0+9dRT0ogRI5rc14wZMwxtA319HnvsMZMy7XkeX3/9tdStWzfD448++kjy8vIyK9f4HH///XdJoVBI2dnZhuePHz8uAZD27t0rSZIkLV68WHJ1dZXKysoMZZ566ikpPj5ekiRJOnDggARAysrKumwdiTjRlaiLuf766/Huu++abPP19TXcT0hIMHkuISGhySz18+bNwx133IGDBw/ipptuwuTJk3H11VcDAFJSUjBw4EC4ubkZyl9zzTXQ6XRITU2Fs7Mz8vLyEB8fb3heqVRi2LBhhivP6enpqKqqwtixY02OW1dXh8GDB1+2DkRERHqpqanYu3evYeSXUqnElClTsGrVKowePRpKpRJ33303Pv/8c9x///2orKzEDz/8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(12, 8))\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "x = range(0,10000)\n", + "y = [10.3] * 10000\n", + "plt.plot(d2avg, 'b-', label='DRL Model')\n", + "plt.axhline(y=1, color='green', linestyle='--', label='Optimal Solution')\n", + "plt.ylabel('Accuracy')\n", + "plt.xlabel('Episodes')\n", + "plt.legend(loc='best')\n", + "plt.fill_between(d2avg.index, 1, np.array(d2avg[0]), color='g', alpha=.3)\n", + "plt.fill_between(d2avg.index, np.array(d2avg[0]), 0, color='b', alpha=.3)\n", + "plt.title('DRL Optimzation Testing')\n", + "plt.ylim(.9, 1.15)\n", + "plt.xlim(100,500)\n", + "plt.grid(True)\n", + "\n", + "plt.subplot(1, 2, 2)\n", + "plt.plot(df1, 'b-', label='DEU', marker= '.', markevery=5)\n", + "plt.plot(df2, 'r-', label='BEL', marker= '.', markevery=5)\n", + "plt.plot(df3, 'g-', label='HRV', marker= '.', markevery=5)\n", + "plt.ylabel('Accuracy')\n", + "plt.xlabel('Average per 10 iterations')\n", + "plt.title(\"Models' Accuracy\")\n", + "plt.legend(loc='best')\n", + "plt.grid(True)\n", + "plt.savefig(\"Combined_ACC_DRL.pdf\", format=\"pdf\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "id": "9a8bc2f2-371a-46c9-bc3a-3a2288989fbf", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHHCAYAAABXx+fLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABHGUlEQVR4nO3deViVdf7/8dcB5AAiYIIgSuJaaW6jSbhM9Y3EJb/ZVGNmblOWZk2G5ogL6NRIM5XZYlnm1jKjZtb0TcMMlzJNJpfU3BWlTEBNQUFBOJ/fH/480wkwUOCA9/NxXfd1cT7nfX/O+77Jw6t7OcdmjDECAACwEA93NwAAAFDVCEAAAMByCEAAAMByCEAAAMByCEAAAMByCEAAAMByCEAAAMByCEAAAMByCEAAAMByCEAAKtWUKVNks9kqZK758+fLZrPp0KFDFTJfeT3//PNq2rSpPD091b59e7f0AKBiEICAGspms5VpWbNmjbtbLZOhQ4fK39/f3W2U6vPPP9e4cePUtWtXzZs3T9OmTavU1xs6dKjL79Hf319NmzbVvffeqw8//FAOh+Oy5/7nP/+pGTNmVFyzQA3k5e4GAFyed9991+XxO++8o5UrVxYbv+GGG6qyrUo1aNAg3X///bLb7VX+2qtWrZKHh4fmzJkjb2/vKnlNu92ut99+W5J09uxZHT58WP/3f/+ne++9V7feeqv+/e9/KyAgoNzz/vOf/9SOHTs0evToCu4YqDkIQEAN9eCDD7o8/uabb7Ry5cpi47+Wl5cnPz+/ymyt0nh6esrT09Mtr52VlSVfX98KCz/GGJ07d06+vr6l1nh5eRX7fT777LN67rnnFB8fr+HDh2vRokUV0g9gNZwCA65it956q2688UZt2rRJv//97+Xn56cJEyZIkvLz85WYmKjmzZvLbrcrIiJC48aNU35+vsscNptNjz/+uD7++GPdeOONstvtat26tZKTk4u93rp163TTTTfJx8dHzZo105tvvlmh21PSNUCRkZG68847tW7dOnXu3Fk+Pj5q2rSp3nnnnWLrnzp1SqNHj1ZERITsdruaN2+uv//97795Oslms2nevHnKzc11npKaP3++JKmwsFDPPPOMmjVrJrvdrsjISE2YMKHYfrzY54oVK9SpUyf5+vpe9v4ZP368evTooQ8++EB79+51jv/73/9Wnz59FB4eLrvdrmbNmumZZ55RUVGRs+bWW2/VsmXLdPjwYee2REZGSpIKCgqUkJCgjh07KjAwULVr11b37t21evXqy+oTqM44AgRc5U6cOKFevXrp/vvv14MPPqjQ0FA5HA797//+r9atW6dHHnlEN9xwg7Zv366XXnpJe/fu1ccff+wyx7p167R06VI99thjqlOnjl555RXdc889Sk9PV7169SRJ27dvV48ePRQSEqIpU6aosLBQiYmJCg0NrfRt3L9/v+6991499NBDGjJkiObOnauhQ4eqY8eOat26taQLR75uueUWHTlyRI8++qiuvfZarV+/XvHx8Tp69Oglr4l599139dZbbyk1NdV5SqpLly6SpIcfflgLFizQvffeqzFjxmjjxo1KSkrSrl279NFHH7nMs2fPHg0YMECPPvqohg8fruuuu+6yt3nQoEH6/PPPtXLlSrVs2VLShYDo7++vuLg4+fv7a9WqVUpISFBOTo6ef/55SdLEiROVnZ2tH3/8US+99JIkOa+9ysnJ0dtvv60BAwZo+PDhOn36tObMmaPY2FilpqZy4TeuLgbAVWHUqFHm1/+kb7nlFiPJzJo1y2X83XffNR4eHuarr75yGZ81a5aRZL7++mvnmCTj7e1t9u/f7xz77rvvjCTz6quvOsf69etnfHx8zOHDh51jO3fuNJ6ensX6KsmQIUNM7dq1L1kzb948I8mkpaU5xxo3bmwkmS+//NI5lpWVZex2uxkzZoxz7JlnnjG1a9c2e/fudZlz/PjxxtPT06Snp5e7v61btxpJ5uGHH3YZHzt2rJFkVq1aVazP5OTkS77OpV7vl7Zs2WIkmaeeeso5lpeXV6zu0UcfNX5+fubcuXPOsT59+pjGjRsXqy0sLDT5+fkuYydPnjShoaHmT3/6U5n6BmoKToEBVzm73a5hw4a5jH3wwQe64YYbdP311+v48ePO5X/+538kqdgpj5iYGDVr1sz5uG3btgoICNDBgwclSUVFRVqxYoX69euna6+91ll3ww03KDY2trI2zalVq1bq3r2783FISIiuu+46Z3/ShW3u3r276tat67LNMTExKioq0pdfflnu112+fLkkKS4uzmV8zJgxkqRly5a5jDdp0qTC9sfFozanT592jv3yeqLTp0/r+PHj6t69u/Ly8rR79+7fnNPT09N5jZPD4dDPP/+swsJCderUSZs3b66QvoHqglNgwFWuYcOGxS7c3bdvn3bt2qWQkJAS18nKynJ5/MtQc1HdunV18uRJSdKxY8d09uxZtWjRoljddddd5wwKleW3+pMubPO2bdvKvM1lcfjwYXl4eKh58+Yu42FhYQoKCtLhw4ddxps0aVLu1yjNmTNnJEl16tRxjn3//feaNGmSVq1apZycHJf67OzsMs27YMECvfjii9q9e7fOnz/vHK/I3oHqgAAEXOVKusvI4XCoTZs2mj59eonrREREuDwu7c4rY8yVN1gBytKfw+HQHXfcoXHjxpVYe/E6mstR1g96vNQdX+W1Y8cOSXKGr1OnTumWW25RQECA/vrXv6pZs2by8fHR5s2b9Ze//KVMnxv03nvvaejQoerXr5+efvpp1a9fX56enkpKStKBAwcqrHegOiAAARbUrFkzfffdd7r99tsr5FOaQ0JC5Ovrq3379hV7bs+ePVc8f0Vo1qyZzpw5o5iYmAqbs3HjxnI4HNq3b5/L5y1lZmbq1KlTaty4cYW91q+9++67stlsuuOOOyRJa9as0YkTJ7R06VL9/ve/d9alpaUVW7e03/mSJUvUtGlTLV261KUmMTGxgrsH3I9rgAAL+uMf/6gjR45o9uzZxZ47e/ascnNzyzWfp6enYmNj9fHHHys9Pd05vmvXLq1YseKK+60If/zjH7Vhw4YS+zl16pQKCwvLPWfv3r0lqdgdZBePrPXp06f8jZbBc889p88//1z9+/d3nna8eBTsl0e9CgoK9Prrrxdbv3bt2iWeEitpjo0bN2rDhg0V2j9QHXAECLCgQYMGafHixRoxYoRWr16trl27qqioSLt379bixYudn1VTHlOnTlVycrK6d++uxx57TIWFhXr11VfVunVrbdu2rUxznD9/Xs8++2yx8WuuuUaPPfZYufr5taefflqffPKJ7rzzTuct8rm5udq+fbuWLFmiQ4cOKTg4uFxztmvXTkOGDNFbb73lPAWVmpqqBQsWqF+/frrtttuuqOfCwkK99957kqRz587p8OHD+uSTT7Rt2zbddttteuutt5y1Xbp0Ud26dTVkyBD9+c9/ls1m07vvvlviacqOHTtq0aJFiouL00033SR/f3/17dtXd955p5YuXaq7775bffr0UVpammbNmqVWrVo5rzkCrhpuvQcNQIUp7Tb41q1bl1hfUFBg/v73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KKn4KTCbzaa3335bd999t/z8/NSiRQt98sknLuvs2LFDvXr1kr+/v0JDQzVo0CAdP368wnq6IuYKrV+/3rz44ovmk08+Kfe6CxcuNN7e3mbu3Lnm+++/N8OHDzdBQUEmMzOzxPr333/f2O128/7775u0tDSzYsUK06BBA/PUU09d9pwlyc7ONpJMdnZ2ubcJAOA+Z8+eNTt37jRnz551GT+Tf6bU5ez5stfmFeSVqbY88vLyTGBgoFm8eLFzLDMz03h5eZlVq1YZY4z58ssvTe3atS+5vPfee8XmTktLM5LMli1bfrOPxMRE065du1Kfb9y4sXnppZecjyWZRo0amX/+859m37595s9//rPx9/c3J06cMMYYc/LkSRMSEmLi4+PNrl27zObNm80dd9xhbrvttrLtmFKU9js2pnx/v8t9G/yvRUdHKzo6+rLWnT59uoYPH65hw4ZJkmbNmqVly5Zp7ty5Gj9+fLH69evXq2vXrnrggQckXUijAwYM0MaNGy97TgDA1c8/yb/U53q36K1lD/z3Gtb6L9RX3vm8EmtvaXyL1gxd43wc+XKkjucVP6JhEk2Ze/P19dUDDzygefPm6b777pMkvffee7r22mt16623SpI6der0m9fxhIaGlvk1K8rQoUM1YMAASdK0adP0yiuvKDU1VT179tRrr72mDh06aNq0ac76uXPnKiIiQnv37lXLli2rvN9fuqIAFBAQoK1bt6pp06blXregoECbNm1SfHy8c8zDw0MxMTHasGFDiet06dJF7733nlJTU9W5c2cdPHhQy5cvdx4ivJw5AQBwt+HDh+umm27SkSNH1LBhQ82fP19Dhw6VzWaTdCEkNW/e3M1dFte2bVvnz7Vr11ZAQICysrIkSd99951Wr14tf//i4fPAgQM1JwD99NNPCg8Pdxm7cATs8hw/flxFRUXFEmtoaKh2795d4joPPPCAjh8/rm7duskYo8LCQo0YMUITJky47DklKT8/3+Xca05OzuVuFgCgGjoTf6bU5zw9PF0eZ43NKrXWw+Z66eyhJw9dUV8XdejQQe3atdM777yjHj166Pvvv3e5s/qrr75Sr169LjnHm2++qYEDB1ZIP2VVq1Ytl8c2m00Oh0OSdObMGfXt27fEC7EbNGhQJf1dSpkDUOvWrTVz5kzn6Sd3WLNmjaZNm6bXX39dUVFR2r9/v5588kk988wzmjx58mXPm5SUpKlTp1ZgpwCA6qS2d2231/6Whx9+WDNmzNCRI0cUExOjiIgI53PV9RTYpfzud7/Thx9+qMjISHl5XfEVNxWuzB397W9/06OPPqqPPvpIb775pq655ho9+OCDCggIuKwXDg4OlqenpzIzM13GMzMzFRYWVuI6kydP1qBBg/Twww9Lktq0aaPc3Fw98sgjmjhx4mXNKUnx8fGKi4tzPs7JyXH5Dw8AgMr2wAMPaOzYsZo9e7beeecdl+fKewrs559/Vnp6un766SdJ0p49eyRJYWFhl/x7ePbs2WJBq06dOmrWrFmZX/uiUaNGafbs2RowYIDGjRuna665Rvv379fChQv19ttvy9PT87cnqURlvg3+scce07Zt23TixAm1atVK//d//6c33njjsr8A1dvbWx07dnTeUi9JDodDKSkppV5UnZeXJw8P15Yv7kBjzGXNKUl2u10BAQEuCwAAVSkwMFD33HOP/P391a9fvyua65NPPlGHDh3Up08fSdL999+vDh06aNasWZdcb+/everQoYPL8uijj15WD+Hh4fr6669VVFSkHj16qE2bNho9erSCgoKK/S13i8u5Be3VV181Xl5epk2bNqZDhw4uS3ksXLjQ2O12M3/+fLNz507zyCOPmKCgIJORkWGMMWbQoEFm/PjxzvrExERTp04d869//cscPHjQfP7556ZZs2bmj3/8Y5nnLAtugweAmulSt0jXBP/zP/9jnnjiCXe3Ua257Tb4w4cPa+nSpapbt67uuuuuKzqv179/fx07dkwJCQnKyMhQ+/btlZyc7DyPmZ6e7pISJ02aJJvNpkmTJunIkSMKCQlR37599be//a3McwIAUN2cPHlSa9as0Zo1a/T666+7ux1LsBlT9lu5Ln4JakxMjN58802FhIRUZm9uk5OTo8DAQGVnZ3M6DABqkHPnziktLU1NmjSRj4+Pu9sps8jISJ08eVKTJ0/W2LFj3d1OtXap33F5/n6X+fBNz549lZqaqtdee02DBw++vK4BAEAxhw4dcncLllPmAFRUVKRt27apUaNGldkPAABApStzAFq5cmVl9gEAQIUpx9UdqGEq6ndbDe5DAwCgYlz8aJSCggI3d4LKkpd34Xvafv0p1OVV/T6aEQCAy+Tl5SU/Pz8dO3ZMtWrVqh6fN4MKYYxRXl6esrKyFBQUdMUfpEgAAgBcNWw2mxo0aKC0tDQdPnzY3e2gEgQFBV3y06zLigAEALiqeHt7q0WLFpwGuwrVqlWrwr5CgwAEALjqeHh41KjPAULV4+QoAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwHAIQAACwnGoRgGbOnKnIyEj5+PgoKipKqamppdbeeuutstlsxZY+ffo4a4YOHVrs+Z49e1bFpgAAgBrAy90NLFq0SHFxcZo1a5aioqI0Y8YMxcbGas+ePapfv36x+qVLl6qgoMD5+MSJE2rXrp3uu+8+l7qePXtq3rx5zsd2u73yNgIAANQobj8CNH36dA0fPlzDhg1Tq1atNGvWLPn5+Wnu3Lkl1l9zzTUKCwtzLitXrpSfn1+xAGS3213q6tatWxWbAwAAagC3BqCCggJt2rRJMTExzjEPDw/FxMRow4YNZZpjzpw5uv/++1W7dm2X8TVr1qh+/fq67rrrNHLkSJ04caJCewcAADWXW0+BHT9+XEVFRQoNDXUZDw0N1e7du39z/dTUVO3YsUNz5sxxGe/Zs6f+8Ic/qEmTJjpw4IAmTJigXr16acOGDfL09Cw2T35+vvLz852Pc3JyLnOLAABATeD2a4CuxJw5c9SmTRt17tzZZfz+++93/tymTRu1bdtWzZo105o1a3T77bcXmycpKUlTp06t9H4BAED14NZTYMHBwfL09FRmZqbLeGZmpsLCwi65bm5urhYuXKiHHnroN1+nadOmCg4O1v79+0t8Pj4+XtnZ2c7lhx9+KPtGAACAGsetAcjb21sdO3ZUSkqKc8zhcCglJUXR0dGXXPeDDz5Qfn6+Hnzwwd98nR9//FEnTpxQgwYNSnzebrcrICDAZQEAAFcvt98FFhcXp9mzZ2vBggXatWuXRo4cqdzcXA0bNkySNHjwYMXHxxdbb86cOerXr5/q1avnMn7mzBk9/fTT+uabb3To0CGlpKTorrvuUvPmzRUbG1sl2wQAAKo3t18D1L9/fx07dkwJCQnKyMhQ+/btlZyc7LwwOj09XR4erjltz549WrdunT7//PNi83l6emrbtm1asGCBTp06pfDwcPXo0UPPPPMMnwUEAAAkSTZjjHF3E9VNTk6OAgMDlZ2dzekwAABqiPL8/Xb7KTAAAICqRgACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWQwACAACWUy0C0MyZMxUZGSkfHx9FRUUpNTW11Npbb71VNput2NKnTx9njTFGCQkJatCggXx9fRUTE6N9+/ZVxaYAAIAawO0BaNGiRYqLi1NiYqI2b96sdu3aKTY2VllZWSXWL126VEePHnUuO3bskKenp+677z5nzT/+8Q+98sormjVrljZu3KjatWsrNjZW586dq6rNAgAA1ZjNGGPc2UBUVJRuuukmvfbaa5Ikh8OhiIgIPfHEExo/fvxvrj9jxgwlJCTo6NGjql27towxCg8P15gxYzR27FhJUnZ2tkJDQzV//nzdf//9vzlnTk6OAgMDlZ2drYCAgCvbQAAAUCXK8/fbrUeACgoKtGnTJsXExDjHPDw8FBMTow0bNpRpjjlz5uj+++9X7dq1JUlpaWnKyMhwmTMwMFBRUVGlzpmfn6+cnByXBQAAXL3cGoCOHz+uoqIihYaGuoyHhoYqIyPjN9dPTU3Vjh079PDDDzvHLq5XnjmTkpIUGBjoXCIiIsq7KQAAoAZx+zVAV2LOnDlq06aNOnfufEXzxMfHKzs727n88MMPFdQhAACojtwagIKDg+Xp6anMzEyX8czMTIWFhV1y3dzcXC1cuFAPPfSQy/jF9cozp91uV0BAgMsCAACuXm4NQN7e3urYsaNSUlKcYw6HQykpKYqOjr7kuh988IHy8/P14IMPuow3adJEYWFhLnPm5ORo48aNvzknAACwBi93NxAXF6chQ4aoU6dO6ty5s2bMmKHc3FwNGzZMkjR48GA1bNhQSUlJLuvNmTNH/fr1U7169VzGbTabRo8erWeffVYtWrRQ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88YYJSQkqEGDBvL19VVMTIz27dvnUvPzzz9r4MCBCggIUFBQkB566CGdOXOmCrei+ktKStJNN92kOnXqqH79+urXr5/27NnjUnPu3DmNGjVK9erVk7+/v+655x5lZma61KSnp6tPnz7y8/NT/fr19fTTT6uwsLAqN6Vae+ONN9S2bVvnB8FFR0frs88+cz7PPq4czz33nGw2m0aPHu0cY19XjClTpshms7ks119/vfP5arefDSrdwoULjbe3t5k7d675/vvvzfDhw01QUJDJzMx0d2s1yvLly83EiRPN0qVLjSTz0UcfuTz/3HPPmcDAQPPxxx+b7777zvzv//6vadKkiTl79qyzpmfPnqZdu3bmm2++MV999ZVp3ry5GTBgQBVvSfUWGxtr5s2bZ3bs2GG2bt1qevfuba699lpz5swZZ82IESNMRESESUlJMd9++625+eabTZcuXZzPFxYWmhtvvNHExMSYLVu2mOXLl5vg4GATHx/vjk2qlj755BOzbNkys3fvXrNnzx4zYcIEU6tWLbNjxw5jDPu4MqSmpprIyEjTtm1b8+STTzrH2dcVIzEx0bRu3docPXrUuRw7dsz5fHXbzwSgKtC5c2czatQo5+OioiITHh5ukpKS3NhVzfbrAORwOExYWJh5/vnnnWOnTp0ydrvd/Otf/zLGGLNz504jyfznP/9x1nz22WfGZrOZI0eOVFnvNU1WVpaRZNauXWuMubBfa9WqZT744ANnza5du4wks2HDBmPMhbDq4eFhMjIynDVvvPGGCQgIMPn5+VW7ATVI3bp1zdtvv80+rgSnT582LVq0MCtXrjS33HKLMwCxrytOYmKiadeuXYnPVcf9zCmwSlZQUKBNmzYpJibGOebh4aGYmBht2LDBjZ1dXdLS0pSRkeGynwMDAxUVFeXczxs2bFBQUJA6derkrImJiZGHh4c2btxY5T3XFNnZ2ZKka665RpK0adMmnT9/3mVfX3/99br22mtd9nWbNm0UGhrqrImNjVVOTo6+//77Kuy+ZigqKtLChQuVm5ur6Oho9nElGDVqlPr06eOyTyX+e65o+/btU3h4uJo2baqBAwcqPT1dUvXcz3wZaiU7fvy4ioqKXH6hkhQaGqrdu3e7qaurT0ZGhiSVuJ8vPpeRkaH69eu7PO/l5aVrrrnGWQNXDodDo0ePVteuXXXjjTdK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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#plt.plot(d1avg, label='Original Data')\n", + "plt.plot(x_axis, trend_line, label='Trend Line', color='red')\n", + "plt.axhline(y=1, color='green', linestyle='--', label='y=1 Line')\n", + "\n", + "# Add labels and title\n", + "plt.xlabel('X-axis')\n", + "plt.ylabel('Y-axis')\n", + "plt.title('Trend Line for Data')\n", + "plt.legend()\n", + "\n", + "# Show the plot\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "45d15e34-c083-461a-9407-b1d3ea46f1de", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/net/activation.py b/net/activation.py new file mode 100644 index 0000000..ee42015 --- /dev/null +++ b/net/activation.py @@ -0,0 +1,59 @@ +import numpy as np + +class Activations: + @staticmethod + def LeakyReLU(x, alpha=0.01): + return np.where(x > 0, x, alpha * x) + + @staticmethod + def LeakyReLU_deriv(x, alpha=0.01): + return np.where(x > 0, 1, alpha) + + @staticmethod + def InverseLeakyReLU(x, alpha=0.01): + return np.where(x > 0, x, x / alpha) + + @staticmethod + def ReLU(x): + return np.maximum(0, x) + + @staticmethod + def ReLU_deriv(x): + return np.where(x > 0, 1, 0) + + @staticmethod + def InverseReLU(x): + return np.maximum(0, x) # Note: This is lossy for negative values + + @staticmethod + def Sigmoid(x): + return 1 / (1 + np.exp(-x)) + + @staticmethod + def Sigmoid_deriv(x): + s = Activations.Sigmoid(x) + return s * (1 - s) + + @staticmethod + def InverseSigmoid(x): + return np.log(x / (1 - x)) + + @staticmethod + def Softmax(x): + exp_x = np.exp(x - np.max(x, axis=0, keepdims=True)) + return exp_x / np.sum(exp_x, axis=0, keepdims=True) + + @staticmethod + def InverseSoftmax(x): + return np.log(x) - np.max(np.log(x)) + + @classmethod + def get_function_name(cls, func): + return func.__name__ + + @classmethod + def get_all_activation_names(cls): + return [name for name, func in cls.__dict__.items() + if callable(func) and not name.startswith("__") and + not name.endswith("_deriv") and not name.startswith("Inverse") and + not name in ['get_function_name', 'get_all_activation_names']] diff --git a/net/loss.py b/net/loss.py new file mode 100644 index 0000000..0aa7ab7 --- /dev/null +++ b/net/loss.py @@ -0,0 +1,65 @@ +import numpy as np + +class Loss: + @staticmethod + def mean_squared_error(Y, A): + """ Mean Squared Error (MSE) """ + return np.mean((Y - A) ** 2) + + @staticmethod + def mean_absolute_error(Y, A): + """ Mean Absolute Error (MAE) """ + return np.mean(np.abs(Y - A)) + + @staticmethod + def huber_loss(Y, A, delta=1.0): + """ Huber Loss """ + error = Y - A + is_small_error = np.abs(error) <= delta + squared_loss = 0.5 * error ** 2 + linear_loss = delta * (np.abs(error) - 0.5 * delta) + return np.where(is_small_error, squared_loss, linear_loss).mean() + + @staticmethod + def binary_cross_entropy_loss(Y, A): + """ Binary Cross-Entropy Loss """ + m = Y.shape[1] + return -np.sum(Y * np.log(A + 1e-8) + (1 - Y) * np.log(1 - A + 1e-8)) / m + + @staticmethod + def categorical_cross_entropy_loss(Y, A): + """ Categorical Cross-Entropy Loss (for softmax) """ + m = Y.shape[1] + return -np.sum(Y * np.log(A + 1e-8)) / m + + @staticmethod + def hinge_loss(Y, A): + """ Hinge Loss (used in SVM) """ + return np.mean(np.maximum(0, 1 - Y * A)) + + @staticmethod + def kl_divergence(P, Q): + """ Kullback-Leibler Divergence """ + return np.sum(P * np.log(P / (Q + 1e-8))) + + @staticmethod + def poisson_loss(Y, A): + """ Poisson Loss """ + return np.mean(A - Y * np.log(A + 1e-8)) + + @staticmethod + def cosine_proximity_loss(Y, A): + """ Cosine Proximity Loss """ + dot_product = np.sum(Y * A, axis=0) + norms = np.linalg.norm(Y, axis=0) * np.linalg.norm(A, axis=0) + return -np.mean(dot_product / (norms + 1e-8)) + + @classmethod + def get_function_name(cls, func): + return func.__name__ + + @classmethod + def get_all_loss_names(cls): + return [name for name, func in cls.__dict__.items() + if callable(func) and not name.startswith("__") and + not name in ['get_function_name', 'get_all_loss_names']] \ No newline at end of file diff --git a/net/mlp.py b/net/mlp.py new file mode 100644 index 0000000..46b1d4a --- /dev/null +++ b/net/mlp.py @@ -0,0 +1,169 @@ +import numpy as np +import pandas as pd + +from sklearn.model_selection import train_test_split + +from net.activation import Activations as af +from net.optimizer import Optimizers as opt +from net.loss import Loss + +class MLP: + def __init__(self, architecture, activations, optimizer, loss_function): + self.architecture = architecture + self.activations = activations + self.optimizer = self.select_optimizer(optimizer) + self.loss_function = getattr(Loss, loss_function) + + self.params = self.init_params() + self.activation_funcs = self.select_activations() + + self.acc_store = [] + self.loss_store = [] + self.test_results = [] + + def init_params(self): + params = {} + for i in range(1, len(self.architecture)): + params[f'W{i}'] = np.random.randn(self.architecture[i], self.architecture[i-1]) * 0.01 + params[f'b{i}'] = np.zeros((self.architecture[i], 1)) + return params + + def select_activations(self): + activation_funcs = [] + for activation in self.activations: + activation_funcs.append(getattr(af, activation)) + return activation_funcs + + def select_optimizer(self, optimizer_name): + return getattr(opt, optimizer_name) + + def forward_prop(self, X): + A = X + caches = [] + for i in range(1, len(self.architecture)): + W = self.params[f'W{i}'] + b = self.params[f'b{i}'] + Z = np.dot(W, A) + b + A = self.activation_funcs[i-1](Z) + caches.append((A, W, b, Z)) + return A, caches + + def backward_prop(self, AL, Y, caches): + grads = {} + L = len(caches) + + # Ensure Y is a 2D array + Y = Y.reshape(-1, 1) if Y.ndim == 1 else Y + m = Y.shape[1] + + Y = self.one_hot(Y) + + dAL = AL - Y + current_cache = caches[L-1] + grads[f"dA{L}"], grads[f"dW{L}"], grads[f"db{L}"] = self.linear_activation_backward( + dAL, current_cache, self.activation_funcs[L-1].__name__) + + for l in reversed(range(L-1)): + current_cache = caches[l] + dA_prev_temp, dW_temp, db_temp = self.linear_activation_backward( + grads[f"dA{l+2}"], current_cache, self.activation_funcs[l].__name__) + grads[f"dA{l+1}"] = dA_prev_temp + grads[f"dW{l+1}"] = dW_temp + grads[f"db{l+1}"] = db_temp + + return grads + + def one_hot(self, Y): + num_classes = self.architecture[-1] + if Y.ndim == 1: + return np.eye(num_classes)[Y] + else: + return np.eye(num_classes)[Y.reshape(-1)].T + + def linear_activation_backward(self, dA, cache, activation): + A_prev, W, b, Z = cache + m = A_prev.shape[1] + + if activation == "Softmax": + dZ = dA + elif activation == "ReLU": + dZ = dA * af.ReLU_deriv(Z) + else: + raise ValueError(f"Backward propagation not implemented for {activation}") + + dW = 1 / m * np.dot(dZ, A_prev.T) + db = 1 / m * np.sum(dZ, axis=1, keepdims=True) + dA_prev = np.dot(W.T, dZ) + + return dA_prev, dW, db + + def get_predictions(self, A): + return np.argmax(A, axis=0) + + def get_accuracy(self, predictions, Y): + return np.mean(predictions == Y) + + def train(self, X, Y, alpha, iterations, validation_split=0.2): + X_train, X_val, Y_train, Y_val = train_test_split(X.T, Y, test_size=validation_split, shuffle=True, random_state=42) + X_train, X_val = X_train.T, X_val.T + + # Ensure Y_train and Y_val are 1D arrays + Y_train = Y_train.ravel() + Y_val = Y_val.ravel() + + for i in range(iterations): + AL, caches = self.forward_prop(X_train) + grads = self.backward_prop(AL, Y_train, caches) + + self.params = self.optimizer(self.params, grads, alpha) + + if i % 10 == 0: + train_preds = self.get_predictions(AL) + train_acc = self.get_accuracy(train_preds, Y_train) + train_loss = self.loss_function(self.one_hot(Y_train), AL) + + AL_val, _ = self.forward_prop(X_val) + val_preds = self.get_predictions(AL_val) + val_acc = self.get_accuracy(val_preds, Y_val) + val_loss = self.loss_function(self.one_hot(Y_val), AL_val) + + print(f"Iteration {i}") + print(f"Training Accuracy: {train_acc:.4f}, Validation Accuracy: {val_acc:.4f}") + print(f"Training Loss: {train_loss:.4f}, Validation Loss: {val_loss:.4f}") + print("-------------------------------------------------------") + + self.acc_store.append((train_acc, val_acc)) + self.loss_store.append((train_loss, val_loss)) + + return self.params + + def test(self, X_test, Y_test): + AL, _ = self.forward_prop(X_test) + predictions = self.get_predictions(AL) + test_accuracy = self.get_accuracy(predictions, Y_test) + test_loss = self.loss_function(self.one_hot(Y_test), AL) + + self.test_results.append((test_accuracy, test_loss)) + + print(f"Test Accuracy: {test_accuracy:.4f}") + print(f"Test Loss: {test_loss:.4f}") + + def save_model(self, dataset): + weights_file = f"weights/{dataset}_{self.activation_funcs[0].__name__}_weights.npz" + results_file = f"results/{dataset}_{self.activation_funcs[0].__name__}_results.csv" + + np.savez(weights_file, **self.params) + + train_df = pd.DataFrame(self.acc_store, columns=["training_accuracy", "validation_accuracy"]) + loss_df = pd.DataFrame(self.loss_store, columns=["training_loss", "validation_loss"]) + test_df = pd.DataFrame(self.test_results, columns=['test_accuracy', 'test_loss']) + + combined_df = pd.concat([train_df, loss_df, test_df], axis=1) + combined_df.to_csv(results_file, index=False) + + print(f"Weights saved to {weights_file}") + print(f"Results saved to {results_file}") + + def load_weights(self, file_name): + data = np.load(file_name) + self.params = {key: data[key] for key in data.files} \ No newline at end of file diff --git a/net/modules.py b/net/modules.py new file mode 100644 index 0000000..941c045 --- /dev/null +++ b/net/modules.py @@ -0,0 +1,77 @@ +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt + +def load_data(file_path): + data = pd.read_csv(file_path) + data = np.array(data) + m, n = data.shape + + data_train = data[1000:m].T + Y_train = data_train[0].astype(int) + X_train = data_train[1:n] + + data_test = data[0:1000].T + Y_test = data_test[0].astype(int) + X_test = data_test[1:n] + + return X_train, Y_train, X_test, Y_test + +def plot_accuracy(acc_store, save_path=None): + """ + Plot training and validation accuracy over iterations. + + Parameters: + acc_store (list of tuples): Each tuple contains (training_accuracy, validation_accuracy). + save_path (str, optional): If provided, saves the plot to the specified path. + """ + # Unzip the accuracy data + training_accuracy, validation_accuracy = zip(*acc_store) + + # Plot + plt.figure(figsize=(10, 6)) + plt.plot(training_accuracy, label='Training Accuracy') + plt.plot(validation_accuracy, label='Validation Accuracy') + plt.title('Training and Validation Accuracy Over Iterations') + plt.xlabel('Iterations (in steps of 10)') + plt.ylabel('Accuracy') + plt.legend() + plt.grid(True) + + # Save the plot if a path is provided + if save_path: + plt.savefig(save_path) + print(f"Accuracy plot saved to {save_path}") + + # Show the plot + plt.show() + + +def plot_loss(loss_store, save_path=None): + """ + Plot training and validation loss over iterations. + + Parameters: + loss_store (list of tuples): Each tuple contains (training_loss, validation_loss). + save_path (str, optional): If provided, saves the plot to the specified path. + """ + # Unzip the loss data + training_loss, validation_loss = zip(*loss_store) + + # Plot + plt.figure(figsize=(10, 6)) + plt.plot(training_loss, label='Training Loss') + plt.plot(validation_loss, label='Validation Loss') + plt.title('Training and Validation Loss Over Iterations') + plt.xlabel('Iterations (in steps of 10)') + plt.ylabel('Loss') + plt.legend() + plt.grid(True) + + # Save the plot if a path is provided + if save_path: + plt.savefig(save_path) + print(f"Loss plot saved to {save_path}") + + # Show the plot + plt.show() \ No newline at end of file diff --git a/net/optimizer.py b/net/optimizer.py new file mode 100644 index 0000000..3f21b33 --- /dev/null +++ b/net/optimizer.py @@ -0,0 +1,14 @@ +class Optimizers: + @staticmethod + def gradient_descent(params, grads, alpha): + """ + Performs gradient descent optimization for a multi-layer network. + + :param params: Dictionary containing the network parameters (W1, b1, W2, b2, etc.) + :param grads: Dictionary containing the gradients (dW1, db1, dW2, db2, etc.) + :param alpha: Learning rate + :return: Updated parameters dictionary + """ + for key in params: + params[key] -= alpha * grads['d' + key] + return params \ No newline at end of file diff --git a/net/transcoder.py b/net/transcoder.py new file mode 100644 index 0000000..884b764 --- /dev/null +++ b/net/transcoder.py @@ -0,0 +1,109 @@ +import numpy as np + +from sklearn.model_selection import train_test_split + +from net.mlp import MLP +from net.modules import calculate_loss, calculate_accuracy, plot_learning_curves, plot_encoded_space, plot_reconstructions + +class Transcoder(MLP): + def __init__(self, input_size, hidden_size, output_size, hidden_activation='leaky_relu', output_activation='softmax', alpha=0.01): + super().__init__(input_size, hidden_size, output_size, hidden_activation, output_activation, alpha) + self.train_losses = [] + self.val_losses = [] + self.train_accuracies = [] + self.val_accuracies = [] + self.image_shape = self.determine_image_shape(input_size) + + @staticmethod + def determine_image_shape(input_size): + sqrt = int(np.sqrt(input_size)) + if sqrt ** 2 == input_size: + return (sqrt, sqrt) + else: + return (input_size, 1) # Default to column vector if not square + + def encode_image(self, X): + _, _, _, A2 = self.forward_prop(X) + # print(f"Debug - Encoded image shape: {A2.shape}") #Debugging + return A2 + + def decode_image(self, A2): + # Start decoding from the encoded representation (A2) + # print(f"Debug - A2 image shape: {A2.shape}") #Debugging + + # Step 1: Reverse the output_activation function to get Z2 + Z2 = self.inverse_output_activation(A2) + # print(f"Debug - Z2 image shape: {Z2.shape}") #Debugging + + # Step 2: Reverse the second linear transformation to get A1 + A1 = np.linalg.pinv(self.W2).dot(Z2 - self.b2) + # print(f"Debug - A1 image shape: {A1.shape}") #Debugging + + # Step 3: Reverse the hidden_activation function to get Z1 + Z1 = self.inverse_hidden_activation(A1, self.alpha) + # print(f"Debug - Z1 image shape: {Z1.shape}") #Debugging + + # Step 4: Reverse the first linear transformation to get X (flattened 1D array) + X_flat = np.linalg.pinv(self.W1).dot(Z1 - self.b1) + # print(f"Debug - X_Flat image shape: {X_flat.shape}") #Debugging + + # Step 5: If X_flat has shape (1024, n_samples), reshape it for each sample + if X_flat.ndim > 1: + X_flat = X_flat[:, 0] # Extract the first sample or reshape for batch processing + + # Reshape to original image dimensions (32x32) + X_image = X_flat.reshape(self.image_shape) + + return X_image + + def transcode(self, X): + print(f"Debug - Input X shape: {X.shape}") + encoded = self.encode_image(X) + decoded = self.decode_image(encoded) + return encoded, decoded + + def train_with_validation(self, X, Y, alpha, iterations, val_split=0.2): + # Ensure X is of shape (n_features, n_samples) + if X.shape[0] != self.input_size: + X = X.T + + # Ensure Y is a 1D array + if Y.ndim > 1: + Y = Y.ravel() + + X_train, X_val, Y_train, Y_val = train_test_split(X.T, Y, test_size=val_split, random_state=42) + X_train, X_val = X_train.T, X_val.T # Transpose back to (n_features, n_samples) + + for i in range(iterations): + # Train step + Z1, A1, Z2, A2 = self.forward_prop(X_train) + dW1, db1, dW2, db2 = self.backward_prop(Z1, A1, Z2, A2, X_train, Y_train) + self.update_params(dW1, db1, dW2, db2, alpha) + + # Calculate and store losses and accuracies + train_loss = calculate_loss(self, X_train, Y_train) + val_loss = calculate_loss(self, X_val, Y_val) + train_accuracy = calculate_accuracy(self, X_train, Y_train) + val_accuracy = calculate_accuracy(self, X_val, Y_val) + + self.train_losses.append(train_loss) + self.val_losses.append(val_loss) + self.train_accuracies.append(train_accuracy) + self.val_accuracies.append(val_accuracy) + + if i % 100 == 0: + print(f"Iteration {i}: Train Loss = {train_loss:.4f}, Val Loss = {val_loss:.4f}, " + f"Train Accuracy = {train_accuracy:.4f}, Val Accuracy = {val_accuracy:.4f}") + + def plot_learning_curves(self): + plot_learning_curves(self.train_losses, self.val_losses, self.train_accuracies, self.val_accuracies) + + def plot_encoded_space(self, X, Y): + if X.shape[0] != self.input_size: + X = X.T + plot_encoded_space(self, X, Y) + + def plot_reconstructions(self, X, num_images=5): + if X.shape[0] != self.input_size: + X = X.T + plot_reconstructions(self, X, num_images) \ No newline at end of file diff --git a/results/bel_all_accuracies.csv b/results/bel_all_accuracies.csv new file mode 100644 index 0000000..1c11c23 --- /dev/null +++ b/results/bel_all_accuracies.csv @@ -0,0 +1,401 @@ +Trial_1,Trial_2,Trial_3,Trial_4,Trial_5 +0.023496503496503496,0.04055944055944056,0.016783216783216783,0.006993006993006993,0.04027972027972028 +0.011748251748251748,0.05258741258741259,0.0,0.013146853146853148,0.008111888111888113 +0.011748251748251748,0.05146853146853147,0.0,0.013146853146853148,0.008391608391608392 +0.011748251748251748,0.09958041958041958,0.0,0.013146853146853148,0.00951048951048951 +0.011748251748251748,0.11048951048951049,0.0,0.022377622377622378,0.00951048951048951 +0.011748251748251748,0.1076923076923077,0.0,0.05678321678321678,0.00951048951048951 +0.011748251748251748,0.1048951048951049,0.0,0.07160839160839161,0.00951048951048951 +0.011748251748251748,0.12195804195804195,0.0,0.08027972027972027,0.009790209790209791 +0.011748251748251748,0.16307692307692306,0.0,0.086993006993007,0.009790209790209791 +0.011748251748251748,0.16867132867132867,0.0,0.09118881118881118,0.009790209790209791 +0.011748251748251748,0.17174825174825176,0.0,0.09314685314685314,0.009790209790209791 +0.011748251748251748,0.1753846153846154,0.0,0.0937062937062937,0.01006993006993007 +0.011748251748251748,0.17622377622377622,0.0,0.09538461538461539,0.011188811188811189 +0.011748251748251748,0.17986013986013985,0.0,0.09594405594405594,0.011748251748251748 +0.011748251748251748,0.18097902097902097,0.0,0.09622377622377623,0.07608391608391608 +0.011748251748251748,0.1834965034965035,0.0,0.09706293706293706,0.08587412587412588 +0.011748251748251748,0.18573426573426574,0.013146853146853148,0.09706293706293706,0.09062937062937063 +0.011748251748251748,0.1874125874125874,0.02825174825174825,0.09734265734265735,0.09146853146853147 +0.011748251748251748,0.1888111888111888,0.03776223776223776,0.09734265734265735,0.09174825174825176 +0.011748251748251748,0.18993006993006992,0.044475524475524476,0.09762237762237762,0.09258741258741258 +0.011748251748251748,0.19132867132867132,0.05146853146853147,0.0979020979020979,0.09230769230769231 +0.011748251748251748,0.19244755244755246,0.0606993006993007,0.09706293706293706,0.09118881118881118 +0.011748251748251748,0.19384615384615383,0.06097902097902098,0.09818181818181818,0.09062937062937063 +0.011748251748251748,0.19692307692307692,0.06293706293706294,0.0979020979020979,0.0897902097902098 +0.011748251748251748,0.2013986013986014,0.06321678321678321,0.09846153846153846,0.08923076923076922 +0.011748251748251748,0.21202797202797202,0.06293706293706294,0.09762237762237762,0.08811188811188811 +0.011748251748251748,0.22097902097902097,0.06321678321678321,0.09734265734265735,0.08811188811188811 +0.011748251748251748,0.22545454545454546,0.0634965034965035,0.09874125874125875,0.07244755244755245 +0.011748251748251748,0.23272727272727273,0.06769230769230769,0.09874125874125875,0.07916083916083916 +0.011748251748251748,0.2427972027972028,0.06965034965034965,0.09762237762237762,0.08951048951048951 +0.011748251748251748,0.2632167832167832,0.07104895104895105,0.09874125874125875,0.0979020979020979 +0.011748251748251748,0.2716083916083916,0.0718881118881119,0.10797202797202797,0.10377622377622378 +0.011748251748251748,0.2816783216783217,0.07272727272727272,0.11412587412587413,0.10573426573426574 +0.011748251748251748,0.2900699300699301,0.08195804195804196,0.11692307692307692,0.1076923076923077 +0.011748251748251748,0.29762237762237764,0.11356643356643356,0.11832167832167832,0.10741258741258741 +0.011748251748251748,0.3074125874125874,0.126993006993007,0.12055944055944055,0.10797202797202797 +0.011748251748251748,0.31300699300699303,0.10601398601398601,0.1227972027972028,0.10937062937062937 +0.011748251748251748,0.3186013986013986,0.10545454545454545,0.13286713286713286,0.11020979020979021 +0.011748251748251748,0.3241958041958042,0.10545454545454545,0.14909090909090908,0.11216783216783217 +0.011748251748251748,0.332027972027972,0.10545454545454545,0.16195804195804195,0.11272727272727273 +0.011748251748251748,0.3412587412587413,0.10573426573426574,0.13258741258741258,0.11384615384615385 +0.011748251748251748,0.3474125874125874,0.10573426573426574,0.1362237762237762,0.11496503496503496 +0.011748251748251748,0.34265734265734266,0.10573426573426574,0.14853146853146854,0.11608391608391608 +0.011748251748251748,0.34881118881118883,0.10573426573426574,0.1516083916083916,0.11804195804195804 +0.011748251748251748,0.35160839160839163,0.10573426573426574,0.1586013986013986,0.11860139860139861 +0.011748251748251748,0.35748251748251747,0.10573426573426574,0.16223776223776223,0.11636363636363636 +0.011748251748251748,0.3627972027972028,0.10573426573426574,0.17006993006993007,0.11524475524475525 +0.011748251748251748,0.37006993006993005,0.10573426573426574,0.17846153846153845,0.11720279720279721 +0.011748251748251748,0.37566433566433566,0.10573426573426574,0.18237762237762237,0.12111888111888112 +0.011748251748251748,0.3829370629370629,0.10573426573426574,0.18993006993006992,0.12307692307692308 +0.011748251748251748,0.3893706293706294,0.10545454545454545,0.2067132867132867,0.12503496503496503 +0.011748251748251748,0.39636363636363636,0.10545454545454545,0.22097902097902097,0.1258741258741259 +0.011748251748251748,0.4027972027972028,0.10545454545454545,0.23244755244755244,0.12783216783216783 +0.011748251748251748,0.40755244755244757,0.10545454545454545,0.2111888111888112,0.12867132867132866 +0.011748251748251748,0.413986013986014,0.10545454545454545,0.2455944055944056,0.13006993006993006 +0.011748251748251748,0.4206993006993007,0.10545454545454545,0.2746853146853147,0.13118881118881118 +0.011748251748251748,0.42713286713286713,0.10545454545454545,0.28223776223776226,0.13258741258741258 +0.011748251748251748,0.4318881118881119,0.10545454545454545,0.2903496503496503,0.13454545454545455 +0.011748251748251748,0.43608391608391606,0.10517482517482518,0.29426573426573427,0.13426573426573427 +0.011748251748251748,0.44111888111888115,0.10517482517482518,0.3048951048951049,0.13678321678321678 +0.011748251748251748,0.4464335664335664,0.10517482517482518,0.30993006993006994,0.139020979020979 +0.011748251748251748,0.4509090909090909,0.10517482517482518,0.31580419580419583,0.13986013986013987 +0.011748251748251748,0.4584615384615385,0.10517482517482518,0.32223776223776224,0.1423776223776224 +0.011748251748251748,0.4668531468531468,0.10517482517482518,0.3239160839160839,0.14405594405594405 +0.011748251748251748,0.4735664335664336,0.10517482517482518,0.32895104895104893,0.14153846153846153 +0.011748251748251748,0.4791608391608392,0.10517482517482518,0.3264335664335664,0.14153846153846153 +0.011748251748251748,0.48363636363636364,0.10517482517482518,0.33174825174825173,0.1437762237762238 +0.011748251748251748,0.48923076923076925,0.10517482517482518,0.33986013986013985,0.15020979020979022 +0.011748251748251748,0.49202797202797205,0.10517482517482518,0.3474125874125874,0.15216783216783217 +0.011748251748251748,0.4976223776223776,0.10517482517482518,0.3507692307692308,0.15636363636363637 +0.011748251748251748,0.4995804195804196,0.1048951048951049,0.3563636363636364,0.16 +0.011748251748251748,0.5015384615384615,0.1048951048951049,0.3597202797202797,0.1655944055944056 +0.011748251748251748,0.504055944055944,0.1048951048951049,0.36475524475524473,0.16783216783216784 +0.011748251748251748,0.5062937062937063,0.1048951048951049,0.3686713286713287,0.1709090909090909 +0.011748251748251748,0.5068531468531469,0.1048951048951049,0.36895104895104897,0.1723076923076923 +0.011748251748251748,0.509090909090909,0.1048951048951049,0.3706293706293706,0.1737062937062937 +0.011748251748251748,0.5116083916083916,0.1048951048951049,0.36363636363636365,0.1751048951048951 +0.011748251748251748,0.513006993006993,0.1048951048951049,0.34937062937062935,0.17734265734265733 +0.011748251748251748,0.5158041958041958,0.1048951048951049,0.3563636363636364,0.17846153846153845 +0.011748251748251748,0.5183216783216783,0.1048951048951049,0.36475524475524473,0.18013986013986014 +0.011748251748251748,0.5208391608391608,0.1048951048951049,0.3734265734265734,0.18125874125874125 +0.011748251748251748,0.5227972027972028,0.1048951048951049,0.3837762237762238,0.18461538461538463 +0.011748251748251748,0.5258741258741259,0.1048951048951049,0.3890909090909091,0.18489510489510488 +0.011748251748251748,0.5272727272727272,0.1048951048951049,0.3918881118881119,0.18685314685314686 +0.011748251748251748,0.5306293706293707,0.1048951048951049,0.39384615384615385,0.18853146853146854 +0.011748251748251748,0.5300699300699301,0.1048951048951049,0.39692307692307693,0.18965034965034966 +0.011748251748251748,0.5300699300699301,0.1048951048951049,0.4008391608391608,0.19076923076923077 +0.011748251748251748,0.5325874125874126,0.1048951048951049,0.4036363636363636,0.19244755244755246 +0.011748251748251748,0.5345454545454545,0.1048951048951049,0.4039160839160839,0.19384615384615383 +0.011748251748251748,0.5362237762237763,0.1048951048951049,0.4067132867132867,0.19524475524475524 +0.011748251748251748,0.5370629370629371,0.1048951048951049,0.40783216783216786,0.19636363636363635 +0.011748251748251748,0.5384615384615384,0.1048951048951049,0.4083916083916084,0.19776223776223775 +0.011748251748251748,0.5406993006993007,0.1048951048951049,0.4100699300699301,0.20307692307692307 +0.011748251748251748,0.5437762237762238,0.1048951048951049,0.4137062937062937,0.2081118881118881 +0.011748251748251748,0.5462937062937063,0.1048951048951049,0.4179020979020979,0.2123076923076923 +0.011748251748251748,0.5471328671328671,0.1048951048951049,0.41986013986013987,0.21566433566433565 +0.011748251748251748,0.5499300699300699,0.1048951048951049,0.42097902097902096,0.22013986013986014 +0.011748251748251748,0.5521678321678322,0.1048951048951049,0.4246153846153846,0.22293706293706295 +0.011748251748251748,0.5518881118881119,0.1048951048951049,0.42573426573426576,0.22685314685314686 +0.011748251748251748,0.5516083916083916,0.1048951048951049,0.4276923076923077,0.22965034965034964 +0.011748251748251748,0.5521678321678322,0.1048951048951049,0.42965034965034965,0.22993006993006992 +0.011748251748251748,0.5532867132867133,0.1048951048951049,0.4307692307692308,0.2332867132867133 +0.011748251748251748,0.5566433566433566,0.1048951048951049,0.43272727272727274,0.23496503496503496 +0.011748251748251748,0.5586013986013986,0.1048951048951049,0.4341258741258741,0.24 +0.011748251748251748,0.5608391608391609,0.1048951048951049,0.4338461538461538,0.24447552447552448 +0.011748251748251748,0.5613986013986014,0.10461538461538461,0.43524475524475525,0.2483916083916084 +0.011748251748251748,0.5605594405594405,0.10433566433566434,0.43636363636363634,0.25594405594405595 +0.011748251748251748,0.5633566433566434,0.10461538461538461,0.43860139860139863,0.2755244755244755 +0.011748251748251748,0.566993006993007,0.10461538461538461,0.4397202797202797,0.29174825174825175 +0.011748251748251748,0.5683916083916084,0.10461538461538461,0.44083916083916086,0.3102097902097902 +0.011748251748251748,0.5695104895104895,0.10461538461538461,0.44167832167832166,0.31524475524475526 +0.011748251748251748,0.5697902097902098,0.10461538461538461,0.4413986013986014,0.3169230769230769 +0.011748251748251748,0.5700699300699301,0.10461538461538461,0.44167832167832166,0.30993006993006994 +0.011748251748251748,0.5723076923076923,0.10461538461538461,0.44363636363636366,0.31272727272727274 +0.011748251748251748,0.5728671328671329,0.10433566433566434,0.44475524475524475,0.3177622377622378 +0.011748251748251748,0.5737062937062937,0.10461538461538461,0.4458741258741259,0.3211188811188811 +0.011748251748251748,0.575944055944056,0.10517482517482518,0.446993006993007,0.32447552447552447 +0.011748251748251748,0.5767832167832168,0.10517482517482518,0.44755244755244755,0.32783216783216784 +0.011748251748251748,0.5776223776223777,0.10517482517482518,0.4481118881118881,0.3295104895104895 +0.011748251748251748,0.5784615384615385,0.10517482517482518,0.4497902097902098,0.33734265734265734 +0.011748251748251748,0.5801398601398602,0.10517482517482518,0.45062937062937064,0.3406993006993007 +0.011748251748251748,0.5829370629370629,0.10517482517482518,0.4511888111888112,0.3448951048951049 +0.011748251748251748,0.5848951048951049,0.10517482517482518,0.45342657342657344,0.35104895104895106 +0.011748251748251748,0.5846153846153846,0.10517482517482518,0.45370629370629373,0.35524475524475524 +0.011748251748251748,0.5857342657342657,0.1048951048951049,0.45398601398601396,0.3630769230769231 +0.011748251748251748,0.5874125874125874,0.1048951048951049,0.4548251748251748,0.3711888111888112 +0.011748251748251748,0.5882517482517482,0.1048951048951049,0.45622377622377625,0.3801398601398601 +0.011748251748251748,0.5890909090909091,0.1048951048951049,0.45678321678321676,0.38825174825174824 +0.011748251748251748,0.5907692307692308,0.1048951048951049,0.4606993006993007,0.39636363636363636 +0.011748251748251748,0.5885314685314685,0.1048951048951049,0.46237762237762237,0.4067132867132867 +0.011748251748251748,0.5916083916083916,0.1048951048951049,0.4643356643356643,0.41706293706293707 +0.011748251748251748,0.5944055944055944,0.1048951048951049,0.466013986013986,0.4254545454545455 +0.011748251748251748,0.5960839160839161,0.1048951048951049,0.4690909090909091,0.43244755244755245 +0.011748251748251748,0.5977622377622378,0.1048951048951049,0.4702097902097902,0.43636363636363634 +0.011748251748251748,0.5986013986013986,0.1048951048951049,0.4707692307692308,0.4372027972027972 +0.011748251748251748,0.6002797202797203,0.1048951048951049,0.47216783216783215,0.44195804195804195 +0.011748251748251748,0.6008391608391609,0.1048951048951049,0.4727272727272727,0.4483916083916084 +0.011748251748251748,0.6033566433566434,0.1048951048951049,0.47384615384615386,0.45454545454545453 +0.011748251748251748,0.605034965034965,0.1048951048951049,0.47440559440559443,0.46265734265734265 +0.011748251748251748,0.6047552447552448,0.1048951048951049,0.47496503496503495,0.4690909090909091 +0.011748251748251748,0.6055944055944056,0.1048951048951049,0.47664335664335666,0.4735664335664336 +0.011748251748251748,0.6067132867132867,0.1048951048951049,0.47664335664335666,0.4788811188811189 +0.011748251748251748,0.6075524475524475,0.1048951048951049,0.4772027972027972,0.48335664335664336 +0.011748251748251748,0.6092307692307692,0.1048951048951049,0.47748251748251747,0.4855944055944056 +0.011748251748251748,0.6117482517482518,0.1048951048951049,0.47804195804195804,0.48895104895104896 +0.011748251748251748,0.6145454545454545,0.10461538461538461,0.4783216783216783,0.49202797202797205 +0.011748251748251748,0.6139860139860139,0.10433566433566434,0.4786013986013986,0.499020979020979 +0.011748251748251748,0.6179020979020979,0.10433566433566434,0.47944055944055947,0.5026573426573426 +0.011748251748251748,0.612027972027972,0.10433566433566434,0.47944055944055947,0.5068531468531469 +0.011748251748251748,0.6123076923076923,0.10433566433566434,0.48083916083916084,0.5124475524475525 +0.011748251748251748,0.6184615384615385,0.10433566433566434,0.48055944055944055,0.5152447552447552 +0.011748251748251748,0.617062937062937,0.10433566433566434,0.4811188811188811,0.5191608391608392 +0.011748251748251748,0.6064335664335664,0.10461538461538461,0.481958041958042,0.521958041958042 +0.011748251748251748,0.5938461538461538,0.10461538461538461,0.4816783216783217,0.5255944055944056 +0.011748251748251748,0.6061538461538462,0.10461538461538461,0.4813986013986014,0.5278321678321678 +0.011748251748251748,0.6156643356643356,0.10461538461538461,0.4822377622377622,0.5309090909090909 +0.011748251748251748,0.6265734265734266,0.10461538461538461,0.4822377622377622,0.533986013986014 +0.011748251748251748,0.6316083916083917,0.10461538461538461,0.481958041958042,0.533986013986014 +0.011748251748251748,0.6346853146853146,0.10461538461538461,0.4827972027972028,0.5362237762237763 +0.011748251748251748,0.6411188811188812,0.10461538461538461,0.48363636363636364,0.539020979020979 +0.011748251748251748,0.6433566433566433,0.10461538461538461,0.48335664335664336,0.5401398601398602 +0.011748251748251748,0.6458741258741258,0.10433566433566434,0.4841958041958042,0.5434965034965035 +0.011748251748251748,0.6500699300699301,0.10433566433566434,0.48475524475524473,0.5434965034965035 +0.011748251748251748,0.6545454545454545,0.10433566433566434,0.485034965034965,0.5457342657342658 +0.011748251748251748,0.6587412587412588,0.10461538461538461,0.48643356643356644,0.5468531468531469 +0.011748251748251748,0.6629370629370629,0.10461538461538461,0.48391608391608393,0.5485314685314685 +0.011748251748251748,0.6668531468531469,0.10461538461538461,0.48363636363636364,0.5513286713286714 +0.011748251748251748,0.6682517482517483,0.10461538461538461,0.48307692307692307,0.553006993006993 +0.011748251748251748,0.6690909090909091,0.10461538461538461,0.4822377622377622,0.5538461538461539 +0.011748251748251748,0.6721678321678322,0.10461538461538461,0.48475524475524473,0.554965034965035 +0.011748251748251748,0.6763636363636364,0.10461538461538461,0.4853146853146853,0.5552447552447553 +0.011748251748251748,0.6786013986013986,0.10461538461538461,0.4844755244755245,0.556923076923077 +0.011748251748251748,0.68,0.10461538461538461,0.48475524475524473,0.5586013986013986 +0.011748251748251748,0.68,0.10461538461538461,0.4855944055944056,0.5605594405594405 +0.011748251748251748,0.6777622377622378,0.10461538461538461,0.4855944055944056,0.561958041958042 +0.011748251748251748,0.6732867132867133,0.1048951048951049,0.4855944055944056,0.5627972027972028 +0.011748251748251748,0.6772027972027972,0.1048951048951049,0.4853146853146853,0.561958041958042 +0.011748251748251748,0.6844755244755245,0.10545454545454545,0.48615384615384616,0.561958041958042 +0.011748251748251748,0.6906293706293706,0.10545454545454545,0.4878321678321678,0.5622377622377622 +0.011748251748251748,0.6979020979020979,0.10573426573426574,0.48895104895104896,0.563076923076923 +0.011748251748251748,0.6998601398601398,0.1062937062937063,0.4883916083916084,0.563076923076923 +0.011748251748251748,0.6970629370629371,0.10881118881118881,0.48979020979020976,0.5641958041958042 +0.011748251748251748,0.6942657342657342,0.1158041958041958,0.4906293706293706,0.5653146853146853 +0.011748251748251748,0.7012587412587412,0.13202797202797203,0.48951048951048953,0.5672727272727273 +0.011748251748251748,0.707972027972028,0.1462937062937063,0.48755244755244753,0.5681118881118881 +0.011748251748251748,0.7099300699300699,0.1616783216783217,0.4886713286713287,0.5675524475524476 +0.011748251748251748,0.7093706293706293,0.17426573426573427,0.48923076923076925,0.5692307692307692 +0.011748251748251748,0.706013986013986,0.18573426573426574,0.49006993006993005,0.5697902097902098 +0.011748251748251748,0.6987412587412587,0.19552447552447552,0.48979020979020976,0.5695104895104895 +0.011748251748251748,0.6850349650349651,0.20391608391608393,0.48979020979020976,0.5692307692307692 +0.011748251748251748,0.6937062937062937,0.2137062937062937,0.49034965034965033,0.5700699300699301 +0.011748251748251748,0.7074125874125874,0.22405594405594406,0.4909090909090909,0.5714685314685315 +0.011748251748251748,0.7222377622377623,0.2511888111888112,0.49258741258741257,0.5728671328671329 +0.011748251748251748,0.7230769230769231,0.27412587412587414,0.4937062937062937,0.5720279720279721 +0.011748251748251748,0.7241958041958042,0.2844755244755245,0.4934265734265734,0.5723076923076923 +0.011748251748251748,0.7205594405594405,0.2853146853146853,0.49230769230769234,0.5723076923076923 +0.011748251748251748,0.7141258741258741,0.2931468531468531,0.4914685314685315,0.5731468531468531 +0.011748251748251748,0.7166433566433567,0.299020979020979,0.49202797202797205,0.5737062937062937 +0.011748251748251748,0.7225174825174825,0.30293706293706296,0.49202797202797205,0.5773426573426573 +0.011748251748251748,0.7236363636363636,0.30405594405594405,0.49286713286713285,0.5787412587412587 +0.011748251748251748,0.7272727272727273,0.30713286713286714,0.49286713286713285,0.5784615384615385 +0.011748251748251748,0.7278321678321679,0.30937062937062937,0.49286713286713285,0.5767832167832168 +0.011748251748251748,0.7272727272727273,0.30965034965034965,0.49314685314685314,0.5765034965034965 +0.011748251748251748,0.7253146853146853,0.3118881118881119,0.49258741258741257,0.5781818181818181 +0.011748251748251748,0.7211188811188811,0.3141258741258741,0.493986013986014,0.5781818181818181 +0.011748251748251748,0.7225174825174825,0.3186013986013986,0.493986013986014,0.579020979020979 +0.011748251748251748,0.7197202797202797,0.32083916083916086,0.49482517482517485,0.5832167832167832 +0.011748251748251748,0.7325874125874126,0.3227972027972028,0.49538461538461537,0.5837762237762237 +0.011748251748251748,0.7398601398601399,0.3328671328671329,0.49566433566433565,0.5846153846153846 +0.011748251748251748,0.7412587412587412,0.33678321678321677,0.4962237762237762,0.5857342657342657 +0.011748251748251748,0.7426573426573426,0.3406993006993007,0.49734265734265737,0.5868531468531468 +0.011748251748251748,0.7415384615384616,0.3437762237762238,0.49734265734265737,0.5882517482517482 +0.011748251748251748,0.7381818181818182,0.3448951048951049,0.4976223776223776,0.5899300699300699 +0.011748251748251748,0.7373426573426574,0.3476923076923077,0.4993006993006993,0.5902097902097903 +0.011748251748251748,0.7390209790209791,0.3504895104895105,0.5004195804195805,0.5834965034965035 +0.011748251748251748,0.7401398601398601,0.35244755244755244,0.5006993006993007,0.5731468531468531 +0.011748251748251748,0.7393006993006993,0.3560839160839161,0.5015384615384615,0.5678321678321678 +0.011748251748251748,0.7379020979020979,0.3572027972027972,0.5026573426573426,0.5767832167832168 +0.011748251748251748,0.7379020979020979,0.35804195804195804,0.5032167832167832,0.5823776223776224 +0.011748251748251748,0.735944055944056,0.3602797202797203,0.5037762237762238,0.5823776223776224 +0.011748251748251748,0.7398601398601399,0.3625174825174825,0.5034965034965035,0.5804195804195804 +0.011748251748251748,0.7432167832167832,0.36335664335664336,0.5043356643356643,0.5876923076923077 +0.011748251748251748,0.7468531468531469,0.36475524475524473,0.5043356643356643,0.5916083916083916 +0.011748251748251748,0.7518881118881119,0.36671328671328673,0.5051748251748251,0.5946853146853147 +0.011748251748251748,0.7518881118881119,0.3711888111888112,0.5057342657342657,0.5927272727272728 +0.011748251748251748,0.7474125874125874,0.37538461538461537,0.5068531468531469,0.5902097902097903 +0.011748251748251748,0.7468531468531469,0.3795804195804196,0.5071328671328671,0.5843356643356643 +0.011748251748251748,0.7490909090909091,0.3829370629370629,0.5082517482517482,0.5770629370629371 +0.011748251748251748,0.7516083916083917,0.3862937062937063,0.5096503496503496,0.5801398601398602 +0.011748251748251748,0.7532867132867133,0.3890909090909091,0.5116083916083916,0.5882517482517482 +0.011748251748251748,0.7544055944055944,0.39132867132867133,0.5121678321678321,0.5921678321678322 +0.012307692307692308,0.754965034965035,0.39356643356643356,0.5127272727272727,0.5893706293706293 +0.012307692307692308,0.7558041958041958,0.3974825174825175,0.5107692307692308,0.5815384615384616 +0.012587412587412588,0.7569230769230769,0.4011188811188811,0.5118881118881119,0.5868531468531468 +0.014545454545454545,0.7555244755244755,0.40251748251748254,0.5138461538461538,0.5977622377622378 +0.016223776223776225,0.7535664335664336,0.40335664335664334,0.5135664335664336,0.5988811188811188 +0.017622377622377623,0.7552447552447552,0.40615384615384614,0.5121678321678321,0.6025174825174825 +0.018741258741258742,0.7457342657342657,0.40755244755244757,0.5116083916083916,0.6008391608391609 +0.02097902097902098,0.746013986013986,0.40895104895104895,0.5135664335664336,0.594965034965035 +0.022377622377622378,0.7572027972027972,0.41174825174825175,0.5135664335664336,0.591048951048951 +0.024055944055944058,0.7616783216783217,0.4125874125874126,0.5132867132867133,0.5882517482517482 +0.025454545454545455,0.7597202797202797,0.4151048951048951,0.5144055944055944,0.5848951048951049 +0.026853146853146853,0.7594405594405594,0.41762237762237764,0.5152447552447552,0.5935664335664336 +0.027692307692307693,0.7622377622377622,0.42013986013986016,0.514965034965035,0.5969230769230769 +0.0344055944055944,0.765034965034965,0.42153846153846153,0.5160839160839161,0.5991608391608392 +0.10293706293706294,0.7658741258741258,0.4254545454545455,0.5158041958041958,0.5944055944055944 +0.10685314685314685,0.7653146853146853,0.42685314685314685,0.5163636363636364,0.5932867132867133 +0.10797202797202797,0.7658741258741258,0.4288111888111888,0.5180419580419581,0.6016783216783217 +0.10965034965034966,0.7675524475524476,0.4302097902097902,0.5194405594405594,0.6036363636363636 +0.11048951048951049,0.7661538461538462,0.431048951048951,0.5197202797202797,0.6092307692307692 +0.11020979020979021,0.7672727272727272,0.4341258741258741,0.5188811188811189,0.6125874125874126 +0.11020979020979021,0.7597202797202797,0.43636363636363634,0.5191608391608392,0.6075524475524475 +0.10853146853146853,0.7457342657342657,0.4372027972027972,0.5194405594405594,0.6011188811188811 +0.10713286713286713,0.7560839160839161,0.4372027972027972,0.5194405594405594,0.5986013986013986 +0.10685314685314685,0.7655944055944056,0.4397202797202797,0.52,0.591048951048951 +0.10825174825174826,0.7653146853146853,0.4425174825174825,0.5205594405594406,0.5846153846153846 +0.11104895104895104,0.7667132867132868,0.44447552447552446,0.5208391608391608,0.5963636363636363 +0.11188811188811189,0.7675524475524476,0.4453146853146853,0.5222377622377622,0.6058741258741259 +0.11132867132867133,0.7664335664335664,0.4467132867132867,0.5222377622377622,0.6072727272727273 +0.11104895104895104,0.7655944055944056,0.446993006993007,0.5222377622377622,0.6044755244755244 +0.11188811188811189,0.7647552447552447,0.44783216783216784,0.5233566433566433,0.5974825174825175 +0.11104895104895104,0.7683916083916084,0.4486713286713287,0.5227972027972028,0.5952447552447553 +0.11076923076923077,0.7689510489510489,0.4495104895104895,0.5230769230769231,0.6019580419580419 +0.11020979020979021,0.772027972027972,0.45174825174825173,0.5236363636363637,0.6134265734265735 +0.11020979020979021,0.7762237762237763,0.45650349650349653,0.5227972027972028,0.617062937062937 +0.10993006993006993,0.7703496503496503,0.46237762237762237,0.5230769230769231,0.6195804195804195 +0.10937062937062937,0.7544055944055944,0.466013986013986,0.5253146853146853,0.6179020979020979 +0.10853146853146853,0.766993006993007,0.4707692307692308,0.5267132867132868,0.6179020979020979 +0.10853146853146853,0.7809790209790209,0.47160839160839163,0.5264335664335664,0.6106293706293706 +0.1076923076923077,0.7820979020979021,0.47160839160839163,0.5230769230769231,0.6 +0.1076923076923077,0.7820979020979021,0.473006993006993,0.5247552447552447,0.5927272727272728 +0.10741258741258741,0.7832167832167832,0.4735664335664336,0.5297902097902097,0.5882517482517482 +0.10657342657342657,0.7826573426573427,0.4763636363636364,0.5289510489510489,0.6030769230769231 +0.10657342657342657,0.7823776223776224,0.47664335664335666,0.5278321678321678,0.6176223776223776 +0.10657342657342657,0.784055944055944,0.4797202797202797,0.5295104895104895,0.622937062937063 +0.1062937062937063,0.7851748251748252,0.481958041958042,0.5306293706293707,0.6246153846153846 +0.1062937062937063,0.7854545454545454,0.4881118881118881,0.5309090909090909,0.627972027972028 +0.10601398601398601,0.786013986013986,0.4934265734265734,0.5311888111888112,0.6346853146853146 +0.10601398601398601,0.7876923076923077,0.49874125874125874,0.5309090909090909,0.6394405594405594 +0.1062937062937063,0.7846153846153846,0.5012587412587413,0.5311888111888112,0.6383216783216783 +0.1062937062937063,0.7804195804195804,0.5054545454545455,0.532027972027972,0.6425174825174825 +0.1062937062937063,0.7384615384615385,0.5082517482517482,0.5323076923076923,0.646993006993007 +0.1062937062937063,0.7843356643356644,0.5116083916083916,0.5323076923076923,0.6489510489510489 +0.10601398601398601,0.7932867132867133,0.5141258741258741,0.5325874125874126,0.6495104895104895 +0.10601398601398601,0.7941258741258741,0.5158041958041958,0.5325874125874126,0.6467132867132868 +0.10573426573426574,0.7921678321678322,0.5174825174825175,0.532027972027972,0.6481118881118881 +0.10573426573426574,0.7938461538461539,0.5197202797202797,0.5323076923076923,0.6472727272727272 +0.10573426573426574,0.7944055944055944,0.5216783216783217,0.532027972027972,0.6478321678321678 +0.10573426573426574,0.7963636363636364,0.5227972027972028,0.5334265734265734,0.6500699300699301 +0.10573426573426574,0.7966433566433566,0.525034965034965,0.5328671328671328,0.6517482517482518 +0.10573426573426574,0.7972027972027972,0.5261538461538462,0.5323076923076923,0.6464335664335664 +0.10573426573426574,0.798041958041958,0.5306293706293707,0.5325874125874126,0.6408391608391608 +0.10573426573426574,0.8,0.5325874125874126,0.5334265734265734,0.6436363636363637 +0.10573426573426574,0.8013986013986014,0.5362237762237763,0.5314685314685315,0.6467132867132868 +0.10573426573426574,0.8008391608391608,0.5418181818181819,0.5311888111888112,0.6497902097902097 +0.10545454545454545,0.801958041958042,0.5437762237762238,0.5323076923076923,0.6517482517482518 +0.10545454545454545,0.8036363636363636,0.5471328671328671,0.533986013986014,0.6523076923076923 +0.10517482517482518,0.8002797202797203,0.5499300699300699,0.5345454545454545,0.6534265734265734 +0.1048951048951049,0.7278321678321679,0.551048951048951,0.5323076923076923,0.6551048951048951 +0.1048951048951049,0.7946853146853147,0.554965034965035,0.5328671328671328,0.6565034965034965 +0.1048951048951049,0.8064335664335665,0.5574825174825175,0.5345454545454545,0.6579020979020979 +0.1048951048951049,0.806993006993007,0.56,0.5353846153846153,0.6584615384615384 +0.1048951048951049,0.808951048951049,0.5641958041958042,0.5351048951048951,0.6562237762237763 +0.1048951048951049,0.8097902097902098,0.5664335664335665,0.5345454545454545,0.6542657342657343 +0.10461538461538461,0.8097902097902098,0.5697902097902098,0.5348251748251748,0.6570629370629371 +0.1048951048951049,0.8120279720279721,0.5787412587412587,0.5356643356643357,0.6559440559440559 +0.10517482517482518,0.8125874125874126,0.5868531468531468,0.5345454545454545,0.6551048951048951 +0.10517482517482518,0.8117482517482517,0.5885314685314685,0.5351048951048951,0.6551048951048951 +0.10517482517482518,0.8081118881118882,0.5893706293706293,0.5356643356643357,0.6570629370629371 +0.10517482517482518,0.796923076923077,0.5899300699300699,0.5356643356643357,0.6598601398601398 +0.10573426573426574,0.7882517482517483,0.5893706293706293,0.5365034965034965,0.6629370629370629 +0.10573426573426574,0.8044755244755245,0.5888111888111888,0.5365034965034965,0.6573426573426573 +0.10573426573426574,0.8125874125874126,0.5882517482517482,0.5365034965034965,0.6517482517482518 +0.10573426573426574,0.8137062937062937,0.5888111888111888,0.5365034965034965,0.6483916083916084 +0.10573426573426574,0.8125874125874126,0.5896503496503497,0.5365034965034965,0.6534265734265734 +0.10601398601398601,0.8125874125874126,0.5907692307692308,0.5367832167832168,0.6579020979020979 +0.10601398601398601,0.8131468531468532,0.5904895104895105,0.5365034965034965,0.6595804195804196 +0.10601398601398601,0.8142657342657342,0.5893706293706293,0.5370629370629371,0.6601398601398601 +0.1062937062937063,0.8156643356643357,0.587972027972028,0.5373426573426573,0.6626573426573427 +0.10601398601398601,0.8176223776223777,0.5874125874125874,0.5370629370629371,0.6618181818181819 +0.10601398601398601,0.8179020979020979,0.5832167832167832,0.5373426573426573,0.6618181818181819 +0.10601398601398601,0.8184615384615385,0.5815384615384616,0.5373426573426573,0.6620979020979021 +0.10601398601398601,0.8187412587412587,0.580979020979021,0.5376223776223776,0.6601398601398601 +0.10601398601398601,0.819020979020979,0.5812587412587412,0.5384615384615384,0.6629370629370629 +0.10601398601398601,0.8195804195804196,0.5781818181818181,0.5384615384615384,0.6662937062937063 +0.1062937062937063,0.8198601398601398,0.580979020979021,0.5387412587412588,0.6668531468531469 +0.1062937062937063,0.820979020979021,0.586013986013986,0.5398601398601398,0.6685314685314685 +0.10657342657342657,0.8212587412587412,0.5938461538461538,0.5401398601398602,0.6657342657342658 +0.10657342657342657,0.8223776223776224,0.5974825174825175,0.5401398601398602,0.6665734265734266 +0.10685314685314685,0.8229370629370629,0.6011188811188811,0.5406993006993007,0.6702097902097902 +0.10685314685314685,0.8234965034965035,0.6055944055944056,0.5395804195804196,0.6735664335664335 +0.10685314685314685,0.8232167832167833,0.6095104895104895,0.5398601398601398,0.6721678321678322 +0.10685314685314685,0.8246153846153846,0.6128671328671329,0.5404195804195804,0.6704895104895104 +0.10741258741258741,0.826013986013986,0.6156643356643356,0.540979020979021,0.6612587412587413 +0.1076923076923077,0.8276923076923077,0.6176223776223776,0.5415384615384615,0.6593006993006993 +0.10797202797202797,0.8237762237762237,0.619020979020979,0.5418181818181819,0.6665734265734266 +0.10797202797202797,0.7577622377622377,0.619020979020979,0.540979020979021,0.6696503496503496 +0.10825174825174826,0.8215384615384616,0.6237762237762238,0.540979020979021,0.6704895104895104 +0.10825174825174826,0.826013986013986,0.6293706293706294,0.5418181818181819,0.6713286713286714 +0.10853146853146853,0.8276923076923077,0.633006993006993,0.5432167832167832,0.6724475524475525 +0.10853146853146853,0.8276923076923077,0.6318881118881119,0.5437762237762238,0.6738461538461539 +0.10909090909090909,0.8282517482517483,0.6310489510489511,0.5420979020979021,0.6738461538461539 +0.10909090909090909,0.8288111888111888,0.6372027972027972,0.5429370629370629,0.673006993006993 +0.10909090909090909,0.8304895104895105,0.6397202797202797,0.5448951048951048,0.6732867132867133 +0.10965034965034966,0.8307692307692308,0.6461538461538462,0.5451748251748252,0.673006993006993 +0.10993006993006993,0.8316083916083916,0.6495104895104895,0.5434965034965035,0.6755244755244755 +0.11020979020979021,0.8327272727272728,0.6537062937062937,0.5443356643356644,0.6766433566433566 +0.11020979020979021,0.8335664335664336,0.6562237762237763,0.546013986013986,0.6791608391608391 +0.11048951048951049,0.8335664335664336,0.6598601398601398,0.5465734265734266,0.6822377622377622 +0.11048951048951049,0.8338461538461538,0.6637762237762238,0.5454545454545454,0.6802797202797203 +0.11132867132867133,0.8344055944055944,0.6662937062937063,0.5465734265734266,0.6811188811188811 +0.1116083916083916,0.8341258741258741,0.6690909090909091,0.5474125874125874,0.6808391608391609 +0.11188811188811189,0.8352447552447553,0.6685314685314685,0.5474125874125874,0.6822377622377622 +0.11216783216783217,0.8346853146853147,0.6696503496503496,0.5468531468531469,0.6836363636363636 +0.11216783216783217,0.8268531468531468,0.6724475524475525,0.5476923076923077,0.6841958041958042 +0.11216783216783217,0.7773426573426574,0.6786013986013986,0.5479720279720279,0.6844755244755245 +0.11216783216783217,0.8318881118881118,0.6811188811188811,0.5502097902097902,0.6853146853146853 +0.11244755244755245,0.8386013986013986,0.6864335664335665,0.5485314685314685,0.6813986013986014 +0.11244755244755245,0.8388811188811188,0.6878321678321678,0.5507692307692308,0.6794405594405595 +0.11244755244755245,0.8369230769230769,0.6895104895104895,0.5521678321678322,0.678041958041958 +0.11244755244755245,0.8369230769230769,0.6923076923076923,0.5527272727272727,0.6735664335664335 +0.11244755244755245,0.8383216783216784,0.693986013986014,0.5476923076923077,0.6716083916083916 +0.11244755244755245,0.8386013986013986,0.6956643356643356,0.5518881118881119,0.6755244755244755 +0.11244755244755245,0.8391608391608392,0.6970629370629371,0.5541258741258741,0.6777622377622378 +0.11244755244755245,0.8394405594405594,0.6979020979020979,0.554965034965035,0.6788811188811189 +0.11244755244755245,0.84,0.7001398601398602,0.5524475524475524,0.6797202797202797 +0.11244755244755245,0.8366433566433567,0.7046153846153846,0.5541258741258741,0.6788811188811189 +0.11244755244755245,0.8346853146853147,0.7062937062937062,0.5602797202797203,0.673006993006993 +0.11216783216783217,0.8296503496503497,0.707972027972028,0.5622377622377622,0.6559440559440559 +0.11216783216783217,0.8302097902097902,0.7099300699300699,0.5555244755244755,0.6408391608391608 +0.11216783216783217,0.8332867132867133,0.711048951048951,0.5588811188811189,0.6383216783216783 +0.11216783216783217,0.8366433566433567,0.713006993006993,0.5686713286713286,0.6467132867132868 +0.11216783216783217,0.8377622377622378,0.7138461538461538,0.5675524475524476,0.6556643356643357 +0.11216783216783217,0.8402797202797203,0.7144055944055944,0.5586013986013986,0.6573426573426573 +0.11216783216783217,0.8433566433566434,0.7155244755244755,0.5622377622377622,0.6604195804195804 +0.11216783216783217,0.8427972027972028,0.7163636363636363,0.5672727272727273,0.6744055944055944 +0.11216783216783217,0.84,0.7177622377622378,0.5678321678321678,0.6811188811188811 +0.11216783216783217,0.8386013986013986,0.7194405594405594,0.5622377622377622,0.6836363636363636 +0.11244755244755245,0.8313286713286713,0.7194405594405594,0.5672727272727273,0.6841958041958042 +0.11244755244755245,0.831048951048951,0.7197202797202797,0.5725874125874126,0.6861538461538461 +0.11272727272727273,0.8388811188811188,0.7216783216783217,0.5770629370629371,0.6855944055944055 +0.11272727272727273,0.8433566433566434,0.7216783216783217,0.580979020979021,0.6864335664335665 +0.11272727272727273,0.8441958041958042,0.7208391608391609,0.5946853146853147,0.6906293706293706 +0.11272727272727273,0.8427972027972028,0.7222377622377623,0.5946853146853147,0.6925874125874126 +0.113006993006993,0.8422377622377623,0.7233566433566434,0.5941258741258741,0.6962237762237762 +0.113006993006993,0.8427972027972028,0.7239160839160839,0.5969230769230769,0.6909090909090909 +0.113006993006993,0.8427972027972028,0.7253146853146853,0.6008391608391609,0.6794405594405595 +0.113006993006993,0.8461538461538461,0.7272727272727273,0.6022377622377623,0.6794405594405595 +0.113006993006993,0.8464335664335665,0.7286713286713287,0.6033566433566434,0.6758041958041958 +0.113006993006993,0.8458741258741259,0.7281118881118881,0.605034965034965,0.6783216783216783 +0.113006993006993,0.8453146853146853,0.7303496503496504,0.6041958041958042,0.6858741258741259 +0.113006993006993,0.8394405594405594,0.73006993006993,0.6055944055944056,0.6878321678321678 +0.113006993006993,0.8402797202797203,0.730909090909091,0.6072727272727273,0.6892307692307692 +0.113006993006993,0.8430769230769231,0.732027972027972,0.61006993006993,0.6895104895104895 +0.113006993006993,0.8472727272727273,0.7323076923076923,0.61006993006993,0.6892307692307692 +0.113006993006993,0.8478321678321679,0.7334265734265735,0.612027972027972,0.6895104895104895 +0.113006993006993,0.848951048951049,0.733986013986014,0.6139860139860139,0.6861538461538461 +0.113006993006993,0.8495104895104895,0.7351048951048951,0.6137062937062937,0.6816783216783217 +0.113006993006993,0.8486713286713287,0.735944055944056,0.6139860139860139,0.6827972027972028 +0.113006993006993,0.8497902097902098,0.7362237762237762,0.6162237762237762,0.6836363636363636 diff --git a/results/bt_1h128n_ReLU_results.csv b/results/bt_1h128n_ReLU_results.csv new file mode 100644 index 0000000..80bc803 --- /dev/null +++ b/results/bt_1h128n_ReLU_results.csv @@ -0,0 +1,401 @@ +training_accuracy,validation_accuracy,training_loss,validation_loss,test_accuracy,test_loss +0.038811188811188814,0.019580419580419582,6.393057707616091,4.424285425524005,0.005,11.902604900906708 +0.061888111888111885,0.07132867132867132,3.9845982330615697,3.9789311938961127,, +0.16783216783216784,0.16783216783216784,3.7523821576223106,3.73892906486598,, +0.20104895104895104,0.2111888111888112,3.547375963126129,3.5325973891094073,, +0.21573426573426574,0.24335664335664337,3.3889472691926317,3.3784455129417115,, +0.23986013986013985,0.27412587412587414,3.2452346036953097,3.2397597229873654,, +0.2765734265734266,0.3062937062937063,3.105799184604157,3.105523916826381,, +0.30524475524475525,0.3202797202797203,2.974008278291045,2.9807005713549932,, +0.32342657342657344,0.3412587412587413,2.851272600241783,2.8633433589565733,, +0.34440559440559443,0.35664335664335667,2.734853740721626,2.7516118580217057,, +0.3632867132867133,0.36643356643356645,2.621368308580227,2.6435472302556806,, +0.38006993006993006,0.38181818181818183,2.509419887826101,2.539612409717918,, +0.3996503496503496,0.3986013986013986,2.403726365402373,2.4406362731369544,, +0.42202797202797204,0.413986013986014,2.308426181453028,2.3469294625743102,, +0.436013986013986,0.42377622377622376,2.2211191866913147,2.2605116663938296,, +0.4486013986013986,0.43776223776223777,2.1401110491667907,2.1821801077271625,, +0.46678321678321677,0.46293706293706294,2.064477867947346,2.1105243264683984,, +0.48391608391608393,0.4727272727272727,1.994366376479573,2.0460212523098784,, +0.4972027972027972,0.4783216783216783,1.929564498384421,1.9876044250342433,, +0.5087412587412588,0.4881118881118881,1.8693292144897695,1.9341425261979983,, +0.5241258741258741,0.49230769230769234,1.8139224030421812,1.8846863061732506,, +0.5405594405594406,0.5048951048951049,1.7622262223437983,1.83837352939355,, +0.5534965034965035,0.5188811188811189,1.714016525703335,1.7954754044442,, +0.563986013986014,0.5328671328671328,1.6687527498049022,1.7546248297241294,, +0.5723776223776224,0.5482517482517483,1.6258644869700987,1.7157204875655092,, +0.5842657342657342,0.5566433566433566,1.5853954338793133,1.6793711405187335,, +0.5947552447552448,0.5706293706293706,1.5469014110749013,1.644938588911164,, +0.6055944055944056,0.5818181818181818,1.5102016832585097,1.6123021607656616,, +0.6174825174825175,0.5888111888111888,1.4753172002652277,1.581162917786896,, +0.6342657342657343,0.6013986013986014,1.4426747107366018,1.5524952879150062,, +0.6234265734265734,0.6,1.437213750108359,1.5687059299238513,, +0.5961538461538461,0.5678321678321678,1.4814467405677567,1.622348542065846,, +0.6223776223776224,0.6027972027972028,1.416683287828632,1.5488620058290425,, +0.6384615384615384,0.6125874125874126,1.3745146293628525,1.5070317252590513,, +0.6493006993006993,0.6265734265734266,1.3423865754262512,1.4766873403236087,, +0.6580419580419581,0.6335664335664336,1.315826644295191,1.4525128796359559,, +0.6636363636363637,0.6391608391608392,1.2918495064750344,1.430728196927532,, +0.6713286713286714,0.6475524475524476,1.2673976692943372,1.4078775136297337,, +0.6786713286713286,0.6531468531468532,1.2440141031244953,1.3860083679370314,, +0.6828671328671329,0.6531468531468532,1.2225187419435568,1.3664157247318005,, +0.6895104895104895,0.6671328671328671,1.199199180426684,1.3446421905043267,, +0.6923076923076923,0.6741258741258741,1.1776850306235038,1.324060313273129,, +0.6975524475524476,0.6783216783216783,1.157110950827814,1.3045481230790203,, +0.7062937062937062,0.6839160839160839,1.1368607348756332,1.2847942378546264,, +0.7118881118881119,0.6937062937062937,1.1165596106772973,1.2646542083734644,, +0.7185314685314685,0.7034965034965035,1.0962060621974061,1.244319672831613,, +0.7251748251748251,0.7118881118881119,1.0775863118246656,1.2259321395759932,, +0.7307692307692307,0.7160839160839161,1.060454814393957,1.2089018768858784,, +0.7346153846153847,0.7258741258741259,1.0439702047034873,1.1925118787450188,, +0.7384615384615385,0.73006993006993,1.0279636945114625,1.1765035855084014,, +0.7426573426573426,0.737062937062937,1.011891048956524,1.1603082123734547,, +0.7468531468531469,0.7384615384615385,0.9965589565541074,1.1447441459099315,, +0.7520979020979021,0.7412587412587412,0.9812919885739722,1.1291320261250148,, +0.7580419580419581,0.7496503496503496,0.966097016893109,1.1136842983266404,, +0.7618881118881119,0.7538461538461538,0.9513886433919149,1.0986762135598267,, +0.765034965034965,0.7552447552447552,0.9375878985390935,1.0847650421521045,, +0.7692307692307693,0.7566433566433567,0.9250631304970762,1.0725547354217941,, +0.772027972027972,0.7636363636363637,0.9132519618891549,1.0609879143115475,, +0.7762237762237763,0.7636363636363637,0.9015459602772413,1.0493720753096798,, +0.7772727272727272,0.7678321678321678,0.8892439639360892,1.037002738019266,, +0.7828671328671328,0.7706293706293706,0.8774895355842973,1.0253320508717176,, +0.7863636363636364,0.7706293706293706,0.8658329626409835,1.01362667276598,, +0.7916083916083916,0.7734265734265734,0.8546794043173643,1.0025531835413701,, +0.7933566433566434,0.7734265734265734,0.8438615748964038,0.9917907963972437,, +0.7965034965034965,0.7762237762237763,0.8333783921238097,0.9815615944170573,, +0.7986013986013986,0.7776223776223776,0.8233494606617316,0.9718676470084168,, +0.8,0.7776223776223776,0.8142087045062824,0.9631735404108931,, +0.8024475524475524,0.779020979020979,0.8055572904920124,0.9550423453653094,, +0.8038461538461539,0.7804195804195804,0.7974506602416759,0.9476143891485486,, +0.8076923076923077,0.7832167832167832,0.7891565843722607,0.9398005770691026,, +0.8097902097902098,0.786013986013986,0.7811394184752668,0.932329095369298,, +0.8122377622377622,0.786013986013986,0.7734192190307038,0.9252579017858467,, +0.8129370629370629,0.7846153846153846,0.7663496217726583,0.9189669756880081,, +0.8160839160839161,0.7846153846153846,0.7590579658322949,0.9122104559348019,, +0.8171328671328671,0.786013986013986,0.7519676036295828,0.9056122843196367,, +0.8195804195804196,0.7874125874125875,0.7448404774072959,0.8989313070461413,, +0.8213286713286714,0.7888111888111888,0.7376309962277134,0.8920762316789772,, +0.8223776223776224,0.7902097902097902,0.7303351495565,0.8850566077378048,, +0.8227272727272728,0.7944055944055944,0.7231511121436227,0.8781260192540412,, +0.8248251748251748,0.7958041958041958,0.7161559885896078,0.8714681573836499,, +0.8276223776223777,0.7986013986013986,0.7094243600002218,0.8651138719138035,, +0.8304195804195804,0.7986013986013986,0.7029206627905166,0.8590038894788389,, +0.8325174825174825,0.8041958041958042,0.696580610664915,0.8530319481772916,, +0.8332167832167832,0.8055944055944056,0.6904835856070884,0.8473692501964367,, +0.8356643356643356,0.8055944055944056,0.6845144739985044,0.84183413033758,, +0.8367132867132867,0.8083916083916084,0.6787705799214523,0.8366698561563649,, +0.8395104895104896,0.8111888111888111,0.673056791191927,0.8315509266005122,, +0.8398601398601399,0.8153846153846154,0.6674282584926006,0.8265499888803137,, +0.8402097902097903,0.8167832167832167,0.6619811367504673,0.8216820574951014,, +0.8405594405594405,0.8181818181818182,0.6566156743804398,0.8168627874070057,, +0.8419580419580419,0.8195804195804196,0.6513404906007424,0.8121313969550531,, +0.8426573426573427,0.8195804195804196,0.6461879832824878,0.8075395974525217,, +0.843006993006993,0.820979020979021,0.6411945668461844,0.8030902823578719,, +0.8444055944055944,0.820979020979021,0.6363466944943622,0.798806941469012,, +0.8444055944055944,0.8223776223776224,0.6315867126586852,0.794634247701298,, +0.8454545454545455,0.8223776223776224,0.6269059404511083,0.7905163497781146,, +0.8486013986013986,0.8237762237762237,0.6223473530856064,0.7865190153571869,, +0.8506993006993007,0.8265734265734266,0.6178500346577955,0.7825200702889235,, +0.8527972027972028,0.8293706293706293,0.6134392565077933,0.7786267436350723,, +0.8534965034965035,0.8321678321678322,0.6091360668539197,0.7748232650743433,, +0.8545454545454545,0.8335664335664336,0.6049043301108064,0.7711060437287951,, +0.8555944055944056,0.8335664335664336,0.6007900290441675,0.7675295154191503,, +0.855944055944056,0.8349650349650349,0.5967736590078688,0.7640587461411142,, +0.8566433566433567,0.8349650349650349,0.5928488577155713,0.7607200279498646,, +0.856993006993007,0.8349650349650349,0.5889981768421532,0.7575087581495752,, +0.8573426573426574,0.8363636363636363,0.5852159828739676,0.7542851054170967,, +0.8576923076923076,0.8363636363636363,0.5814956022369508,0.7511261697263104,, +0.8590909090909091,0.8377622377622378,0.5778345564281717,0.7480160383795313,, +0.8597902097902098,0.8377622377622378,0.5742345980334811,0.7449932545258477,, +0.8604895104895105,0.8377622377622378,0.5707001226043489,0.7420538727286314,, +0.8604895104895105,0.8377622377622378,0.5672242119522065,0.7391782783320443,, +0.8611888111888112,0.8377622377622378,0.5638013759074683,0.7363752661699542,, +0.8622377622377623,0.8377622377622378,0.5604299662675772,0.733604275237464,, +0.8625874125874126,0.8391608391608392,0.5571142482263086,0.730894022004846,, +0.8625874125874126,0.8391608391608392,0.553849399115484,0.728285085741934,, +0.8639860139860139,0.8391608391608392,0.5506392245832176,0.7256658911191665,, +0.8646853146853147,0.8405594405594405,0.5474755631501967,0.7231211968216628,, +0.8646853146853147,0.8405594405594405,0.5443572500952057,0.7206277604669946,, +0.8653846153846154,0.8405594405594405,0.5412845002956146,0.7181690102994878,, +0.8657342657342657,0.8419580419580419,0.5382548130615198,0.7157418499673489,, +0.8664335664335664,0.8433566433566434,0.5352669309251715,0.7133577600077438,, +0.8685314685314686,0.8447552447552448,0.5323167199800389,0.7109988416866246,, +0.8692307692307693,0.8461538461538461,0.5294013825862169,0.7086920098789949,, +0.8699300699300699,0.8475524475524475,0.5265268388557007,0.7064247287167126,, +0.8702797202797202,0.8475524475524475,0.5236924884166508,0.7041684412943551,, +0.8716783216783217,0.8475524475524475,0.520896140989342,0.7019681432505747,, +0.8723776223776224,0.8475524475524475,0.518135288154923,0.6998087590791549,, +0.8730769230769231,0.8475524475524475,0.5154073462119959,0.697645904530215,, +0.8734265734265734,0.848951048951049,0.5127118227655683,0.6955359460654298,, +0.8741258741258742,0.848951048951049,0.5100503673283945,0.693450345407703,, +0.8744755244755245,0.848951048951049,0.5074169591655656,0.6914004053415536,, +0.8755244755244755,0.8517482517482518,0.5048139070950527,0.6893822908073006,, +0.8758741258741258,0.8503496503496504,0.5022388203367849,0.6874237647178243,, +0.8765734265734266,0.8503496503496504,0.4996961723903023,0.6854394899477907,, +0.8765734265734266,0.8503496503496504,0.4971854634381349,0.68352695343613,, +0.877972027972028,0.8503496503496504,0.49470493715832464,0.6816194363882497,, +0.8786713286713287,0.8503496503496504,0.4922539434752675,0.6797341153065294,, +0.879020979020979,0.8517482517482518,0.4898315704029924,0.6778677859835772,, +0.8800699300699301,0.8517482517482518,0.4874376335899764,0.676024636628574,, +0.8807692307692307,0.8517482517482518,0.48507227721831425,0.6742008994352066,, +0.8807692307692307,0.8517482517482518,0.4827295363648105,0.6724167602449469,, +0.8818181818181818,0.8517482517482518,0.48041554606960396,0.6706431109694873,, +0.8825174825174825,0.8531468531468531,0.47812807566959203,0.6688950412303597,, +0.8828671328671329,0.8531468531468531,0.47586494112641514,0.6671813634884427,, +0.8828671328671329,0.8531468531468531,0.47362707061352943,0.6654690120247269,, +0.8832167832167832,0.8531468531468531,0.47141449691046233,0.6637974796216513,, +0.8835664335664336,0.8517482517482518,0.46922742141935825,0.6621791645478712,, +0.8839160839160839,0.8531468531468531,0.4670554085026014,0.6605096170197975,, +0.8853146853146853,0.8531468531468531,0.4649079287597316,0.6588856698181031,, +0.8860139860139861,0.8545454545454545,0.4627844019115648,0.6573029446271528,, +0.8863636363636364,0.8545454545454545,0.4606837656533336,0.6557227610427312,, +0.8867132867132868,0.8545454545454545,0.4586044737529252,0.6541503632788631,, +0.8874125874125874,0.855944055944056,0.4565457056153967,0.6526087081756855,, +0.8874125874125874,0.855944055944056,0.45450031437603217,0.6511156807157686,, +0.8881118881118881,0.8573426573426574,0.452469631223566,0.6496579647015781,, +0.8881118881118881,0.8573426573426574,0.45043736119726824,0.6481775940109681,, +0.8884615384615384,0.855944055944056,0.44842718903608775,0.6467032517142088,, +0.8888111888111888,0.8545454545454545,0.4464307357485297,0.6452403676155243,, +0.8895104895104895,0.8545454545454545,0.4444547818783156,0.6438218038608309,, +0.8895104895104895,0.8545454545454545,0.4424953376969365,0.6423810112788174,, +0.8895104895104895,0.8545454545454545,0.44055643028671193,0.6409952419489282,, +0.8909090909090909,0.8545454545454545,0.43863776812521277,0.6396045339447246,, +0.8916083916083916,0.855944055944056,0.43673839282594384,0.6382439837401861,, +0.8923076923076924,0.855944055944056,0.4348567633176291,0.6368913686968546,, +0.8926573426573426,0.855944055944056,0.4329933826878536,0.6355552678264379,, +0.8933566433566433,0.855944055944056,0.43114814780487865,0.6342286874365796,, +0.8937062937062937,0.855944055944056,0.42932036775475707,0.6329448679387268,, +0.8937062937062937,0.855944055944056,0.4275090771066927,0.6316505883129272,, +0.8944055944055944,0.855944055944056,0.42571281405848455,0.6303612498500293,, +0.8944055944055944,0.855944055944056,0.4239325735285791,0.6290800531887386,, +0.8944055944055944,0.855944055944056,0.42216648298555526,0.6278178449316542,, +0.8951048951048951,0.855944055944056,0.4204148081434475,0.6265670036792441,, +0.8951048951048951,0.855944055944056,0.4186784305858992,0.625335890551962,, +0.8958041958041958,0.855944055944056,0.4169577559985044,0.6241198412982444,, +0.8968531468531469,0.855944055944056,0.41525346412907493,0.62291000404537,, +0.8968531468531469,0.855944055944056,0.41356243263670045,0.6217139501631839,, +0.8968531468531469,0.855944055944056,0.41188512504531605,0.6205233751222432,, +0.8989510489510489,0.855944055944056,0.4102159602499308,0.6193594557306982,, +0.8993006993006993,0.8573426573426574,0.4085575168400502,0.6181767234483239,, +0.9,0.8573426573426574,0.406898091460201,0.6170434103665362,, +0.9,0.8573426573426574,0.4052500427150192,0.6158886398513813,, +0.901048951048951,0.8573426573426574,0.4036157452162119,0.6147516539846416,, +0.901048951048951,0.8587412587412587,0.4019939478652895,0.6136297287817403,, +0.9013986013986014,0.8587412587412587,0.400385182512734,0.6125080100137715,, +0.9020979020979021,0.8587412587412587,0.39879080421913493,0.6114125972892116,, +0.9020979020979021,0.8601398601398601,0.39720657925460967,0.6103201241308411,, +0.9024475524475525,0.8601398601398601,0.39563412527779157,0.6092339273235348,, +0.9031468531468532,0.8601398601398601,0.3940736903916854,0.6081884836850824,, +0.9034965034965035,0.8615384615384616,0.39252519715472944,0.6071068279271707,, +0.9038461538461539,0.8615384615384616,0.3909877153192137,0.6060480518254954,, +0.9038461538461539,0.862937062937063,0.3894634719418215,0.6049849581883495,, +0.9041958041958041,0.862937062937063,0.38795354075106675,0.6039482257486838,, +0.9041958041958041,0.862937062937063,0.38645505410023534,0.6029205510591219,, +0.9045454545454545,0.862937062937063,0.38496941086665315,0.6018983393577093,, +0.9055944055944056,0.8615384615384616,0.38349550107534575,0.600883117240084,, +0.9059440559440559,0.8601398601398601,0.38203256190047524,0.5998768645013188,, +0.9062937062937063,0.8615384615384616,0.38058017939908584,0.5988757069951127,, +0.906993006993007,0.8615384615384616,0.3791385133872387,0.5978921137623348,, +0.9073426573426573,0.8615384615384616,0.3777074628405843,0.5969167016464789,, +0.9083916083916084,0.8615384615384616,0.3762867127398134,0.5959361915832547,, +0.9087412587412588,0.8615384615384616,0.3748756581619316,0.5949720305783379,, +0.9094405594405595,0.8615384615384616,0.3734750051104741,0.5940171252536561,, +0.9097902097902097,0.8615384615384616,0.3720843518557027,0.5930810535764094,, +0.9101398601398601,0.8615384615384616,0.37070386923285203,0.5921452489906264,, +0.9104895104895104,0.8615384615384616,0.36933285928928034,0.5912052891622114,, +0.9104895104895104,0.8615384615384616,0.36797075838619686,0.590285715917607,, +0.9108391608391608,0.8615384615384616,0.36661633242485114,0.589347585844113,, +0.9111888111888112,0.8615384615384616,0.365271276215104,0.5884337634993637,, +0.9108391608391608,0.8615384615384616,0.36393404164337123,0.5875374263164678,, +0.9115384615384615,0.862937062937063,0.36260413636138566,0.5866329908531599,, +0.9115384615384615,0.862937062937063,0.36128325362782066,0.5857386605438457,, +0.9118881118881119,0.8643356643356643,0.35997168402294116,0.5848474960011882,, +0.9118881118881119,0.8643356643356643,0.35866835402869146,0.5839650252794272,, +0.9122377622377622,0.862937062937063,0.3573746174438719,0.5830943423303864,, +0.9122377622377622,0.862937062937063,0.3560890381179709,0.5822084242682377,, +0.9125874125874126,0.8643356643356643,0.3548117107886054,0.5813361985195449,, +0.9125874125874126,0.8643356643356643,0.35354272001452897,0.5804842186173711,, +0.9132867132867133,0.8643356643356643,0.35228213118887847,0.5796388589302973,, +0.9129370629370629,0.8657342657342657,0.3510305015289124,0.5788000920701826,, +0.9132867132867133,0.8657342657342657,0.34978725447285536,0.5779639686260436,, +0.9136363636363637,0.8657342657342657,0.34855258242001275,0.5771436947701198,, +0.9136363636363637,0.8657342657342657,0.3473261962597384,0.5763246944431208,, +0.9143356643356644,0.8643356643356643,0.34610770499571075,0.5755039778456756,, +0.9150349650349651,0.8643356643356643,0.34489688928493745,0.5746902058065239,, +0.9157342657342658,0.8643356643356643,0.3436939449521259,0.5738845449246318,, +0.916083916083916,0.8643356643356643,0.34249707510223026,0.5730974997114726,, +0.9164335664335664,0.8643356643356643,0.341305080949274,0.5722956460471083,, +0.9171328671328671,0.8671328671328671,0.340120857750397,0.571499768418261,, +0.9178321678321678,0.8671328671328671,0.3389439123536763,0.5707209968219016,, +0.9181818181818182,0.8671328671328671,0.3377704311176365,0.5699469948963801,, +0.9188811188811189,0.8671328671328671,0.33660382953040846,0.5691842260043686,, +0.9192307692307692,0.8671328671328671,0.33544495271640934,0.5684083159088281,, +0.9195804195804196,0.8685314685314686,0.33429209162819556,0.5676390381742121,, +0.91993006993007,0.8699300699300699,0.33314775986454354,0.5668703391558941,, +0.9195804195804196,0.8699300699300699,0.33201067315866495,0.5661116138429493,, +0.9195804195804196,0.8699300699300699,0.33088039950817705,0.5653593877541289,, +0.91993006993007,0.8699300699300699,0.32975694782205633,0.5646051010858683,, +0.91993006993007,0.8713286713286713,0.32863735793766247,0.5638656014298777,, +0.91993006993007,0.8727272727272727,0.32752344806047284,0.5631235535873936,, +0.9206293706293707,0.8727272727272727,0.3264158062807729,0.5623914978511804,, +0.920979020979021,0.8741258741258742,0.32531426100992744,0.5616637767237913,, +0.920979020979021,0.8741258741258742,0.3242191435102792,0.5609416428156083,, +0.920979020979021,0.8741258741258742,0.3231307871136036,0.5602363302788812,, +0.9213286713286714,0.8741258741258742,0.32204859585828155,0.5595288798580862,, +0.9213286713286714,0.8741258741258742,0.3209712942832012,0.5588207801008908,, +0.9216783216783216,0.8741258741258742,0.3198989188756257,0.5581068866211645,, +0.922027972027972,0.8727272727272727,0.31883293871712914,0.5574146127510091,, +0.922027972027972,0.8727272727272727,0.31777292779615823,0.5567252239176785,, +0.922027972027972,0.8727272727272727,0.31671848501341315,0.5560573190550208,, +0.9223776223776223,0.8727272727272727,0.3156702465974988,0.555373204793962,, +0.9227272727272727,0.8727272727272727,0.31462780428052806,0.5547042586488047,, +0.9223776223776223,0.8727272727272727,0.3135902329012098,0.5540355287787795,, +0.9223776223776223,0.8727272727272727,0.3125581931275951,0.5533992035494814,, +0.9227272727272727,0.8727272727272727,0.31153089988401667,0.5527303815241956,, +0.9227272727272727,0.8727272727272727,0.31050873515141525,0.5520759277277298,, +0.9234265734265734,0.8713286713286713,0.3094926960568246,0.5514250585461603,, +0.9237762237762238,0.8713286713286713,0.3084825796180311,0.5507872209482763,, +0.9241258741258741,0.8713286713286713,0.307477723363289,0.5501267275276988,, +0.9251748251748252,0.8713286713286713,0.3064775953614192,0.5494841713621249,, +0.9251748251748252,0.8713286713286713,0.30548290981153753,0.5488512614475514,, +0.9255244755244755,0.8713286713286713,0.30449320772269234,0.548219854423086,, +0.9262237762237763,0.8713286713286713,0.30350798174280336,0.5476044036385928,, +0.9262237762237763,0.8713286713286713,0.3025281337224161,0.5469665261667487,, +0.9262237762237763,0.8713286713286713,0.3015454302007661,0.5463863912708424,, +0.926923076923077,0.8713286713286713,0.3005666440823029,0.5458018715681543,, +0.926923076923077,0.8713286713286713,0.29959446711445936,0.5451988139412536,, +0.9272727272727272,0.8713286713286713,0.2986271796296898,0.544641032465172,, +0.9272727272727272,0.8713286713286713,0.29766554567136755,0.5440459770152157,, +0.9279720279720279,0.8713286713286713,0.29670601108686867,0.5434399319144567,, +0.9279720279720279,0.8713286713286713,0.2957500274674958,0.5428167553063393,, +0.9283216783216783,0.8713286713286713,0.2947972592759179,0.5422030241280202,, +0.9283216783216783,0.8713286713286713,0.29384654004475,0.5415536360666485,, +0.9286713286713286,0.8713286713286713,0.29290217944483776,0.5409500887008593,, +0.929020979020979,0.8713286713286713,0.29196186414518716,0.5403387903773804,, +0.9300699300699301,0.8727272727272727,0.29102503554400694,0.5396835525871049,, +0.9300699300699301,0.8741258741258742,0.2900943090327005,0.5391033038791131,, +0.9304195804195804,0.8741258741258742,0.28916726103636153,0.5384695911425714,, +0.9307692307692308,0.8741258741258742,0.288245724077909,0.5378678107954935,, +0.9314685314685315,0.8741258741258742,0.2873306433322575,0.5373341737005595,, +0.9318181818181818,0.8755244755244755,0.28641889350956357,0.5367329810562751,, +0.9314685314685315,0.8755244755244755,0.2855126951331183,0.536187969524412,, +0.9318181818181818,0.8755244755244755,0.2846101960810131,0.535593149771985,, +0.9321678321678322,0.8755244755244755,0.2837133434626587,0.5350530863790872,, +0.9321678321678322,0.8755244755244755,0.2828202437448496,0.5344872873754231,, +0.9321678321678322,0.8755244755244755,0.2819315358910068,0.5339255270893254,, +0.9325174825174826,0.8755244755244755,0.28104614066211225,0.5333324544262709,, +0.9325174825174826,0.8755244755244755,0.28016619883738597,0.5327824765353293,, +0.9325174825174826,0.8755244755244755,0.27929024413352416,0.5322547062820385,, +0.9328671328671329,0.8755244755244755,0.2784176884436498,0.5316715182860199,, +0.9328671328671329,0.8755244755244755,0.27755005772841435,0.5311347230580158,, +0.9328671328671329,0.8755244755244755,0.27668635250210516,0.5306187137648718,, +0.9332167832167833,0.8755244755244755,0.27582629399259717,0.5300537833912206,, +0.9335664335664335,0.8755244755244755,0.2749699735961338,0.5295114368462083,, +0.9335664335664335,0.8755244755244755,0.27411847175831655,0.529013926114464,, +0.9335664335664335,0.8755244755244755,0.27327029526896596,0.5284588667604068,, +0.9335664335664335,0.8755244755244755,0.27242610074794715,0.5279334913956336,, +0.9339160839160839,0.8755244755244755,0.2715855110330222,0.5274096769613312,, +0.9342657342657342,0.8755244755244755,0.27074833895445777,0.5268795051360914,, +0.9349650349650349,0.8755244755244755,0.2699154083134741,0.5263652439287603,, +0.9353146853146853,0.8755244755244755,0.26908656543052495,0.5258601024137561,, +0.9356643356643357,0.8755244755244755,0.268261543417423,0.5253622020806207,, +0.9356643356643357,0.8755244755244755,0.2674404547722463,0.5248796019034135,, +0.9356643356643357,0.8755244755244755,0.2666220735310435,0.5243675326894884,, +0.936013986013986,0.8755244755244755,0.2658079064059659,0.523883199285919,, +0.9367132867132867,0.8755244755244755,0.26499831429151693,0.5234273170724312,, +0.9367132867132867,0.8755244755244755,0.2641911169588695,0.5229026826834856,, +0.9370629370629371,0.8755244755244755,0.2633881167749007,0.5224164187545928,, +0.9370629370629371,0.8755244755244755,0.2625903619321901,0.5219444242008332,, +0.9370629370629371,0.8769230769230769,0.2617960390867563,0.5214690488959348,, +0.9374125874125874,0.8769230769230769,0.2610033826365655,0.5209556929099863,, +0.9384615384615385,0.8783216783216783,0.2602151883813818,0.5205016592816051,, +0.9384615384615385,0.8783216783216783,0.2594290633327102,0.5200009602170742,, +0.9384615384615385,0.8783216783216783,0.2586479112751194,0.5195603986159505,, +0.9388111888111889,0.8783216783216783,0.2578692532430515,0.5190848403296827,, +0.9391608391608391,0.8783216783216783,0.2570942154297703,0.5186164255767688,, +0.9395104895104895,0.8783216783216783,0.25632218127652484,0.5181446318685636,, +0.9395104895104895,0.8783216783216783,0.25555364795386354,0.5176767704205878,, +0.9398601398601398,0.8783216783216783,0.2547883408940661,0.517203959168206,, +0.9402097902097902,0.8783216783216783,0.2540264087633706,0.5167361903054182,, +0.9409090909090909,0.8783216783216783,0.25326802066782006,0.5162900027488889,, +0.9409090909090909,0.8783216783216783,0.2525141043308968,0.5158659485242324,, +0.9409090909090909,0.8783216783216783,0.2517626291101916,0.515419492292404,, +0.9409090909090909,0.8783216783216783,0.25101217572749074,0.5149645329145646,, +0.9412587412587412,0.8783216783216783,0.25026634915699525,0.5145151260160205,, +0.9412587412587412,0.8783216783216783,0.24952531500485747,0.5141111703028366,, +0.9416083916083916,0.8783216783216783,0.24878437957180108,0.5136431536941855,, +0.941958041958042,0.8783216783216783,0.24804875559467976,0.5132385994981842,, +0.9423076923076923,0.8783216783216783,0.24731445054638088,0.5127814691061278,, +0.9426573426573427,0.8783216783216783,0.24658531452721807,0.5123881008677809,, +0.943006993006993,0.8783216783216783,0.24585810251741305,0.5119597289008176,, +0.9433566433566434,0.8783216783216783,0.2451341999281766,0.5115366916563869,, +0.9440559440559441,0.8797202797202798,0.2444124796187053,0.5111041373032766,, +0.9447552447552447,0.8797202797202798,0.24369459955805786,0.5106730159138082,, +0.9447552447552447,0.8797202797202798,0.24297979189321878,0.5102565738991465,, +0.9451048951048951,0.8797202797202798,0.24226752435360183,0.5098373039370909,, +0.9458041958041958,0.8797202797202798,0.241558463154129,0.5094272536930845,, +0.9458041958041958,0.8797202797202798,0.24085226989327252,0.5090241317776396,, +0.9461538461538461,0.8811188811188811,0.24014876117722161,0.5086057582250901,, +0.9472027972027972,0.8811188811188811,0.23944483213705842,0.5082245948653248,, +0.9479020979020979,0.8825174825174825,0.23874465192417485,0.5078361363388749,, +0.9482517482517483,0.8825174825174825,0.23804733417015583,0.5074346124518522,, +0.9486013986013986,0.8825174825174825,0.23735308316095222,0.5070237675889876,, +0.9486013986013986,0.8825174825174825,0.23666086982687237,0.5065915256695374,, +0.9486013986013986,0.8825174825174825,0.23597283645138092,0.5061958410568818,, +0.9493006993006993,0.8825174825174825,0.23528926206892659,0.5058451555464295,, +0.9493006993006993,0.8811188811188811,0.23460577710795597,0.5054123077380466,, +0.9493006993006993,0.8811188811188811,0.2339051689620153,0.5049346451337071,, +0.9503496503496504,0.8811188811188811,0.23320987015378572,0.5045207489661953,, +0.9503496503496504,0.8811188811188811,0.2325192591121786,0.5041074209020331,, +0.951048951048951,0.8811188811188811,0.2318326574139189,0.503704096666146,, +0.951048951048951,0.8811188811188811,0.23114910168633637,0.5033033796440842,, +0.951048951048951,0.8811188811188811,0.23046941488778458,0.5029076562542335,, +0.9513986013986014,0.8811188811188811,0.22979304226854033,0.5025141136631591,, +0.9517482517482517,0.8811188811188811,0.22911874913207683,0.5021271409973774,, +0.9517482517482517,0.8811188811188811,0.2284476762093357,0.5017415194880208,, +0.9520979020979021,0.8825174825174825,0.22777980768938585,0.501357511785521,, +0.9520979020979021,0.8811188811188811,0.22711457718670486,0.5009701892858283,, +0.9520979020979021,0.8811188811188811,0.2264520578004723,0.500591569316164,, +0.9527972027972028,0.8811188811188811,0.2257923308735793,0.5002115286513854,, +0.9527972027972028,0.8811188811188811,0.22513535170931148,0.4998388248436576,, +0.9534965034965035,0.8811188811188811,0.2244801643784773,0.49946456292572083,, +0.9538461538461539,0.8811188811188811,0.22382771806159313,0.49909291664112937,, +0.9538461538461539,0.8811188811188811,0.22317780975599977,0.49872109780279966,, +0.9538461538461539,0.8811188811188811,0.222530718084159,0.49835008327672053,, +0.9541958041958042,0.8825174825174825,0.22188625733287293,0.49798575564162734,, +0.9545454545454546,0.8811188811188811,0.22124480224148343,0.49762249203759085,, +0.9545454545454546,0.8811188811188811,0.22060575976549385,0.4972555860818327,, +0.9545454545454546,0.8825174825174825,0.21996934578415048,0.4968967948999989,, +0.9545454545454546,0.8825174825174825,0.219335796199205,0.49653188350606553,, +0.9545454545454546,0.8825174825174825,0.21870476075627662,0.4961795193318407,, +0.9545454545454546,0.8825174825174825,0.21807618845996243,0.4958205407324051,, +0.9545454545454546,0.8825174825174825,0.21745036383378033,0.49546419116270235,, +0.9545454545454546,0.8825174825174825,0.21682875302698007,0.49508659829221396,, +0.9545454545454546,0.8825174825174825,0.21620867951756872,0.49473479367147044,, +0.9545454545454546,0.8825174825174825,0.21558917285809176,0.4944048029036305,, +0.9545454545454546,0.8825174825174825,0.21497292796095102,0.4940688917086719,, +0.9548951048951049,0.8825174825174825,0.2143589095370103,0.4937266980665681,, +0.9548951048951049,0.8825174825174825,0.2137472961575646,0.49335317532756523,, +0.9552447552447553,0.8825174825174825,0.2131380096141815,0.49301012384241105,, +0.9552447552447553,0.8811188811188811,0.21251040125425807,0.49253933912041986,, +0.9555944055944056,0.8811188811188811,0.2118786487354526,0.4921451679790616,, +0.9555944055944056,0.8811188811188811,0.21125287567225542,0.4917602492857801,, +0.9552447552447553,0.8811188811188811,0.21063147819042174,0.49138574069176655,, +0.9552447552447553,0.8811188811188811,0.2100147713154583,0.491024461472506,, +0.9552447552447553,0.8811188811188811,0.20940178718499622,0.4906505796110533,, +0.9552447552447553,0.8811188811188811,0.2087907375536904,0.49029555905968614,, +0.955944055944056,0.8825174825174825,0.20818658874242277,0.48993115968003975,, +0.955944055944056,0.8825174825174825,0.20758326860040371,0.4895818410748453,, +0.955944055944056,0.8825174825174825,0.20698108041128366,0.48923237967908956,, +0.955944055944056,0.8825174825174825,0.20638500731874315,0.4888777133174856,, +0.955944055944056,0.8825174825174825,0.20579041667611342,0.4885208516157874,, +0.955944055944056,0.8825174825174825,0.20519719221659524,0.4881837717290209,, +0.9562937062937062,0.8825174825174825,0.20460762555237358,0.48783513146340163,, +0.9562937062937062,0.8825174825174825,0.20401783228554077,0.48750201435589013,, +0.9566433566433566,0.8825174825174825,0.203434238022485,0.4871461636950177,, +0.9566433566433566,0.8825174825174825,0.2028517055874286,0.48680227668835635,, +0.956993006993007,0.8825174825174825,0.20227101188606883,0.486467956625879,, +0.956993006993007,0.8825174825174825,0.20169035173258237,0.4861477884105082,, +0.9576923076923077,0.8839160839160839,0.20111560472671297,0.4858101489967659,, +0.9576923076923077,0.8853146853146853,0.2005416171599293,0.4854822204570802,, diff --git a/weights/bel_weights.npz b/weights/bel_weights.npz new file mode 100644 index 0000000000000000000000000000000000000000..23ab97c84c801bf5c281a46578c9ca8c8dcfc204 GIT binary patch literal 88334 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

_YJ`|AHRh{n2rE6qPm6g>cmN#I$2EJKu*j!iyT2 zVoBI#KZ!mkRbDyERy7Rd*OI>L^9zC zA1HE893%eA>&FwA@=5-9*M0BHcOyqo=7POWH~IWT|I~8+Bl_S8e(!^c+eh%sZ()XI z%TDCa?^I%$tw$FPpKW%YCCIN@;OW^ufQ#jtA@yYc)RRZ)_ujZtN&fCcfv0>82)Y;l z(bUX=Ukys~edUBZa!1T6)*u6)EICzAgoQz+&}7(hVI}C@pjZFxPWE_sSw4-rSB9^& zGRca2D&{sYB_1OCqEuN-O*7p(KuL~@C)+2mY-#;`YkCu!WS?vPwqXnz!oz2uU+Tf* z!yGkPCrUt7sp&gwIq{<;m>-ZCAS?|&pX1+lcj8ftCj*&9WWVIIGoDu?++dC7GH>Ec zL#wx*#=hF4*nORgC*fBcN;hf>Zfz#|$k#hfUyd}Q)irU$uM&CibMBACjA1L5TAbP* zdME?0rhdry)!KoaSuELH`c?2jck7DbyF!p=d^BC7I)X}0qA7X-<5<1r-r@gIbRPax zzi$|)gd`yfC1s>gC`yvsR-v@CWQ9^GrR;VV3z}fXYSsB&2pyBHMct9WmJ5rdBWHf%Di$5{&F2bFw z$7IE5oyf#g=bGa)jQL08^EF3@F`_(W{GCf5{_x-K_vS)4y6M%oQD=OiPN`lk>}WH3 zekJW;gp+e;{ldsaM&c(Bp|2Tkdx4^h<`h+uCo6CLm>VIL4i1|%mHb>nk^9j3^xvX1 z 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 E0ucUIVE_OC literal 0 HcmV?d00001 diff --git a/weights/bt_1h128n_ReLU_weights.npz b/weights/bt_1h128n_ReLU_weights.npz new file mode 100644 index 0000000000000000000000000000000000000000..9a9d1adceed8208280ef9461d30d89171d2cfa2b GIT binary patch literal 88358 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

A`Xi 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%0DaB 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 literal 0 HcmV?d00001 diff --git a/weights/bt_weights.npz b/weights/bt_weights.npz new file mode 100644 index 0000000000000000000000000000000000000000..66b8c6a5515eb3d04059ca935c0e950086024db2 GIT binary patch literal 88358 zcmbT7^;=Yb^zA7{B*gd#Dxx9?q97uIfo{q|K`c-KK|n-BMM@-8q@>FN=}zg6O*0HN z#mvwh0tTXj}>XIPLgK#Y)q{sPwbXdHa{kLaJQuS zQ)^r6yHAXsTASVbpYvz$TH4%Wowu>LYjuzHUh1&i!QF@DKew39*w+H2=m`zUtpq$du$JTOp%e%c-OZIj9Kf;6;gsQjU1%&Q7WpZif<{kg zj{ey+1n)P#PMfmngtUnHe{2I}xVQY~WX|n&JR&Gr^5_l|)K6PR@k0yx3K{5fUG2bg zXKqo~l=eYRW@obP6%yRy-B?O&Btd}mK+mjPDA#YX@Kdwr-1giu2v>EM(fHGjt=wFXY_>GwjQ5mE$Z8iTQU0#_ zM72T*uhdyf;aW^=QCVt!M1tHKrfe_MssTAZYo{1$!B3rrTZ1=fNF5m|Rpe-ds$M=v zjqqFy;uB^xpDeW>ka#Ln3$uYASNNy4LYv>WeuhjL(y?v z4xPu%IFcG*cW!qWnie*jYDrh(RJhjOWUd4pAME=c-oyl+vJ!{OrwV}7?-828<^^d1 zXKZWO3t%CoE0Xg89W%~rfB%-<3$E%zA80Odabr*HOt){U%zv&EE zz0i1IJ~$Ty>_2xiS@-wb_(PNBpBAV}cSSNk1#dp1*MeXjygg;UcAv-q%=uexIK!kt zckh+p1KCaRn!YvseO4W?$L%_-&CG?)7qJVP|GL1SV4Jasax31M7OcE4h;Z_rBgb32 z0u*Y!Wd6)C6kn}v2y==cV#(h-J|&-r;Z0lSThj;4c;Mu_#*btYn7mr#3DTgWiKvo` zz(G37p0X0TcC`-2@5Gl6+E74&Fl`yMtpTOqD*w>6B%++)yz=;9FmCN=*y6hn!F)hQ zB!k?AUbGF;{XZIj>m`Hnd2KCBpLU3fQ>5Sz#_egI&<@;H?fla(EFON?ac?o3X@*2? z_5N=@Lojt&{_5v@MQEgN<-#f129|Noc~(dBVR#dx=B`8vIz=6tQG;@Luq66?Ye^$^ ze{B3Pc#DE()*83Hd{T#sl|G>q%XsiJkxqTOtq`g=lbDuzwa`~_fGI240c{u9?^`;x z!WK)QEUsyTVY8;#-b?A&H5V4N>-ISIj7auRogm@7D^c-XbR$GW*y}uE5#WvAX4z_?C_l_-BUw0sI)Cx?WEQAezCVn|mX!uEUozA;+4aj(1 zwckk`5v{Ac_cRUQfA*VhU7tnp??tDU=>A^Kd>*m;Y(=khQ+u&qH5m*W6v+<6N z;8*_@{hUp0`1hNu;|Yfdl)MnLyVa-$o=@$PyLyL-7t{(#&+k|?Le+Zj8 zBiM@5>x~`y*T!J@q3YQWx7zTq_~}L`YA1O4<~@9&RfGE*_ipk|qQO##AR$|yi0f|v037RCYb`?3{L2Z4)wvhU}c%hmqviS za_jHiIiqmXZ=UbXj$YVb?hv{sxE|BuoCbfaXM!f@y>E6hIbb_EwsS{gJ#vkCv}j$W zBKgCc7`kv1T=3fd@_`!>v#wI@8z#f?DwFNd^3z73T&i*6+f{!9nV;3@H2q^>nMr_*Gr@-AEAMfla@SPAE(Ru7ZznfbrGSnk zxmeZiCXVessP|!l1pfufgz<~gP={90?YNW!YKm-gmj&z5&Gq->=65u_nZjpxR;dY_ z>8mE=A*mRM20eGU`*6B7(|-m?aKS?5+bixeSYu)zOtEc3ZjtQyV+KvIxbsvu(VhY) z-#2zARTAO9>b)}A>|wBOJDbq$qg^O88J{J4mx7PEY0S zFzmX9h=aeMnErq+_}%kS>Ro0xDBOt^4>>dnN31LFMz?i>x8p=Rk3=rqaNyv-#@hzz z)sNqIKdlG*^)Y6GJZ+#h^sb?kLWROApVJ%Hw!qgFtJk*HboeaVTH++xgkpt{PE3ep z!|uO=vT{eVV2#A0|N3DXI{ZEQ{==G7H0smzJmKDlCyxHzb+&U5f~(14hc}S$dD-09 zsoZYBu8oftQu5H`Q_23dYVr8P_{BnLUNl&DzROIdHKDTAps7X$34}n$1}E+>0#Gel$3tU_V!#f?B=|xx8*xxvnHimRJjj_`Nkqmmg-PQVj{ms2~qpy zk;Ci}JIaxFQF=&Ha{+P|2to-y7*}mkh$a;ydMRX+Zkek`v+7 zhuimT&D=3U!!(Kl`I34HMo5@_{}e`r^5^%~>m6odyT)ItX?6!}OpdNeo#+OG;Tsoh zm%7ngTP)1xPdil1g-tTfG@*@?>!yHR+6MCqJK+B*L&;2ywyg1eKstWy+n| zj0C8%yzpd`SS?QSo3ia*ZH26Lu6IB2^?=&`U7mwl{U9IMc1p>UjD_vY$uH9bVE;u} z(s8~Xer&Mxdc;u+xhXyC1jXri_o!y_+L9cwBP!TvUn+rzAr6vZzw3e5VAq$koxQN# zSWa5^ZUu_0nbX)4Q4L#+4x0*<^kXb9XRQ3KNJ!oKcAxU8R=fvoE>AN1V3*XCdg8en z{P*Xa?zh|$xWqUt`Ykg9w||&SXq9Y$+V`3dYMuqbym%!c_hA+VMKYq2Y# zj7|t=_mkkWCc=)rNxr*VNw8yU@;AHN6%cVWXXCU!8CN$u`3p6apGS8@KPFHwrSm$wibxJN;VIABlE{tB;Sol{L024Umd zn2WuFtuX(cdfdz#u_EQw&J&|U@R{^8eb=rLFbXf1Ymsrc6Nz z{&({HJ&o|!Fe&xlx@!3SKAnHzNgF!*ey1or9f5l@#_Ic57!a!eWKI6bCM26lT>Dkn zfr-W+radO>F&;ef+lOPnx{iBbgk|VpKdSgo@ z?^Gew)f=yhBr>6yNItNqycKO}D#}52#qi(z^Rb-wi7;5Cu48?^9`}|Cy#6#2Y0B{eF{LEj z*}Ho{B%~Gs%xXjrekz2wkJ@fz`_YjmXi=sk%EZ=`L@AmE2~x{bVu!&bt{^HgtO?Tn)~?K~ z%Ywu$Oks@}5^|{D`z^SE2pJ|`owlTAArPsa?fIQuc){^U zfySu;c%1X?$f{B=wp=Nm5V=zbViJDd+o>%e%?b{3w*Edb$UA1LCaXf$nDql*sw!%&-IaE z_^ahrf1b7O=AF5Gsbj})_?j&_!#OwtWl!r?K8bXK`$w;Vt*(W*)V1B*E2I{c^Nkx0 zjuK&8?!>=g=TS7QUJQS|CJf=|%1q?f0g$iDoZ0fY2^qeFCsJ=Q!S=;)EoTZ7kT5Q5^-fKJPoD7uS_dfs7Au>9gE|_ZiUJY@n zzm$m2+koxOlBs`53kbFXeHC%W=JVb_Gxmm;ZcoNJho@~7EtPg{CfA1;p zq5@BFUr5=GQr!OjP10>rJ02nhNq+KbN1yhaPxyYfgYT6RPLBOdSX{B|9@^fHuYR6S z*t@j`RFnUEK5LtUHVt%|(F6s84yj8kyO!flOT#mlelT#(Ng%~Rm5Lr2HDr9N%$yh{<=3D6x}z7My6s<<{oySg-}M=we%Lq z8j!Ah&o>M<>yLl2af!wIfDT92Z9#5R!uo#=rjK-V$60d8wqju21vmfRJpiF*{p$8*g8d6*|kfH+}H6|4e z$Vd%8yViVNBm4=!O;Oli4<+X>t5^K3#e^4^;s*FC(9LZo{e)IEP9T#x0L@hg zyagSbKqqHn_+uaw!^3J1Jdx|b=8z%|4$Veb|0ilxcX$kp*@wDb2KE)* zjh(xKcLdK~Kk;dpZxUw>{EcaqWYn0l;!STMW2F3Rt~EMUkiK2!`HSEVl&!T{4%pp| zdXqLYerx*C;?XV@n_mqWdMJxeppP}ay{`**UhaoIGW{X~r>n3qb93EWk0H?8(m8iy zTQhF3u0FP&(T$NR=A(D=I+4S2}(Ss-(K2dg_y&L6l z=44c|FK4V z5#tf3CQ<}+LH&@@uNj~u`)P9qOV<}MI!n2N(qYkBk$014C7M!o3S1MY5Ut^&f943w z2a+&Y5$=13iZ*;1N8(vN%vFJRF1ADzB<2BUsJU>OV9a!R}DXE%U!`AZ@{gpx~bk-QTjz z9<=15vE!`+6YNyD*Ai!5WtjtO??`r)!gqYCJo&vLc^pT}CPXly7jFj4E_2+8gRfU& zDjJqYa4PV?O*ai!h}R2uTB4Uh)RbbPsbx3X-B{l8?S34A-_S zyfmJtKJU^4PuT4z)V9~-(2NL$ICK@I)29p{7 zP7UO*+Ik1av_a#!gYg?1>foNvOZQJt8F+9as3Do<8}IubrPtF`3u=~|a>Dz@C0(|Z=zo|GhfCn{Y6r$~V;V8$3k^#v9conc_?9X=!1Q;6F5&O)c zr0>mlzQk74Rx#SQi%G=-9VKg}2k-D;w)@hDuc=s3eC8Xis1z5pK7Cxd(S)aiDLEwD zB3QN%IMHGD7B7c9)odRtz_%yAZ+xlJhzUiaPm+AQ;hh7I^YL$F+|&KKLral}&+B)2 zm#oy`R{hs&&-b=r<>lrP?$sI?aVPQGTp{53oYD<~q-d~}$dLaQ`2jqSSS4ThuNw>4 z&Do|J3V}E4a&2f?DeAxVj*!~Zf_;|;AI=Lm!krMKVsGCL&}#RTw)nuh4t+%=bq@mv zKMft*8k`Tr*wbd~b-LloAA|p_RtT8D9r?z4k_2ZzO>gmUDrMD~)U3eHT2un6KD8#$F?xmK1m-Cz9-+8$p3nM#oezwEZfTz6;tKQMkp6$H#VGRA_cPq#mGO*y) zi=m{AgXlSYysAj26U{zvHk!pQq*zg=rKB405c{Tu>#X`Lz}G9TSC=)`JJezj*>2#WCk?9Wxo$tD zQ9-$~DOEhW39cpvD`#IL!^6uK+0!-6sOs?9B9o|*4gmDv@KR^$A)<$jjKt9bX+ zs~$wW7P25Lq}Wz~R=7n=|qr4hiLBPwikr<{S}k z>ZnN#*FM4NZMV+L@lbJnWa`1tSsGlYUp?UUq8j;IKV$BuR`|XY>#6vK3^x3GPyf6^ zLihJA&enxAJZLh%BJV-Kiu~MF{r4n%^Tmo`r#1w9IpI>RFHP{?>sSq*d@|Nr#-6_| zS%qw{n9zNk4z8CSJiihtAhPA0Z_Sn>(D}<*c>Gf}N>yAA3E9B_%6C3lv4w8D^=x^Z z_@N4a4_jD0+ffELJ9OC|_Iv>ev(AubTsioZeY1P_LOptN1n+%cn~T!&uYzVacj3)K z4d>My1|}FC6Xog1f*^58{y2qdoH5T)tg5X7ZI>GoX7be#yK#R`{L>bc+Ua#IrTZQ0 zf3F|e^{4~>s(M6m3Q<7nMgKwgPQkzL1pe$C=|oZtALZS6FUkiqhN4e3faBsex86&v zdiviH`z&fStiEo$+kT@5R!r{rVH3-*GJavNg~`Ai=9)K|jl}WuhbP=mCc-oLs}|`# z06#-&MNWn`Vd|?Wx0rP;;Fh)dd+pzT5b)%SZZvMhx3-TH6u#6$=+;PKHRW0;GWY8l zSge9T-6pYrkGsINaYKL@sTwLgzIa(u10kCr%(cg_0@&6%&PBL}!D}{;%uytO`NOO` zH+u*$q^~c(CA1d*ZsB{o(>oi#&Yqg_Ph{nMjNFw+EI+gN9RGv{X9tMizG~F=t_Iy_ z6m4%PlR#|I=5FD23fiClIn4aS$`d*zx3BpV2i2#u{!FmE(l@bgQi_f3Xq=pSef$0< zFqkWOwtsIs2$U?`Pp6Z?c76AbByKvWTWC=q->!sij{-rL>s|2u45ge)u@EAJU5VcA zd2s2KpzEG({isZo7Bgi%e^nQ6k6_k#7P;AJQ<=a3ue!W#LH-mZ)}9>w>fZ**>}u|A zPlCZp>-49WY-zw#*H&HBBr{4KI>5GOM1Ot~~VA-A4m z;?|2oXwRy9{Cs;q)nOS&!YNJVsU7`FP)8<#ld(C;aHBkv|#P2IqucFEV?}A%0orw*B@b zEZ^WBts2{cB)ub;Ek(m?cc)Z;@if2*rI){TSb39F{qHLY>LiH2uC3DemLH;th4_cF5vdbZzJ*ccAkeuk1lXE!2JW^;9!zx42s4lZ=9X!1<-aQ_A6C`bCu4fD=l$ImvK(l5u`)OdR4KD8XXXuNwQH3 zs7LE6b>n@8R?yg0{Nq+%3mmf;{ded25N@GY9CFj8ftcA$nJf7tC~l-BgTes33ul@* zEfY}YSivFlFP*3xepp<%xE?aMZK;g>RmhDS;#Q}`)R%prfC5QZ3`wm)9tSRCwPE;%00cg4PiHMTkYJ;*jvOwL!M z!;fnkQPs20@$o*P2V=GUcxBr_>iL`)kU73Qc=lc#4(RPXU+q{5yz!mmwO8tJukTtB zIrC1S*X0I-SMDrTmThysbN>niPmHAr`JRYa}t#Mb5FkTXX4D47%>lzel%OtbJbOW1~(;J z7s9&haj%a6``mF7qM|H^lLr+_xDza!!|1Tb_4dlZhmSZ@CGDtAXQJ4(G@~_F2jJ+3 zE(MVUGT74vUX%^@!qyW%g%YHQ;1Jo8tzyGO(;$^QS^u>HFUNuCYYHSR?QWM#I~<33 zX?MGZK2pJ-c3D{=h=NhbO2=ZmA-wePu!}4ml>T{dYn`J)x02i%qt`uXJiM8EklPDd zwwm~*t2ctIyL-}ahZ30dNb4p3%YzRodi6Y%(~8(S(~a&Wug z@74jk;`)A+Of}&W^+(3kDjk)+H#}6lm4&%CzV)@;Yk<@5Cl2~QZ%2u*K5N$v*F!rk%7HHNn$mgdMf z`Fl*}m0=r14AN!X=m}WTq$iTJwgnZWigZ1VNEpKY??a+#4VJYI)jPMhU@2pr_ZI>g zyKfanHw@RofrMBuon6tG!aVb1d~Xx%$m5>tN~*%{zt|K3zufEiZ? zEYIzy;6U4M7qymZcuSY}l+w+{n)wRPv?FxjI&z`xVfNJiE@_r4?KkX>X$s6r)`KGw!+m zZV;BAKXND}3zUw_nZ_IR!s`uLJD;{x;YsgWO_U(lTd^VJ|p z+~`dxY6ZS8*Zophzn@pP@-j_r7#{O%IdK0K0ml^E6rjHq^)-jL2`za-v3(k^tWh^a zTxs3b5K#r6L*#=tZmsZ@3?J@SH43nN zqyM5hR<3Vufqj9A4g&{DP{mPz+;%zx`Wn`CnG_H}rrr2W%%N0JulVPen@5KVEtTUw z`}*JjjazXsD+4*R;>x5`S$>f=IcB`05?nQDE31MO=)1_c71D>W8hgn?!M_~({Nj!8 zuyg{m{KufAcn+v??VNMCnvAz}4o^hBq`?sLJht9X#MV~JW}lRL6gJ&#EXqLvzuALB zN;MB4;rgjx)23;7K;nQ~1z(V=)p{ftI3@JJd?|MXpE!z%=x(ZkKMhraQkxp#&?D^yE4D6l z3%z$h?+>tHH??zMAmV(KKjR~96Zuvx|9m{{4Lg00ZGNLf0>_!?$uZXWYwI3R&A&{Aia;)d{@eyQEOO>S zRq+7MhnH=4|IQj8=i*F94mRK_d!Ov@-NT?hCjPdJl{0*zf4#gkRtgT+v`Zga(4h0# z#_MCgBrGI#@C0oiN8Y|ef42*cp`NzIqhymn7>V3`cW3hul5}gzie42%dr7;2dKxP) z+{sjMqt~Hpvan?D8kcunYP5jDjcAJ20WRu~^@s2zOo^-)lES$E5@|DWXmt zay_&hFy~A|uc6C&AN|T;zd7f<%;%l3cr+ns-G^aF({ic`wkm+nJmozfRcmm!q~WRa zn?jMe?y=rrQZw?28#VeJCt!5(p8A;ZYK)9$2$+mgfo-o+3t_euZ)-k(LALIJ{`0f5 zTSr)21^tLkwQCLTk)3Y!T^)rJVxM+3s5ZcDN{1ssvJ2%k=A*o7$#`tr({(qmjpEWH zr)js=FPK@mE?aOt%jeT1`*=C^;-5074_AuE@lNZ8nZkGqR;blE#0@#QGut*)3qXX{Zr^hZURc?)j#$UkKCr5eB6^Bqli zO@;mbr(!2kn?Q2x^nJSqBEI)!Pi_kvhCtQwo!W<+F;Pgc>BN&}xMpP~Ri{rt-8@HT zS4l5;ZTCJGR!@fI2h^7-mNiHb3z7DfZNyV|3Z}O&wxh6`(EX8}M9`j_=l%trIJwoa zCgJc91neiT&)sARTn4SLg1c_u)a0!NwfJ7Vm>{t8w)6z1_;iCrUlX{0{-<8p(U0mw z?uW#_cA|aN*2yyIew-IG9sg^ZfLCWS?f!&*K%ZBV%@y1vv{nrEa0!10Mc$@A-j>zl z5xa9gQrahQqQ=6jk8Khate+h6qtMY7J5CRe5}D%3zVwKl;_`mo3H%TlG&iZ7Wbw?MP(cegG zW>WDHInp$$Edse$l*m5HRE&A9)W7(>8_qN3k`e`KAf%Y>+hGO)KJF8G<5b1Oh6k+$ z3C2YHqOSXhSWChPTK1r=!w_m3zqpX<&p@>lhsVppJ!r=E(={AP=n>)Gdy;z)_d>9T4HjW1Q(Whzf2$%RDl}p)rab8(&r64vwi~)}9R5JzW~w$neE!j{zyUSAkfS z&GwZM*aHy`D2dSwB)RI64hj{5&G&%JHh~TpE&WC|3T43a3vw0Nrd7~oC94)|!Q%Cr zOpA4N20=)-;hYxB&tQC9IYYV4;;y`fZ`53)f&VN|%tIp*C|+@y`O;MYr5cw_Zz@)y z($LuR>O=zkw|mU*tUD7pCx&I4T3Pky=(QVa$rbQvZdFPGdtsrE!#>e28#k`$%zo@# z48QFq4YHCuAmowq2b$({_@XHG%U&P`WZ!b1I(fDq<{pIJbv<4T>Y+8onGR%BS1>3H zUFg71sYgyre`Ae{@Q;Z`sXrH=zl@{&k#Gls=1C5pd$lNZQ|r3BTO&UKts zr{tUx=OGI_^36=qA@3ZP}2Bmhm??2=R>qP&hBDZ5xG;k6vC z+o2&ow<`nBD4)?Y5hCK6p(6*wc?zIoa5bKBkAYv^f~g&wiO@%$Ia8!w2p3Ij^#YtS zaY%j3OpQ|w=<>yd>zS0Gn`(N%??5`Vjmc_idC*|tbXbm!a54NnQyVt-ou%&sQk=Q; z24KhcM-BgYTOo|Trp<)bjDG7*=qEaNf}UQC(1Xv2$!Z;=Yp%5*obrjPK4<`gLPw&T zSo6tdL-p5h<7BAmH5K(4`Ur!2UZy`Xroz`Q-zc>^4VYo(F8lm>E>2&}5PLe&fY$td znn#`?d~6qOy81B+G_}pcY(gpcEmbCXt!@ii+Zd~SInWON>uCzfX{DH2d@wtNmI|Hx zQR)wtQy@I6vFevdBMz3YNF zF#EwH+g*=5(T<<{r;8H>X&%e5m3dTn?zeR5_}v_Qv|-<)1CyO79(FreYMzGP3rEuG zw@_f`nYDA*%=;jG?JLH>KpDKSGd3B(6-9tc^l`DpnI4pmz#6CXG z-_CAzAT*Ys)bxW2#!G=0@4XvAf%GqjvL2YS6brg2yUuiD(!LxeV`F`u`P%4GZ;o=$szB?rIn)a~>^#_k; zc0Q}dbMcEsTUdPYj=z=x4l(Yq`>?_GM6PZy;n%MHdA|o^#xEXV7q7<9Kuo?Q)d63p zBd1`BgdztQc(V1Y;o?R+d#f`=5byWd@>FjV1P};M*$P|0CMiooh`%00GPK|MK8?ZO z8i&~1V#!#O;l6b$pAHgwY_4`+k})x&gz#OA2(vZc{TD6Cm`D%4EO)INmPOtf8j-8P z|Cg+m%T6Y$ysR#nNq@)Zvw^t&KozdxTZiktv|O9 z4S@07b}x-@RM2GGH_3Lf8wecEO%qL}c=^~p&0qVIAzD(TQ29(d782vKx#=WOpm!!e z9FD=nA%lGer+Z*lQpx9cZzoWKhBsY^tHS=f|6(qi41mhUXNhx^QuKehC12!cFYc;h z59Rcy;q})BfB5%~!#|0@RW>3fDY_gVbRfT!G_`AWPm->7|urxHcfK2{W* zj=|))p2yA%0$R-wg&(l`6P|5UA-1Ng~t zc;n*$%u*{SB9)rK(S@NKSV+P=f<#+DN8UzI-%XAe*69Fe7g5bxt#r^14p-X{%LLQ6U8(sNJt#E( z`)f^H87|spJ*=ziLATG3pZfX{AdGrNzK5d&GHX2zukaC|W$LDm#>Z}m-eRSgDK~&S zG%C;7@sd#V*pjEqU@Hs_pW{qSjD$Z2qjiIqhVZ(cLZSD8Dco0UbK6|R57r<48en!c z4>HxmPGv06Fj=X`WBb+~oX|dJ>al{fz%Jze7MTL*7w+SDH0MC8eaVC!u7EXshcP1pdp%? z8s*giTb^;qtBKGcU~S#+fAjU=Cja!#gi#&N%Svaug?2*!^0|{=Qis8xIC{&bE**b} zHyTJCYQ@x6eFNFQbc~q$sJ9(o;wsnV9v9rtt_DhSaLVy$vUyI`z>fEBzQdeUmJG$ulbMv zN-aF8+jc9*l>kX8?!rm&m5|M|W#v&^0lwRG#-7~Vf-$Q?Uguq!u}#yvYV(&~=xe-F zG!ROKzZWi^Tht~&a$aDj}k3sxU&^bkC=z^UoJ(qZ|#PsQ#)Yiaaz9J-ge$gj|^O3xg_Y?~Hkk;MUA z5*mGVZk_~w`@1hR84ZG|{965Y*>8~+B-HBnq#modDsDS}=mObu-gA2_lF>6EIBj!$ zEPj>@p7>ai4-%bbJgb2%z}UNw+dH-&_vt3IxCbynO7h9o36}q?UDUl}TT%y#@|NH9 zENX^#k|GrBQvkpie3 zb1gHdV1SGWS%GV56lOlo@7*L(fZR9M`RB}3f%STui+x3(( z{tkhqh;qxX>;$x2ZzCK!#Dr%p1ofueYAg{hDwEM2h8?kIve(IyfsOxwjLG`}2zoo4 z_K=lVQ=e+5SX^jA)sFi=rVdjuB-!vponj9NKd)KfI7q9Dw1P(z$=JNtm^_rG3VB5I0o{InY?TV6US4q;GpK_FU|0;!Eg2?fTUNB~>K6 zp;uExKHi7Cil18q@3z2s7eR}~l>!uhuIDDAlLWPCU%mNKGqCNgxrkDJ8M<@-sb2Bu zK&8kjy{npZxN=t}YQl-dlUUfO$huZSw5n^~dE0(yzW2+6Zk7-F>GPL1z8GcszH`2Z z`o^Kj;a}F&y$n=1&Tw;2wuTm+PWJEIeL!{!yZxew4z^n^4KSOt;0K}9^U;Pz>~QsE zs%X_fDukq;W^qlP2EFd-&r@(PNJ;s(2N66)`o0ak?|{?gb29GJk?7GKBfW602X1Uy zx^}XXiC^A)=(}PszE!y&1TBbY@4@iPaDpU1Lvu1{(m zv27fP8a2v^jYE*gBxziVqd=Ybz(TlL2ly9E27VE)fpQh+jK+dI_?^zhuW5V*S1(!3 zxn&jLK|krlp3`;E==0v?8_T!T*fSuIv$Gt;xss!VhKWevi!9VlZ-O7c{4CPmjX|&-r3y<&bb_F)+tQfQnvklKtC1A zP8nX?n9_pB9$)gzj$-LX=k=dfSzMW>Q)kSlnmQcGHQsUOQVmY0>9-yzWpOIuUKeLQ z!(m&F-s#O1R6J+@OoNTD86tjujG(Sd#iKt6hVCoPm~|(;+4NZtEYMM4=zA?zc*Mlk z?&*V&RC{@!widi2;h+3LDhF3tfyCa-s>5;pAm>}^ zSHM|Jk;6Jl7<7u(5nrwdY&)UKK#ft2L+X1=@hUDAiJdPDDQ8&zF9> z)Wd;?bzBG65+LMmVfeP%B2YT?c6pqOhWV8@-ztSuFyZj5h4VBO913faA4~P(-5qz| z#9Om;ykkO?&+AMas2tMseou#2{~29BU0Q}MwoYbmmJ;Af(Bhvivu0Kw0{(ro+J@m9 zFU8Y$Q82)}V$5&05)@r@@r!>0djEcVtVFy6;(lmeIJ%z#7aaM?#fPeJ|GS`ceKi6` z8aKyxwzc6cnd?XPS<+#$x|kfjvkm!rw74Wr)ItQgq%85`5PY37GGd5R@z=Nwn?gw& z8m0zC-LGpzpUYYbe{Xleaan-Mya@c!DELxtqv~q-#V$+#l)VjOpm=!S4#&*{ zzj$8kWbpvT#ceh%sN4ElEbsS6__sc=-&ngA?bULBzTQWM`w7*a_Fr5f_ks41=Ya+^ zFMHABnm|L_#nPaQzKv)a;dp;%WItel)?t; z{Mp4NDn73i`j34L%lFt>dGhT&R-HW=-4>n61Yz-h1CtHqU{&j$dm*+93p|aUt3=ZA zC?~w-+(*K!KS!O#iW~8H-u}A4!F-Il?BYsk?19wp+`C<#b>Z}D(VLO4>Tv%fC+@AB z-8ivH{>wk30(8pRX2y5b<(B{xWn%L+IY7F&PTm9H ztgN9{SX%~OjxR3yHZk!-Dt_LekFd0A_AE>SNrSSdT^JDeXrT^ zc5)BtwQB1n{pgwGVyB&ba5c)LbNXo~hIi|(W^6|Iz|J>P<=%#0();6O^xwhz1ed~b z=z~=!QDo`+FmP4QemHum3%}h_3RYLD!vB7{qW=3XEUY)$xuDPljg&c&(b_(Ichy(R zy|NyBh1;I|{M8OwBXf)!Gt*mHK(8JQW=g#W`Qjjl`{U?@WEEOE6i5ypss>K_x9l3%5`4Vy^}*z-0rXK!I$mj- z0use;ze-QVqY+214ljQwNM+b1EtBtMgv{kjf9h#yUR1{?V$%(h7q3nzhLpjl*B6gP z9cm$bvfowRrwpt-q8Ttps;L9-UDTAzdhr6=h5ha!gMcQcaiX<3Q0g;rG1I&YRCO(M zpS0E?d$Zrh3bp|#wI5Qhk0-s-0~>e!9go;pAKTndIi_qevC@f!XpL|Ogv z>H({O6YRc6>p=F}dUKyvI<&0nC}PjudHQyC5BD@)$&+cV^Dw#)obY}m1egI+#bFQd3j8a!v z&U|Zb!13oF)c($t0&V8TV0uV8xi|gwX&BCh>(_re$t%X9lF+lJw%fy4uuAvs=b$z? zhr%)gC0=X6Sc7)d)+roZaCEg_bNG0=RCB;jd`PA z>`zhgyXZ6ha>7I1OfPiccu#oR{u`;h2N>|d-u~lxwSFjF7Bp&FB)RcXgCn*%{pj9f zl~x_j1ZvSa-3N2+kSc1wdWOFgPODCI1#|R+#m~&~C*N`)c5&tU^U;H-82S9k@l6BR zF=Z~VFGa&fljAmYuXfySfK^tf(~z!P)aCS}6R$cX-mI9c2jx$kD{@%+fm7`0hjB9R ziV#+Hcmtu}vMP$H7E=cuT$^6r@#;cRx#HoU+WEL^ic4bd4+EI{!~!=8(~)Z-_3qo1 zL-6!iaX>kwqUVUSm;i4tT=!Wx%@y(tTqbF+Kjrpdu(s@@I}MGXzwb~;zitmi7@iIs zlPZT5hUZo{OA)?{8Fezip9*^g8XaOHdr5y#_?|V_AZkC<5YUaQ1o@f^N#iFPam7U) z*~?c5zav^S;2cN%AIwes?tR6urn_nFPU~(A=`RnmXby*~IttAV7Z||3eb>mA+q%Hd zz1eB>LpKhUei7u!Ye%h5F%l;F-pDb3caKwS5gfUA*sk_fCmdkdm^bi^!rLoneUG*d zfwI$N@D8aF5DY4RLRA}pZt2oIneb-h_iTyy<3;A{3abMXp$1-DzN_CT+6wgLukUqN zw!pVZgWf^O1U!6US$}179L(_fGx?6UVw_f5>qvhahL#9yZ}sRwPuI9l3tWVQqtdH> zD3Wut?R;ne)$>*+I6v)ecSgV+rjrGkm+2LQ67`*nnyZDoA+>$D+ zyQz$LJ^tDL3O<_*nlAVL{nV(3yqPmQhF+x*e&o95u?OksZ}2!Q$d-cVfAXwo^%_DU zE}31nj)WJso?ZD(t_g}K5sZzZac^(KmqjrqMuq%Q)!aP@o9lM&DJDO!srj;`jX@u% zrSnRiHRypVX|;T>sBT#B-rBL$`3^4NW*)O+gsY2^U3-^h6m*5NsRK)0*xdhup(fl6 z$!w4-tlWt`!tqAao_Sd1Dy_vcUjy$%=Y<0thQRcop0>e!AG%4g-LK`1(hCc z*kE`^$w^!Zex~&uJ7m-au4c8P+vG{#TvDhG7YJ9Km|7Tc;V!oCRq3fd){S##g35oS zcfu3?ZIhZBgQ&yfvd;HZ2Q`Y zz0O^b^>Oh2%hhF|X8xRREkgk{Rk>j0{}N%SCH8J+ha0#~RO_82d1cdZaE6z1H@w?- z^=ATW4}`=%sZCyJ#NBu9ExM8(?jo;Z8BK2x8k%L#2|g`{g=db*Pg|JKa<}?NflCw4 zH|>9X+@u?Kuhvnm%cp=@JeS!Avs3Ox-X~Im)`ATXc6;Ed-y;UB6xrrBe=!5EKKdr|Z*vzMTx-=Ku%!>Sg-%Sg zC1)c|CNu2dK?*2)w^p+L$^nnz-kyzWbXXJ{{~+Gf57%jidW=v8SVourcS9{1c@}-$ zqa;W#_SpPUQ`6@#D?GUNMo0=?t~=g;gZOF^cpU1T*7bqhgfra#;@Z1#uWqzf zu)h6+aQMlCX`-@b#n3$bVht)5Agi-P!aUzF2=p``*_25`dG~AqKB;2-Hk}!g6gNP6 zvwXr0?^;0Uu)so#U;%P4U+0hB??=PN{_SU$5jXjn#_ax32TO;{%nVL-!;ibQFUNy= zfzM58y}zQI(ZZ_)<4 zD?z0|MeSPy1MOow&HV{SYrU~8H~an&j=b1VnD+ENM(o@0=**The0?TdRrG!@EcVbm z9ke4MIqAl#?eT;Uvl6}6w0#g9f9oayD;0c{%|BWH8i1Hrv3$A_#6z)hOQ>OQAB@zF za@rp9N6AIXK2!3&jH(Uf-FBl0*0aBM%MYXDO?FX8jQn*_Q zC&TsUx)&qyqmM;r%Rny3nz=AqJSvf)RjSiEo{l4L!ZMU>nZTYc5&C>rBfL1mxEPQZ zi_(4(xB6J$qvI$gK;n;)3;V180q-q&<;p3st+ zf?y00gMyl zw!c?NgQzq3_=#*KJg^}%St>c#e~t7$7DvN~)eCWjDorqL%$~?0FodHNfx52iR6PIf z|Ux-VT=d34)f>3vk3HJCod=R!y2-~)A$ zZe3V5G3x#?s~0RkaZ#RG_Q2Snp4M7x3b<)hnZ(@b!C^km$*CtTc=Ve+W9n%g-ahrp zQNfk)>YgKOL{8OWOT*NwvpMfTJ1zBo9+@|87WiB!aIpoBo_?lfvoMTd+3oLBWb)wa zrmTUL@p<6%b9OS=zXQtTn(2M%ZRi~MWnYYSCs^OvT+DT|5@P+zu84eS07pTG-`*cnL$m|KSrz{bkm(@Z_v6id{dr!_?zmg5&E()zv zQzKx|6frmFNIr*mbTcRFS}^O1+0Acji(nAid&A0y;jd4^9yr$vHadFW8nU|~b4r$z z<#-cBe^l14<7Z%@dvMm#9r>{3)9S$O_sU@k98WzOYK8TGcYJCO?}FDU?{_DUB!T#v zZBv6xC-e^dEov=6JV}npX**cSIc|1?Wl88T_TASo+kc$oGX@9dOt%f4{F%NT2W}I@*+?A7#h0GscP7? z!p})g>Gx4g@H?``{A>I$Ol7=;B0C09Ley`teIlH(T~umVG#w4|CDx^IGr`qxQ-Sm9 zcI0-`9}Ar=0MkF9V8Y!GzDGN)FKDNsgE*amz1{eyYdkmSa2IS{{U>>)NEO-`_KT+% z(y?B&Z`Ya+^`PhUUx1K0>8GgQJ<$HO8L2-On_l0Ez}wA`t8>ZyjKns9(DUiG6Po`d2au%$B1XR(;{byChsXh&tC#%{CM=?~kH z&s-tX^FuQjvPvI~JVoZeMqV4#LR&z}H{}{@#yjM_di>zTa37o;PY{gX*9U(4!q(}N zbBni9`L*%oTu8fB>>_#36i0^S57Y~{K;g2jr``g&=YPHKv%8at3AZ{rHj#eY$@2U2 zc@ktkWLpvGcOwt}oc=|pod}1-f(j#}L$z48o>P2Ur;7NeZsvRK?f};a@rd`Q2_O6F z6_3|}_qgGMcg<#M531BmJ=YYfM1MIKQ4iBf7*yg7u~Daj`iZ5G$mb*v&gTBbf5eXT zo`kBzSAWE+J^7h>(e-eiT{HUpRnoI9@{!oTa z*+=epOqd7|UtJ$Fu+yj)#)2i9H52>r+KBU{?w=w!pMGBeorf`|pCk4TR}X4Dj56A& zOnCEW_6rB;bUZgb{NQ_RH(Xa?^Wy7ofcJs5R+fmb+F;fKSV4aIZ?A`NMyP~!okMlA84eLEloSKK_%-wtvcIxU~4rogM%+{apO17Lk-$LYvD z!?=-)t%a41hAee#>t_iskPtF+=tyc7&&Mr-82doRy;JxK=C&sSRbtggb-UWW@>L@M#U z`#;P1sTw>pD)-QYHiD~1lf2Y#6hqjzMpfA_Pq9@=bDPTDR?y$Ns=z{(2~l5^>k^hb zfhRmwaNmUi3>-1Ljr-W)B|Y+dpB6ROos1h)rX>6{ddO*kVUzfccZRPa2ZRzTgn{qL=M0me$3K z+ z!RIXQ!+1AJZqwt?GHl;5xOjIR4Lo;Lji1r%gy>(1S4^vD(85{2=BGKyjclD4zWI-0 zpVDWx$g>o1ExRXLWeb(y=st?b_si;`O2yl?iX^gPCV1w)>a|fpDKmq!1euVlqNF zHdHcUxwVc@CxnW+1DDrS-S389H~;0<_|RcL)8&T5a~k$GXSfYIRN;?kjYA>G+!RPfX8=jy~N#ZqN=kfm%_HkPYc` zw{Oeq6(zZ;fbB$0t%V0<{}K7vO1!eaoA>sfH*bX7A`u+!y~I}+4n3)V>fxDCV!ZC% z4*ZnK`b(PdFbN-yRyziDLY!CLh~ss_S)@;@pUGt43(>XK7u0*;f~}$-pE>c!F$7p6 z69ypb=>dUn8pXizCiX9@T_0v%;nuRc(T@RfPxQ`3CgIHY{lAahqymjSqCNFWJcijP zX4|q5p5McUEwHo$R_uBfp(8$kIXTs4Hh%XZV)&Hjf$}csF-p04l5k+-UJUd4&plYy zB+m?H=>(3MUk|R|h{KwRDLA{T0~4QcAAOV-3lb7X97}nqAhdsEk4rAed&An|Zmq)t_pExa0~K_3TzSxJ&E$zj4xgDH*C(m&=8%ev4_%Kt(Yt*%w-* zhrab{D;qzx4X-@e@@|_I=?5K(wdL@shGfqxE1w2Y@#nz{+6o>F9JZRMxI*uPefb(K z?e|(>d*}wO;@}>r&hhB_#npi?I`?~WL|j4JG6(G}r9^BO?`R3HLTGO=?ls0PI4t=1 z(VsKzSaw-zlSy_H(8pvBNXB*J>Xl`e*p!G5Y_hIY(xD4t3r>4JNu$7%sUq{;2dhDd zeNIb{Ld6Zg&Uk#bsfAQ}2an|KCiuL?B(7oY7;=~-UY66Z#s@pL%D&WlhxS7oPrOU}2IQCUgtQ##!I%TqlLNF?eDqUNuk=m@ex46LG*5gPlQNBa;=}83FzZ@M zLnsAIH)eP`%usN7%6Cly$%pNpXWv&KoN~+=pM7%a#dyoivc*1#0;4y3c9eO<;KfXn zW2$TvvwkYy6>{PpE`Pif8+8{~+APkLykO(oC!i zO)!pkr^AbSH~Fd0g#X$kW%9T;jd+sXjP}ko!BD?P*DO~fsOiQ`zC4iw#rDPqE?avc z`19kd>slIc<5kZq1$N^H-QwMw?V0fS#e8r{k2ZCQPZ%rD!@XT#Um!EJ7|W`9+M zIuol|w#hUj-(hLtNTn7m!=O_C>LCoiullm~R0CEA-`G{OwgJwrTo~R*=E@~ORvzi4 zrC>buQT0=99|p8s+NAcE0|=Uh+sCyW z5xFI}2%1vwvef+T%YwZ)G8Z;@mG4w>|j&uF!=|25(A~O$z z+rOT88&OMgn~U<+iQQ_aVLA8Fe1JhW6o1;I8{&u<ULe|@pLj{<6|8;c(@gpR8 z|80B!GzX>iPB7NVc0=>l6Q(~mF;M$$*Rt_!KYlLj_KH*}Kv}zODhKv=gMnl$V@nkS zQC+1icx5+^R?j2_ND;5%no*^lduvg_lK#^5c^SSCq&53$7GTtMv$w;>S@oE6KtqwbwI8PAjxe?Uv_Wa{N#)+LYV>(vQ&UKC<}oEt zPQI^n+#7hX?Ad8Qc%4-|a>kqnc-l4n(SG95oXNkd-cd#RX4Aj2%gFapBttk~?J{^+ zt$FfDl!mig`shyT33%K}>$#?E0lLV}om=~ef_h`+L4`ssaAW7e_gOb%aLj+#dhMfR zZn~->_mfu|uKBlXI`D5JO6|RpW*0$xe)~U|P%e@FU!}pvY0|&yT~J7=a<9Pa8l9^0 zi!D&hk+o0gDHTlf)cr;GQ^4r#-KYtPE{yzn_WtbNPS|#q_jEt;e|X>e*=91>ixG3o z-6rl7IMb157gQPp-XV@MRywRyn5&AfopWEo&9pG<$5znakF8yu*H8L}n(p*N@&c83)mqu~t}GQka{NfYC`I;j+lgHpcsfDw?Z0JK zvY!SimkUJg%L13*%ZtB%kbWAsbXj3t7pC=HiXME<073J#M{DQvVOVfhUqPGn3qBp1 ziylR=dPOfVpJ!m8N0Uy*R^myyKs$N-ZW~q!6~+CT4uan6_ABqbYXjD2Is7Xj0}mHP zjnppDaKugOye0bp3ck=1_{403l-Z_jIp+saPb085RyPRhtu(I%^N{}XMhBU!!=!ih zKJ9C}8TlSwI)T?dXFl`ZjX?gCAPQ#SqN`#t(jDSmk?nZu|*QZac(ymt6-O~|Ki zSYA2TeY^xAp2`S_uL%U#hW~`NI9B3_Mevy6bqf4R{Aar95)JxS%&Gfde2))~oq48r zjRJA1=WL(sD8i1!!_h+VblkZJ0Zw zk)PaH1@X7erkAKz;r@Th?=HM0y~gf?`o;#NcF1ymHt6{vZd7zKcI2zZe`StiH~YFk zJ2YC1M7wny1IiVWVh1asqolW4XMJu83TZx}LQTAxv=dHoLSjWJUQ%mW< zd*c4^Q;`g4et#lq1G^J656+e@5uPlcUii4olkmcszH83MP{{rJ+69T)At*ib{pxM+ zII!qG?e{C82?{tbt1g&jlJ_OJ8mQ`7@ciUz)2LW7Z`I^GEN0SxH#-9xElGcjA(hOt z>J|-JLu0E??WLmhMTO0h&gAp=eDPkuAqwnt`88Wz+=RA&qm{ksWIY;;l&Bp`!W|m} z6P-w}CCpgyOX%SWXj1r5FtDWvZc;>gN69^X+wa<~9}AmMHH!OpO-UD&rM>p+TGbE7 zo8}L2{pf+5$~(80{}e#kt(lc8>lvu(%=!1U5gjhbcw32^$K(4$%!K}!TKw;I?MVJh zChBe~v|_5%L+Y=K<>NDbc)i-P*7Z9b_6dGDTi8OucRmlkOKvO2Hl>qqZr5gGDx>Uj z>E>Rzx;1ZuXjvcHL{{x;p>>0MlYeRUB?{is{u(YGRS8`YVfxO8DEPW>fmcwR_-EB# zk9yoEb1K!sI#2UXbgZ@-68KvHJWq0D($+QL==C?wCc?E?QnGmZi*zF%5!PHBQ>;Wj zJ&RvH0<_!4q+Xzd&6SW4y%4tEd6ix zqvTt>w*QfObbcokj^=w8Q;^KV7W<}qdf}{Ra^mH2CZ-4*RGBuAzL7_cyGZvC>=WJg zb}i|1^Sa%acJ%B9g@aOp1?>!o9e>vHhn-7tQxh1F595WXI`C7)E<0|(YrE|#!S;ly{-reCiIA!ya*8EfL58Jv(C zi#(7GHr?viPClZ;ZkZ>VVmuY-7F7^uNbP{7ZPg!-%hbSp-I9e7I}>m6tvIf5vK|`? z_dNT4s~?ouV(P2O99vRIdCgklNeAlrto(h$@b1~2vERh2;WKnW`L1mxapCvX=I zP%GZ|LFbjt^HFLP$kg6v^7hgYuw=6ykFn{+;~qt)CichU!#ydP*Mc%|$x1hBYeOq` ztP_{0TCB%uCFO&4dZeFGy6wGBB*~+#X!>5B6-f8K<1bRz4R<5YmheOpABNMR`TbgD zn9#3L=IWCMF1tK~tsDpO&ui{wwa!jVIlfETTc!ht_GdggH`#>xy)Oz*ejmgilfPx& zR6mBBXG*r8jAx*8^!pm>3>{cPH+}fMl#ca1He2t?6JKqEh!Cvr!1s6h)f`vt+d7uQ9bAt9(e{qIz z|JVuV7Al&rzD3;=$i$F6511N{s4&;T9DWnrh8pJ>r!A+*x>vljXV30xu%qp=USmLf zk9t|2@vqzPJ3og;`-MK>mnf!PkIBOmh1xnXmmlMAS;Ygj+lSEgauDl!6XNr=`sZJ6 z+yza|$kRt%nI>OVXu* zWZ!?zdxJ~xPzl7({yBYa109lo?qHlb)r|trs-iSs#$xVnT}f%ZDsVk4@oMy7FQjkM zDDzfs1R428{+UM|@a)#b=@H*1JbV1J)5eRDn7&!1=&3B3pD_oVLcaDu|4;QvZ!;Q5 zFB?gPk$a?Z9W`ExEgt>PS~-VD)WY_^G|R!ZIymuPjq(MLZrD=ryeYhG5V}$Zd0GoQ z(5$JYncbofKFt^G_c6?a{C+)!7ZNS-=a)$RgIx@i%&e2VMm&05+|oLSSGI!=>qE0= ztWnst=BasUeGfW6&7e#M_5j<+!&UEGYoKbxdXFA!IV^MDd$9e^5Jqb^)((u<;TG?p zSNq;EA>1;It{>Hb`LVk`s?20zgyMGVOWE}}$cQi(O)EgZqFAoK*T{ToSNppWr3Co= z`bmYd@Caz-Y5nHAbQQxH&I!M~i62E}QO3|E2dUlz&osu!`wNmq?>{)yqQ)hs63=rq zu=Dy7o?y;I{<00(@5}2z5_lH+nB;tRc*oU!G_oRnc z4SC<{X-3sg!4^DlSoYXk{sG*)GbHarX)UghAKNoC5sQ5cC|r8cgWPkh4wdg}Q0LKr z(D|`OEVAAE_I*SHmM`7kXRK@aX2I04U&--s!-9S8PMK0W7OyYaE ze1kuR%!{@Ka#GX|cHymXVg5T82jCoC$4bki5qW+L#9Rt##3YL=A58R%@!ofr!kV%= zxbw#_WLMPy&a^6v>+_W%b?*F~*LR3l(tU$dB=K75UUYN%%GUr+UhB`zEn7m@*n#48 zDply%XyS2?^pMy0eV>mZd2X{rwU2^qGF(2=$@5l{_{U^h7{gv=Sbc+YlC`cK>+}w8 z_cv;Q@IRTae|&xqWAiyeYNZt5)NGYmxYbSmAAb3rXFHJdx2@w5E0UKRs~-@wjzWEv z$-VIjbof;B#V(w606+6>?3BCFho9aWe6D^M4F@iNN{WywL=CljD}EFVg4WR~o`yqo z@VYyCPGPAV@0iz&cC?e9!#gDw^^XY#mCZtr-?pH?)Rv6foFxBD2?$GAn}*;kFwPt<+iW;z*&2n(JbM!lRr(Fb{P@Rnl?kA!?+N9csH*0$t%Y#UMdd_e+9wqUcT>v z_v)Zk_p$u8_BM2*ri@0(4dE>w>8;FQ3e+AnT=e{}8Y9^iT4JwvW0!V}-s5A0UsDg= zBREF#+pDol%6@I&Y^BjTcd!aSRT;C(*Y!cz76;uwi%odAd|Keidn$%cxM%sKl%r=U z<6+IUevoXd*>UN58;A*xyG|c!Mc+D8v&~sg!Lgm?#rD-r$hAZB5c5MdgeaaZSTmM@ zX)@KL{bD)zYbEpk5z|rc zZ%TcTsXBA*)i)+gjErUt{Gg*7!&j!imGIUPC6+Uy#iKgX@{DRiWXf)z4+MwL6hZ5D)9WJCmuAV zqQlz0OR+DRaH`W$Y}*v!-*nv1HDV`vIXtck<;#YXhH180j23A22=u!Bv>PUtZ`V~l zV&YtQ{_)Muu1EENSeO+Pkj}n{PGS zY^tTADNH)dyLMwCHB>%vtN<;oFaIay`v|6P(?81nZ9>wU|ALZZAz`V~KiVq>Rw!7cRgrtorR#Pdd?ngZVB^>k{#CW$ zJhY1LB%Fnt*|&%-a+0~z8J)K;CkHV2bI+Ty$8A_?-nsTdUNv~T#imIR|MZxZ(^0A5 zWRxrZrMu@#1D=fIp6{}1g2#UPNtV6c;B&R8WQweVECD@3tY2er%O3ue1*vq{y6UOb z>Fz4@p8GW~t~3C4lc8Rc>uWKGLxp8$+9fC`RQ7(A&;bwb-@n))T8GX5=)=d2dN4KD zG+Ae25G`){^*u|-1!aqU*;`E*c+St|4e#Gduns7EKVeLIaBIbf1VD^})Y8#!DK&a3LwUac>#w9NyB-@u3^6bxXrzzxU$lVHz!wh>g;clr_c@sr7kky zO_a@^_CrjJXIEe6vz-bXuB|)zrn3b0?q?{S*-Qt0``~cXl3IAi7xnF|00ZsBo?d$q znU8ncT(WpsJJ3(&eec(galn!AY;dT(0Lp8eGXs|M$+`dByE#1uaN5Xb51beP)xYl+ z4vh6<>8VRQ1#Y*a4ok_#*Og2(D4u#=d$^y>CBvWn|J}IzCq=EklJmuivO7_R3FXkG z-rQ$ZSBlEYP73qIWInKCpH7(yLq@G^V#h1uBWj2m=4`+PYAq8Tk?o= z8icPquLyWv>jU9}7a{CCG?=)&#kTEF8c5u&jboTm@VH1+^o9M6_^STKE+67QIl%f? zqco=(TE&81WQ5hhhA6i5%&<=Ub7gKcn}ZGxL0JwGU&-gNC_ZQ>>HBO6Q8~MjLHJnR zN}3qyA&(gs^O-78Af@KS$Az$AoD_GYYmc`>={ei%m}V~w%$8;R*HnqgD^fem4p6~5 zG1J{|J_nwzsta-Otb<2yg?9f~LnrT%Mu_Pp^y4qaJv)v!gYaFn{DVvY0|?u1mpf4f z-?dY(O}`^Oj&pNmH^pe6b2jLKv2{IgpL2froA5PY)Ejbe{SXGo-so@j$wIk+z{grE z+h7IjILnH>Xn09cNtB4G!DzSrH$Hj~f|tKnseU852b{6q7^l_;_pUp1azD>T{|eg| z)DAjCjg5A^6so}+t1PD-+;Xw?jLyno~@;R?$?{o;G!q}Ko@KBc9K5x$K(?83v* zf-V>r%H72$NX2n4#h8SEKHTcoC7O0_7*AT1<`szc!OfHOyYa6Q@QUF-!|FaDI)hBqhilx{h@j^{B~+8pt}Z@qO(#)o|8Vy3h6IpEGc*;EyYN#g80YA z9-TUTh2%$TLIf1g6+#d*p!v?%O4yaLQ*K8`8*Uop*i?0x4mRxKq6st_7+st(WQ5g2 zkxzi8h!X{~Dh+S>*|)<@R{7a}(%T@RV`_doy7<3HGt&~3A$8e8pk&4l)m zeyAc#{#s*_hecm0pLZ+3v-L?9%`58A;_j1^tTjClcEk2)(ZCSeJzp+7tIq_V)jTN^ zgnx~*d2(ubq6d$zjcHpSoC9i~%2vPSp`pfxgZ}lhop9)HuGv&74Oh(9hJ2DJ#OuSc ze=WRo@l8is$m+a3;CFSfepMUkS8r9OnWZz-a4gW|_lu>DAVjlS;`gf8pULh{;)^9uY0 z(9)JEZ9wKGhwHB?iTdT?^r`s3&#UMtDt%4WIDn3^B@KVl6)WLg#Q8Nxt}uWl>i$2z zL*4M{z2}oj1)9B8LpC#yZHUV&XmeBZ17>AouN#K`82* zn@kr$REs&XGgzUYyhrpPK!c+JGo|%sud|iIfAUxEuSSSzu1kf`L7JZ$lu3m`I}k%jW*PlyI^g+q90t&f8Z{)8N`qdU-Cj1 z16B5zH#hp0fnbVBWMn`!FcRTODq2CsKfFC>@>Y|)Wx~Ki)`bZnSC)2OfI7^+ zx`K6DE*(GRifKG!ql0L9z}B30ChDBhiT^53da5s;{xGj4y^n^u(M{uR&|$wmH;bhb z$3slDd46`H=yzXBNtVo4@bl zt3(ZpQwql<2GIDFqiq?z8WLD-ZLYA0r!rQ*mq#tD4 z^xHz5iaEdZcA!8%w8-Svt_Y#yM&Ur8W$k z_vDqz3I$L(pOL4X2A_``h6_29KJ`x1%+Qs6@WJY?*00a`aH@Ay<|^R^Udt|-hb8Bt z5w}g!n$N^@yVFU%nLP=Q*;XFQy48Z(LSu!U!9&=>?$dX^h>mRc)z)t%T;|HAf!SQL zjuwi&y5%0&4`o7Q!6vto!ETlH*`?V|%>HQ3U!_wA)TJ}+bth`j2=p&ACI&%exchl( zSrf_)``7N)=?9WnW!zLIbGX0!5~tgm;PkDc#65fSaL?lH=&1%oUe~K@Vq!axcKVal z$D}^6%NSX%O(i_iDGtezMG7YMD;kzv^}u(*JZm{eDA1`8D}J+!c%jxE^YPWGF~Tokb>I~FcB1k#aln~suq9#r{TyEu*y;|@1kN{;COHr4ID)N7xPT&KHD zog$kcu}(teHy7c=7Y-UFY^%cb#?hVW8Gj$Iu5wS! zXRkx8p|w@Hr=ub3l2m52b1RDV9GBTYR08hYlF;m(4PHi$!sdU6;QNAZ-iSsC@_zkn zcCwughAq7uEti?tdf?ov^us-9@hafJ-V03Fbg#68PbCpIj0rWn(>ieWhEjr3H}Uo7 zM1J*CY{Xj+M5}JG^kGmQ@I1X!itBDBnKbGSKtzl~haNv26)se?-FlY}w!hj(56YC` z{4G&^d+uaRGUCh&-&=#pKATwXDl}u~c-59ggQp;{oV(|(UlW=+n8t)#~QQ6(@>HBaaoXf8x9KBf4WDwDh?L$e3S1K@D999rs7OY;yK|)UEh!L z0j-0!v$YsG5IrL<-vTzgv@OL~J3xgwcJ%Lw4hS4rulOJ74}3h-Kkh2u28(ZQx_8u* zxe?`Bero41?s{o1`-IjDQ-4KHoF)ALxh)+@G{W1u$h&^on%Ig72l|Aym3qPAdE4(* z{~A#8$l!uYUm2!P+6}MVnuGs-20EY48G^flum9Chy79X9OXDjXWS>;X_`30DHhZz+Sq{f%PI)u)}*%^kRM=ZY|C@rwY`E(_!#O(94<{6#or0M%SikqecHXADDE;7k_FQB?Hk%*P zy7zPdbN$_)IS6#3li`^n1DiTL8}vJAuCx~xmab7a=_Fn((}#5zw8{FQBo)kb>x8~!z;$`tQ(wORvy zF)jN0?>!aTgg85#rm%v)uhatdc0(B=CFMoO?p+CA>MVqf#AHhn%vk$L34x;k%F3xry*z zEbS`ztVHfHqT4rfHxr+H(xZxt+*9Q5tuNP7^S2r&o!uUz%0u!_#)m!0SL>nk+RAQf zdLzhw;Z08OYlg>nPw5=CW+1!gnp}UgLF8_DW8AM-gLAidL;gq6d56{fzHwYjO3A2@ zlQOZ)xvwxA!{j-DwYniiq%get&jdE?u2-KF@ic z`+2`#uVgBr72KtmXbAPe-cggD2;L-=qdK2t1Hh;M9_VNPKM&;@?W-|_RWT2R;Y%ZI8d%Xbupqvrt!gin z8VG0Tk6_;}9>hQ!dDR1tsBoN~y14s#268?A7PdzC0LxP{2Lze=P%+AAW-(+88blsv zYTKp*)8_2n&qZUfX=~h*yVl*nyP}(%kxY8JAM##wW)-2^voGVyr+e|4UN`SU>sB}z zYG5NJ?F9}yV+XdU7vaZE8$55*k7DBIwhPP&otU%HFeLL^1M@`qRkJB*%_JgGt$^nd`Zz{D4>cfNvKX)C7Cj(N)2QLLpvGk1_n#v1vJ# z^lxbRe{>utd8=*g#Ov^27^TejSMP}K!w7-7u=A;*aOHJUnc4PCEO3k#x}(_)oboj+ ztt%lQ)v5hSlT?eUL1O?p!S_ADov=}6x<=+=QT=?Yl8U{POrKMxC}91OpmqTm~@ zYYl%c_u#Zrl8&n85Y*3S6$Yxd!J^rNXN%rV@Uz;f%&gQNFaDh`V7f#_J5BHT@!TQU z5DzH9uMb3h$bJ-0k;7lOJz3 zuwKZ+u&6Vo)UHkpmXvcEr6>I%8nqXJ?(eWrj{jv#S09Mg1m5=ho`T^jMxU>w#o%m0 z9K&7m9Mv>wcs>e<#CIaqW?uZwXfjk~uh7te2NGA`55B2~Czpqk_P`MQ;c>Bkb*lgl zJ#G~4J2{Lpb-N|6k5=MSS?&Yw8N=x6EMu@syAQbJ(_?u0T5!(cQWP`kZ@)137_v^j z$1kyuHj9mPp`^0^y{oB>xU$aaB|-A3?<-H;J`zz4Yl)(TJtwR2!rvE7``6U2%K<+G2ffE0{n3 zK5_0^Jbb2WP}C9aLDyMZ_hFK^*RVAR+IGzXZMpRJij9+XYi-L!1o4IZ>kNFfks|}Y zCi;6m^&dpJ&g9s1W#R>Su2$sqY6u+bDl*(5(3oDbHVe_Lu&+W*$lQXMSEIS??W_Q=`=&QtCEZL=E2EjP|fhlH# zUp&kze!bUwp%#ySsp;z{&vB*Y%+26?6qIT7nO}Js2SP0yLsoUjx#8`pft6$3@RC2M zI&U!nS`!|;t0uX=$%h+GvwY6Py*sOpWIrM2r917Xr`gAVa>e89ms_ov!g;{?XoC;T zvTQBBlhlS5L43ZuwhY6M6Jm!)h9=-!yL;Kr!UoW>{c!#wXDui=YBBWpwu7wO2ic(2 z0bD;OxHNOL3qG6CJUR0#5C7~qpzwLJ8FwD|!eBm{jXKQdL!GjEai>qX*&D3^+%mBk zna$IV53DLZtqGUJajL^#nW+!BUpcG#iw%PhB`^JnXg7$tZaJpTJpp?+ABhN3OCx!{ zecX(0P3U=S>ZWDXD3qQ1_<4@xJ47twf8J=PKy$LyR1CEoR=>6e(3ucUi2rU&qq+gK zFyym%=sSbPp&j<@fX*q2iMY^{SIb-Pj&FbbynU%%kmEPUohR`{6n3zj>Ks$ay~D zzczyb95TyJzd$@sw>$s%vArgrC)=g%2W3jIg<;;Xu)hWt#+9WCJliqH;>7AN;`cV% z?6`@(iGpU`&3iSC8Zd9u%u~w?wP3a88uP8W4Ax`%O3%qwVvvxHVy9v{syA~f95-$z z{zqqNMxGQD3~lXWis-{+*0$0e>V#J^;L>|Po{A$6uiW#bAH?EjF;#oQ33|<~F{C_L zk5)Ggm+!fT;lNs)sV?Cw4g0@Kk}MoW-a@?}DQ>A~7IaW`z$ONZ8d?fEV>Ll>VNKCv zz8Rmgb}f1&Rf4iyP1%`V@*JObiXFJyM)I`I{9DgN0Ig5?tMu?XC|rE=*XLUTgjcG# z9RJ&n?z4f#r~F$mO0kSD+4tWzT!nk$s8d^X#yVy@9~xW%9|4s};Ua z47`-4>&KMo7w0oXn?ZbNvcWE<6FvzY-TB6giU(a=b#B}*hu7B(D^<+LQ15_@QQNs; z{9wC5!;SQ(!tQ<2+)VOkJT8kZdZbTzyU%iR)6N>~$3Ai16J7BBL~TT&d^f1O#4g>{ zdJphZGvWqE8@_&?evqB32S4!2o*SMVMf%Yeiz>Gkgj3blB4pok0fFg|B|^u?WJTCsQ394m}w7sY;= zYuJBP;uDx}uTRqOQ`| z9k=$To!VpCL-;v|{CvK~!)mNwhULrz-rT(X>+pk0;{9F>{7v$+YGbF{)k)q@@4d>| zhgBKC!8?2~maQ9p?Tx3S>}*G;RPC7swl1tYbL8+2k}rGj#(O~YW+yCOxTf>Kn)J4t zH3LO=bt2mx#`54|f7r0^PIhWSAO7^ckx11iT;>B`?o&&ONIvHMwu^_mk&aKlLoD<>Bi3gJ>_fb&kkl=xnr>Y^j%GfRD zZ5?QDvvk-_ILyjWCb5mV680JUyZnmigTcMPa4zXSZzWL)vsq`^Y!YUEd8y zZ)?|w%{4*UzDv6FJQZ+#!|>18lkNC5$ieYu!X(x(xuuOA9RSwE)UO$fK03wb*bC{G1VA+3DJnOSq*mdp4p)W87Y(KZQFc2S|&WCVS1J@o1Vb2XP zjvI$R4Ta&UB-d5<;_ZdsjJ_awVkk^GpKzZ7Vz-GR;k5nkDJUR)*0o02==M6o$?PAK ztRpSY-AMkwev{7@(Rj#aGzZT&y>RymUqcC{`;wDc_`KSkx4ydaO8D#0k|RMOI-~>XsrQ!~IlA!l?P^}f z-d523cr8bXcN7G+A4m#NB=@ZMMt}X$>4%_1zWqse@<30O);4e#@se=eVmc-y-hp6Ez|?wt+Dr( z%vDhPyME_6i7sIB5hx$_C?MWD>j>F}91Oq6`S9?`7|>b}6k?6_!?OoIr@G5_5>J+$ zJW3G`r;$j|T6i<;`NL@YmGp#U<5;BY?FiQ*cApKqO(F8Rs>rBGaQLMGp21 zuazq*!?3g_-r=~Ih;rT`n)5|;&Fba9HZ4Y(MQ*krH=$)yt5%lMi5*Lz> zLW$wOo`T)Iuw98MMwoa9=gu)q?`i3RL~5)^LccWxD={t0uy!E3@xF}5Djl$o&9Zvy zr!kz$$T@R^%mFSv>W;lx(E$5phm=R&4GRO8Uh&UgUnr*7K7|t{f}rs0sH^O~4xC4PzQFG7n4mewX1^J5(;#H@2%2o;m%6yjJII z%qmpoI@Mc)bWMfl-rO69CM&)4cX`E7eloRqY>aqWE7$Hx_}76~@yt)5r2!D^VvsT= z9Pin+nw9K*U8n_5HEG_Gb4L}MR7*-eb`?hS@7qxUM~fbsx9y_9u2shKW{hQMe2cg1 zv3vtI=Xo}5X)cAsqsJ3|8uY`A3ERn-_#6xiOTVkH(+2@YEZf`pDG=^%;{1G^_{P3@ zyGoC^!zOJVj*F4*P$GA;p^(h=8LsACP1{%jZKj|7)t4!t7wE(27D?_uM9ws^NYxWx zbV=ETl4|spDN*8w6g3k z!ucF9{1s8jSpy8ZS5D12ka?T%MFlA(GRKXG>{v;lqRnd!PgcJKaErRN`MEt66t_g) z2tC^kx9`_SGn4&k_w>dBv9%fa0=%bkNsqslm%*svRWq8_a%rFW9*$RcWvgcI&qUj0 zcbfuJ;-9b@{<}}65*4;EYi=|dL{;n1&jaeis5Q|U>iM&ip!@an*bb3iaoa+|6aIeG zunsxtU-S{LB;8(S>}-I0XXaj=&!NIr+S3LvLTfOQ(rLuIS^?SKRz;CD&w+JD%>3Yd z8!(!yOdeuugzo`p1c+u^5{a+h8Z0vyW4l3@=4)~H>)B{F(_YO0V=Yyk>%FQvG zjRtuRhQC=y@V~DezTGv=xF?k^wX(k-aze`OD)n-~*w1*?@=psGaIp=v9?r-7EpY-@ zr2Ap}_w4oGLDxO{EJ*$$M8!;(MqI9GQ6{`JW9_;=6iKg zHI!Gc@x=+Ys6*+Muw-alt9-x%wa@n?x0BxJCI?oXL&Q%;)iQY@{8R-84tYIlW$i)6 zxc;YpOcbE(>AV}0OZW^YXyXnxbifsdiP16gzWsa_=VKH`dcJ}h)qYp~G5w*8*B4dt z{m9s1zGP0kPaVZv|L6V1PBg9Y9Ie4irwsq;J?g_v*0G!Ol&Uc|)YpPJu^Y$E_jURg zR-!A9@5LF`Qn;h^pS|saVhk^|F&@z<0RBzd<-6}zLuOm+iGim>_)L^x)S;ftt->Va zty-+`pp8b@c*ZR8-lnEpNSehPjsiYjp;Wy7`Nd_AW3yN>$MLB+rwUF+7oJPW?0`(y z1o45eEZp$q@S`5KKK#P}cA29h8rM`_h8f%>zGl@XZm|Gwh@vKK+d%yn`GXqrNUO&;4=v{?i@4=hAu$k)x%Uc8dB_QxD$182<;q^^UuUQ|d9@(UIU^fe1Lz%o zWt3wVZ_h;bUBQNbHwM&q31Jy{*i-KL{=3IMh5<$-4!zJ6qY?$4XRdQJU^$>(edzrj&DgK%9Zh!EKFu& zyVB38<*RLQwY4|uIrAjCY0tXcXn2hwQBt|7rlVMN*3?JpM-_YzR=AcfPx{bP$FFOY zq~p{KtEN0&KzRo>$T0$2~$^2{Uus>%VQazjRMcHIyH>X~_h2$uV+F$!VTtPTV$$4})iGM2V zH{DE#V>{mZm;Ly1VFz4`$nUiGt3^%qd7Bdo{ouPieT|=^6Ha_z&k}9VgH!XiAu=5P zcu8#Z=VkGdNWFs{_AAOt8G=>4h>&8J48QHlX%K9+Rykyu>3kI>9P+WIY%7 zd(@41-F8vJH>cbKtdOSgIiSR0#dj)jWE>nniMLutzeJ?W0v42(DM&_O# zkskMLM^Gaq)b{cDB)B=wHM&mrtzNIi?ti9h0nR!>Yi4quk6$k4(;+_A6GQ*`9Cz&} z*B}!6Id^qoOVawKe+Pu=)J{E%}4U@zo(S_I6Va3Q^tpwj`g5s?tb<1!yUNv zZCZrNm;+kTmd{ng%29MqhvLyQibA^ix9{|ogB#D1(8DCcPvQ2F6y_l3dAb8Z-WU(j zgDQEdbptTz_f9TBop{qbMA`D!n@NB9%TV>ZCLHh4I_|MK2bY+YlqD&|TZ|u@n|wQ9 zh2P}DuV%t~S?e1TJ6?}(+*))8NMDumpCl6(d9H333Og+D7eMdhq%;3U2Y_o&J^z*G zd60ej07nzyH;A9TLCd(M6F#>e->YQQ0iRz=U$;AK2^YyicEhU~^{;4|=ggeQlR6_`vE{^U*g2M(>OaKP?ypzn^vc*!_74Z&AVOQ<*CVEC+pxd$XN!wYD22-AcwjO;@dvvO`ASaU~Qh4(|&6;8s3>rXsE45$(w3E zZNBXgwmSW%^m#v)xA!J1A0zilLb8WAN&X4+)uh87ccQE^P0=;q4!mi*c6sQ12g+v^ zRa(Cy>)ioSCTHmySnLcEn31a=gIs>mWR(D_0iT+6yC(_9uvi^gvm7BG-A590>4RtO=ECfUBECl`6MlhKp(^x?Ij{pY>?z_C0Gd3l=FU@QxjgWF%_ z9T-E?hkFk4-WtQZWxF2zE+_qH&t!eav2r}@-~R65XbboSjzd6)GKs)VAEd3>sQytVc*9cL!km)$jFzb=(2wpo)t5_?6!D~ zXSW5ks<0)RlBR`@K`4I3c4!k(iC$$fzAcR{lIGgk>4D~FfzqC$eQ@k@42~s6E)1k=O=swpOzcLF{;950&j(BjF1RP*&+dVX)QQxuFLZb>xyKXL}K6^u|7r zpLIU=QLG;4z>~`SF#+K&q=wDwMv&Y<>Hs&7k9s%wvHVUgC-2*Skq1=I#U!Y=$qGy$ zpU03ZW_#4x8z3XCV7>mfC(Q1cdCNz5XTUgSe$c zO*A~R53ug~rz;T!D53b@w}7gr7`a*D^UL-wxSM`|rwGYcB#+;`Nl$zp@p8B3MiqO} zI@V&Rm}@k4T1y%Kc!Q{M)$qN_trpDLIoNsc4;45&UeoyyK9kV=^3c-=(#z=>|4hk23d!r_518D{#miT6 z8Z0vr6O_IkwqQ&-O+#%Vx-IeBLPg*-@?A$WGO=lEu?Meuic}qNS z=dUhp7j}WzEv9GfzqbQz$^6MWp z*p_`I>c6MOsP*TK%u*!DM`cwe4H2H;{>hiF2?oQkgRfTd@CmX$$ryUYRa~v2mkiCH_GQ5%ML9+IQt3CR$j%j3(KQi{m}d$svx>@nm7 zeb1*I<*@VLnZbFHcnA%*xpyU{6;_mLl|`egr}UCZt}8UdZ~ zm331Ohf61T8;`H8ysn4eOL8oMw1~F^8aK2H*1E?t9@ZLn4R@VDUa<=E&>Q^Hl$ z3EDP?JARPY;f9Bnh$~rl$L^Ody}wNQT>F!z?lzO&q|5q2ci~(VI!kwVNNNmos;0~? zl5^=>_8UwzUj68F_XG7dZy_FfZgNNU*cckLEN-4LArRWldHwYB{owhZLppV01XyGr zk4IW3qgM%Ahpt{RXf)UI;)^_(^bI_f^P8-xyL{QP8z$=S+D0s9kU5}#@P%z;{q0e=`CH$HtGl%}`YLDR zE&bf_y)x~@>;38V;8rq^T*!~rF6o7TwX4F_>&9}4mipUWT=Igz!!erF z?eFG^k0g!KB{kfFy^5a)?(&iQTH9u|$GsiMsz3PXbUfiRsGPYqZ(a^3!gI#$7X0AW zk9ngfgDt>do6C5ZkL0SWH@v#`B^&1qA3YTm93Z{+@ptV18AI8ANfBF}Uc7aP7e9W=;7+1&H2U!WEb{w@j7 z6D8iu{ld>Yvbtf?@%x@5H~dkz-TIc_Y8UVx*lO~EKw00bNN;Y8o$0~dt3H`ziRW|o{DDd+$>*xNG^wP zji1M}GYp^$Z=djmEqyq3HGcMKS2?grj!SAgwd2*_3;XX9t}@R)zTh9+70CIJwrQT^ zPLi)A{vN3vf^4C1JsPbZ_>$M7$idi!LQ-rtN62~gCrQerCf1_%+Z~Sb_lZB8Jvz65 zydQeEiZp9IDR?vU-VWx&gKz^bGnehngPDwbVv2&}Xr+;GkS;n6gL^z45B>N*H*C|B z4)zgfKEQSS^NJ4C{Im{DGMa>`tXkQczr+Wwe_h|$y%{b`%F(zUt$|C*Eqh+Pp%6}t zo%0>13Vb>hIn*ymdNsxL>-QykK=id0hq`?yuH`QoigS&@Mk_^IkBBa~ZFw)c`AZwv z7HP-c{dkm4SNpwzQ92$U3#Vv%LRcJ49re-S$1>i6Mz+zVWS-{=0kIh7{vM zv@mG7()4wJcyPOxx*A-uv#_*tW`_7>%rsflc8y?6%~Q^vVzQ5k@o0qI&G_R-V%q35 z1?W9W{_Ut}#lQVbJ>Ol)y+DVyXNg}Zsws>KRDK$V{kQk*#gCbg`I+Kh#@3EIIkrZ4 z%nw7EUsxFTi5eJL^S=2rumzoY9(1MYjlf@da2T=*Hj<=-$#ksoAm7W5Rx~&UpZ+0Q;R_30EvW0L}Vw9bxkP1N>(*?|VNl|e33XA@hHxyw0p+=y=gnwUb6EopYg%gVF!K0@u zKzg?R=M%zVdAsbM;U8LrtCsb<`Rqo=vBr5M7tJiqAP*a9XInbLt` zL+D>$BXy!~631jG{hnOP!rC&9hnj|jXB8FTD8V#=p>>^4Qr-G7GHr)RN9YW4S`QRC zht6Ro_f_Z3yghi*1bx{#NdBz<#7y*tAw2P(&4o%CLXob=QQ?m}V0mfw=kZ0-&ozDj zJ!z2&x>=`m&h0A#KfMsD0LjJYRVOlys}ZhQwXpurZBA&n__e4o&K+H^`FQS-t3oOM z7dLu|N6DULU%*d|7C3U+`gMYJ0Va4ot4LDoL?=(Xu36%%sNOC{vg3W|CVeg>k(@U( z<@IK3bSL4z*DsHVX7}Q8u3fs&uVIMOwUbUr`H*H<*2roA}DxX%wB_AvjzVef0uh4@d-B@ZQHO; zatJf;d93%79#(N3XW@&pov6U0XVAZu+?(51J$WOWi3#q*VF&DrVaxUqZ-HCs_>c^0 zk~YS`6Pm7g^=oZ-j`!--1g{Rr?Hklkj_bxFBUv`Py?e1E-^3|@_c(r;NUR97C%w-H zKYBY?JMiVDvqj2L6y(^`s~_KPfjb|3ViS36)?!^g@ z;Tev5pSdI}@ZV)!i_UN4_5W=8P?C2LmxUIF{+*n|k;im20zM0vm!tEx+o=IPd%4pt zl@f02C#U&>DB@R{-(An@@E$H*HF)wPrwx_{nKNc;`k=0G@1M@CefYIk$z3Ns2X}P~ zE`QoG0Ow6t!v=WEVEOc20d|!Sc;+38V&m8#cE~1suZU2Pt%?2`%l$!!r#=-8vLsw* zj#h{8eWdr8>A7%Wl!|eOPArSuslpR}(velg)$sH}Y4o9(KG|gV`|4rrv(7FIemRDv+c~`2e^Ehn`b6}G?SzNXv&to( zMMbSHmevCKA#@Bbq&KqZhb?YCqM?iRz!T#;sbSQMcet%`T@=WEtCl`|8_74+Wy8tc!cJY_OhiT)zp99oM>)~%Vgnd9)0@y<1!x;n`9p81qSDMLLg zcH0$}D(t`DzB88Gr+wLYSWp~?kagf1^JoRhL7a8}7t)r77WaPg1lwf8`VoDNrPW4Q z@?q*Y#@vOnT7~}SE?a}2tLD`|@$*n(rJ$=iLpTf#KVzi!m19c&pG5xKjrhLd%*>Bu za=s~gtot!y9FAnVEG1tZ1;c1&<%p>i+^25yLE}yXcKVh7*OL_s?>_P~v-EYK*lz~a z-{M(#YU)+_lVk0$$+Sx)rGE%%{t#^HCJL&V|H!D~ZiD&bG)$=_Bj9Pp_FnQ#4_eNs zzL6o`ET{US-)%&1Vf16uKXg zU+0?!;z75?Uy76Y-loc0?hl>dxl`!Gp$kK}zU*=#=}s$byDGWLemVyf^$uhnUdshv zpTv=e^*wN2&wR0)AsU05!1Ijs3h;pN9B4K%jX4I7KJjVfAX>IYEDZ)B=Jm|M9;@wtb$P1JwO_8 zxFGXkneq0AUWcSs5u(J|8i0Iw*Xsr<~#_Vc6i_3-wd=-o4n3&k=%chO?^D2 z5_xMk*vh@>22Y0qk#i)cy1tw1@#>yh}>Qrt_$8wP(bRjPL3SE=VGzLK2KX#B++EIS8Lu(joEmEe7R z5&zdIT(k!4!rGG^J;^$*%1LXLRE)IOe+Zpsn*rLe;A8fT)i}}C@o&hb2BRD#+BT}s z!m|G6Ck5{&K=H|rGE4a)aI|Myk-a?(9o_WC&HpvQ-|Lt92Xwl@@$)MiMUrQ2%AXW| zuib=uyIh$T|7*e|+5RVMcRO(*YgysgNH=Wp87n!zzZF`o9>`K_8sK7ZcdL5?$r;`n z?-O7y1~>lNbItEbzjp7-CtfP#{KmZ3E=6L9^ddf6KaI@7O;_*THzr=?d73cJ&1!_F zBfFdDL4PaRU;UuHT+j~h4WAVoNHt@4(q)ZAyBdu6DY2-$)((Ue!skHxdCyI|9&I=? z1ON1^8hmH+FjOXa_aU7{z~h!jqZ39zeh+tWY7qrL9y`VEV*e3))1}_|R89f#eq*5t zEd_d>fOFgo9dII}^u?X#L8#RUYF-y7ygLgOk;E@lVES;>%=Ka?4B8nd{-UkMFL!Ff z-9EM8C)TdN%okfgAaa9i{HYqqiHVtd#5ahyt2-A``w0K-xk$j&DDg3$w`{se^0B{G z+cFEx9niL&^^T)y4gT51@1W~jhfj?T%ULO0%`FI0igdb}pWveU@Eh1aoZbOIRDo#{wv9JoqNHoiSs zfH^{*Y89GI(5}ROIZkC9x1W+3$>3~<_-_^Kg2Wf~(_^wJlN_gi?P$4xKbeg^#?uk2wt|!qDa9 zY_H5BnCO~$@b7gHnxzUk2Y+k9d-o5Pj_xM+7w(yFB?WWP<|d!KP_ZBJ4PW|lB{deb z5(Bx+Mo3TBdzJ zm*6d(*-pHCZ=`p;ep-XIr&NWSd3(W2XDne%$t?4Wh3*2Xa5^ z#ziiRrTtGjK{V%p#GktvaL9K5pQaBL@UOw^j6FNq*Z=mG_tvV$QOdNmN=*fByhVGu zBen@>T;h&}Of?~&M>IX#S_>90n7S54)Pr~(U8QA48~kQBRS(I25BjvRmph4)Wta(5B#q@VX*#>FNad)gP@xbzC73l41koIi zU9zL(;y7%)t9yJ$dIuQpicVqP<%ZWkx&&Xt9yDb*ynMBjaKz$8byD^Ep!LQDzOGLc z46|W;aMP$C^dzOvx#c|oweahT*9h-NiC+1k#Vac0RxoA6_S+-Nwz1yW)CqW{`Imue z-H21MzXOv9cl<+@jl-M0T_7g^Vt&hmZjvL|9P>dn308wOXrul#!IikK4?{9lxJ~QV zM?*t*q`dyzPHRd*m1|cP|IW6fT>nM352YoTdEPr^=0q1-soiM{U`T`!%Oe(vr~7e- zU_|b(^FF|kq&u_eZz<~ERY?2){mw_~Lg&R71=w(@%$&cD_^7lBb6dG9kySU-`Cu-Y zhwW{7y5$V)&#<`?8D3ju$F%G?{z%*cJsgyQ+xQgk#mtXcLXIl0pNqhlpSnv1lxaiyB46W1W7q59P5e{VQ;vw@ zKQogpB8MKRLfY776_AFbb@y+zX34i&0L<{-GdC4+`%yKPH&_ z3a%KXQl}kq!D+5uaYybTZj1V4Jo$zSB9CHrQ04~l>d7r^M^-9vKTWp&d$U@!^xm9n z#n}c^N9@{@#;D-V*QPQ$(u*+;A|?A9^6|yQWA~NnE)03{^3+gE1^l>Zdg@6;I+|%; z9ckqvyol!R^QslKc%EDA;u}#a*l6!#xOij&D6O#xO#V@@vzIQ-T9M?z9uLlLDNccM z-VdLb$Xrk{Y=*(MegNLmy`u0e627@{&5}CFm(AR4-Tf%68W~0(1CYMm?j$kJ-CjKO$y>Fcs;#FJ*}cAm>S7+a!p|Cq`);yU*%o5aF6T#$F1y5jK! zPh^}*tlm(9W|ehwb*Zgrm+))eFTD<#of>-Y5RZr8nazQ<+=M&XUDwgCT8BUFBl0T9 zJ$2DN;e*8{6;S$zlTj!?13lEaGByj1fkj$@^+W)|!p37%RZ0nr?XgOlJ&^_lGXjki z`$o9TtpGHcfqI)`wMp8-s}_s zk7~cy1b1}d#!U|Axw(pg#S~{pKBTdtVIMY>S%@Xx$fZ$4Ve(LkW26J zCJ;0a8I{YBo`b;j*-Y8X6L`JoTW*b76YAxg=r6Q%gWHST?WqRkNSX6#@sz26#WCfh zx(wudE;gk4``eFjk*0C-=BXYKpHr2}@EOFv*uYUZjoDdtlZX*g*hLU-ceehLCSQ~&M)MAkS9ICDKU;~ zU$@*{sfDG0Y{lexvBM zLg#`R@AHffIP3Sgr6Z{Z4j65sMAuB9wqL0Jj_f)-{`cw5I+uL7u%)T*!g;d)+8sXY zO?YCu;m$X2aZ@qzy8hl3>k5>b(t9M}UktI|4qfH@Scn${o_|eOYlo-h3W@E;QJ{F* z_#a0>Kk%IV7+Mk1jJr77hYyi_nB%?_H3_yPyt7ifqA^AO&c8$FA6az6xusesBKv`t z&y+d4&2qr=^7M=zxvyke5-h)FR{jdfAGel7YLRb9+!2zN7H#JvU|sQ1V39YGU&M9Q+>g^ch*_ z3~Bnp_k|3@+#+*NDCuot|Fdv9qjr4#ar^5ngpZ)se<$i_ZZ-VbFfeMjI~cuwzUIvJ zrGh_;m8mkh58xPd>d0Uv9?;_gadkcoAaB*L&|^ly6mIU9W`CN|a%-uQLn{@6ErJU# zv1j2~T{n5&*a6u8`>Xl|$qw-Uk?)yU+2+*F{h5WO>1 zZ6cc*F|&a-LV}z0bgQ~z&A#-)B|099oLmaz1>JLTA^;G{o2hy@+W@XfmmL4vP)1cd>un3F z*~eS@?D2)J7)cQxyJF=1*U!tzT#5ZJ^JWh{C+9q-gF#}Z?dV!Q_eLar2r`~Ga5qSH zpiK)s!~3`@@EfiC?>}-6DE(A;-H$r}@*e!s+1EIX2JPAYS&zbzeJiJF<&i8LGk2X$ zdD{uyTM8c26V67(nyMSU{SfSKaQ5+ttHU4mbf-RCnt)o-jQ%Y#ZTLz;41RQUL(NJB z_fz4I7+dI{H6d9I>d%_8?|f^3#l5Ma*LC~hbFe-~!jCMne=fT!pq`H>_;+aC9u5JI zC)BRPIuppa>zU!cx?Z@0!561BazKUsm*fVL>liFJa?`u95x6H>$auaC$NtGhF)jAM zi(v-dv5Re>75Ke)+h8y5byIa|f0hl(MPe!^ca6cRTg^si^&D`6U)Uj(ChHrW$KcT0 zLKMDtM68Rm8YHuv|NF^8?vs_Rr+frE!OwC+Rf31)Ibb0(&G{*f%HB1L>!fU%T)(<1zrnOr9m8P zI{PxpgYbMi_)}8+%E2?%ZjgsoM)W*(TNti9OqMm^KgI4?CG=1&G?BU?~Lnl;;XBul`TA5fcmip zff5BR5PLCtCSJ3F_!y$5!-g8+?e#v*eOLOyS^p*v?Q$i&o3t==T1y%%P{l6;n>h32AN&Kq;dr%9?&R_6BGA(~Il2)`spDk|CM>Xe4g;imn3DUlY8L5 z@cBlz_ zz_+D&-uO-dNU3p*?9d;>TQYvm&BC?t<5F9CcU3!zZ!EP>&1}INpZ*?HC!gm!o7YF$ z(-7R#zrC>i&;}GW`9TMb#iV&t7)gi3bI^ z@$~6ix(zNM_@TT-g!rBVQj9GM9PgvUI~!NEfN1#l?wd%}!Z20~H^oHk>BrS2x)xSK zZ4&;{{NVTDa&(bF#Q!aw== zEN3~c56xu^uT{bw=fM8b;3h~D|LOX@n{a*QzHGlQ7k~;OcdxWGze882wN%OQM)-TM zdbl=)_%OTwE4}-76hUvfEJ%`^d)Vvuu`~9;d+ViYRZ1&_yc*nX&60z{9fLVdS3B@t z+J(}NaWY?cY(dBCNJ06q?Q8+RhKa{X(~!31jNy$MZ3Ki1WSVtGnt_s(9HOWHh8rX6UUg&9OIk-8+$8P zbJ7#Fmsw`tXPO5JD(^FDO5VY_gaFIZq*y#xQF8mQPC8i9IQ8wkp8*S9X;h0=1i_Om z8d`1Dc=@hn?!f0-{1(c6^FO{C*#F1;%5VE_bS@BXxJmXYZYQsMB@!?4^A0hKHgZ0o zRQ*l*(9;J8yi61|K99oxC^`>ED&IE_htM>lp`lb#A)`>lt&9?tQZ{KDsjQ-GS*cJ~ z$;isimU-Lz;NTn_duLXPsPz3kzki^?InVpN_x<@?m#|`8Z^!*^R6i*x-__iXYne7R zw^N((?7H#w^$Ho7fRbi1Of<0Es?qX&vKhCJanKG(G{deapVAE^fB#Ez?ET!!I!LNm zZkc`73FcbdswswaFgvpI>IuUU_{ZthVx>IU9SLb!6$D=a3i}DZztY{ywQzbv&jJaXc9c|!VakBe^W&#-F;*Qgw z2H{{C3*DaZ)DtLAidGXIrMj{wjdwZ^E6Vl_NUo=Wh*5BQz>#A7sK0%#=t3`6-Pf?W zT}#J?Gk^6ofp{0rSKEvkv=e`8{x_Yqm1s4$cE)))2f56()x4>Zqz@GFAV5C>)3L1g z;H7jJjg2c)NEpEWl|4tj(z>yV^`ZZ*9X0UqAM=G*OjPJ8+8gX?Nyl7DzZ{)EA6_@x zKik*egiV?hVc{CWMPzwC4Qk$Fb{B*{8+t1|r z6L?5yka+jB|ApMXMxJL1=Q5-Pw`Ai!$-7St^+>M%`r0j*C>0=Plm;*BZF9m1;lIJrkr!}G!Q!Hr zuYV-yE(D)0Am>z*$}5=VGyQ?jz7_{a?ER+d@PXf*_s4fLpxwcL zo6B{QuiO!KzooViFBRFIu?}kjZ>DRTKL1L9?1qgcneKh4l;X?G=`n?e+4O$+JQ~6q zot96I5r5~<+x^qqtcaiTIAs;zR`MJ^$oE3`W*)}K{ruVNPQkg2yipckiJ$k0RMBP$ za*jO~>3&9d_!J?NO_4espxf4|u1|8=iXt}`9>tBqpMza*qXwh#mSkKZd>Dl%cBf;t zPuD@IW=7ewCBi{Z+`nko?+!ahRRT+Fsp$5ck+@wa2hCDhT^^2Bg`KceTc{YBA>fA47Gs|RN^-sdlqHP>1kH_r;nNJw2 z_uq&T@v3-l)9dlw(gCUiJ5~!-Q=sziK?gc(86Le-G=FlMu)x+0QHII&5~oykTenQT+coQeHK6Wa?RAjW>>YjCvH@bYOVi$Fh3S|2mjdO zIopMrD^KRLJ3d3l*?fT|fkyb=rfBiSfq2wHD>q7$9Kxi4s&Lr@#O$AS+l*-KP?wgN zsh-q^N#w`H@w=j+!nBxd=`VpR^r@3!(+QR;%zYEp&{t2@Dd&CY{XyYg{- zM0~k~?EBlynpzGR^`iJ)7PEuP?NHu7%%8Hk8%i}KS(VBB_;hCYk>{6(fSx9-vs3hn~W3Q!p3sJsb_;2>nr_eMPv-4KQHTTrgdXV(;O?5q$P=@5M+987{abqx2QZpK5&oi{29aXs zc^ecH@H+pcreR&;!`^E_uZ^TbxOMc|r2|!%=WuVp(6<7#x)(31z01dbo73JYqv^PR zlY`I&N;4!dzFo+Ak&5r8RXW~Z?}Fj0f_rzCHDEInZ_IY>QeZv&mHRa>9gnGBb{&i< zLdFd)u6CI|+?~uXy=MarEpGnQxT!D(j(b-prsaQuRi-BGr`6`*ab~fIN(3FojGBcD z1V=zuEpYIvb0>uEwGG}S+X|HuSrN(`T49I4<5b5T@%V>jtfN0711+q3{b@s^Fbu4x z)LMx*aF*}*G2sAIb@^0&m+X0UuPX8L{wyMMm}^ISSJh&~ZRVQRTo%7a_cxP5z5Wy+^cSQbr;uRA^g zyba7Q5#;myIVst#OZp3hG&j~PKIw+mfaHUFcXZ)=w5y}qix`lne^h$j(@lD-Yc{f< z?FG8`z33YWtq^E(Xk*^r9ylm<;c4%>0VwR!yva@YyDm$9Ubct&L6YbAwJkRr@rBKB zDn`}ew{hmG0`pENPFIyy5Fdp4F%A~b-V&%ERAD*2JPPZ|e*IddNkyYGd10%GPw2U# z)dsI~Ie0_h;Je2Fsr;q9O@=lzI)d~ z#kGFYVn4ok!p0wd<>7lj;hBh2dd98I$bV2oqjHf3vJs4kF82~h^B?H&zBdl`Ow!%+ z_S4`z*mHvNas+Z}$wZwx3$BxNem}C0{dXlo1Ya@W%trH{dbT5&nRCV>^eV}}QPWgI zYDgd6YOU|_lrcD65wBeEY+x$Bu;Wa;djef!c@X{>#1i?`jV2*5n8eVG9I{ zs)xN|Y*d)BDhobS)P-r!-qJ*uyFtP;^Wd| z7R9;({oN#n;fViNzo{LB-!LHK()w}+1^m9VkLk7JSN0QQPp!K_d{24sp{WtrcDsH< z$3QNoh8m_wEp-t8$D~Lx$;p>6rWxnS|GW17kxex+9pJ@d-x2;k1lDY2s_=_%fn$lC zvAJcH&@%6{`?@L(dah>G{Z&fGwVA!ay=onp$HL2$ur&&EHPkJ4#MVI0JyUJ*8VX## zcJ@i;6a%VgPc0URpS7qkiO;mP6Qp5J&^KBqZajB0bF($!()rxYef6OYRpY+hr<^K4 zgVC-Nk+ap{`21t5=1eD?U!9ixn4ELJe7eu4hmw88ht;~2#ByAfH>=QbtQEJvIcmH8 z;uz{b)zsxH@4yc+^KP$2=(w;d>EyUg3fNr@O51y{7sgoz?nX={pog(o)8;XYsNj3Qt~X2p0wV^CXWii!cuYBe_QY+d+koXqBih5I%B{e+JbvLPI;&26W>JJ zFU4&|-I%uPW)AmD8vOZ9yEBwp4d2T9PDhYAx8tpJNx3QtHZc+<9+5tTXnq1*+p4lf${}RG=^BrvE?DGhG(VL( z2=q2)x0|!AkawOv(0r^1><<;Z7G(R3WfyFI-Rl`d8J?GH=rW0RvMj1GybPQ)I$vpN z*oj?3Z&rKLh`)hfO^Pj`2TsmjxJ1tUymK4_ui5zLw#JY?%>MJ9X6eMIoS{om5v&FE!pODTd&cng zD|*qH^Rwu1fcEdo?pYjFpR4Frt;G3n>;78XjX*wE%38hHZ;&W`Jon3iA3$4pX=xit z&cmT09=V}<{H0vy`##A5eFe{aK4&tD7t>!+n+|#*m+XM{qRSxG-(Gw1#FsL7v{5O4 zw`m(TF6xTZ^Ob=S2Ys7XN*wUNToqWwmW2jb8@5EAQzkQU>L=KVi_YqjgO3m4!|CX! zDlSywI7Z2vz>AV_Ym;enfTWuy%IkCO6v33-vku8YG~r)959OcXrJEM1s`fD zwigY0@XYRYPFsxHaC@L%;-4l4hNYK=pL*Dh)?XJ+=1b+0_a_e(4F?+Wp%)H*IopX+ zK@$HRammBorH=w`ley(0OCqO));RPAEsBo|_rV6XBGYIMDzvHvE=Sy>f?xjljDcAf z%5AwaJ(EQEX|;nN&V`Jlor5@qjjbJJ9@(B3Nv7gW>03sb!nvqiA zJVZgO{_cF*SQX3}?5a4>OgL2mi(FM?&fqIHH0ee1vngAnS6yzbBb_$v3&V=*e;CnEWsj&h(^Xu>EKc|x4^JD2_yX)ZlL+iL= z$0lGG8GV;GO-H`)3y-q7sSv$0;Sr~68n}GAnJN3V94?FrTGimh*EPZDsm6?) z`U4@Wo8frmp4QFx>Y&zpu_Z)_ob$uihYo#6!!nO@n{e6BP;tegW((I4{Bv-U6qF)! zzg6Nfiy5tGEc2*DE4%_68y)w&(xd+&ZWGa@J;1Sn{SGi!myC12p#o&eU+w}HMG&YG#Q&P(XZ3mB(GAZ!-HV zWNQQNe_rt~{a**Z`Qvfi_hBHWZ{+6bvLGbuAKf2Tj`yQ3@3Xo0Kt;iv!b_)k7`XEK z@O$R4I*?X<`Qnaz2XNkd^@N&70rrkr>G#Al^u;Z8_Si7-$EA}pnP)#f?bDmP_7Cw+ zmebRtuiDY+T*OaWOEnCa<>~b%l>&9Tc6CmqD=zC8{&5XMywObg()u+E&QY#?YDnn? z&aK)%zhfDEjk4dCS(Jd!i;dH_{%8S}19aw>pNQYL;cor!O(_@<{?s^|>?3Zd9ID*T zUyECv3^_g#e!^(W#|zo9xg_uOS80_N9oFCC)?nV_VIzr309>>bcQ`4#_v@ zh6NKw6q>(@3t;fKLzm(4TPpqqcw@!%Ut&x)Fv|EES3Xx`=VZQN!e|4$H2<&kILU98 zX5&aW^VMJPFP|XK1Fa)S$(m-k^Pu1)3{{V+vJma82}n_V*8V zps96JwoR)Mm=kWZo4XeRkNvjA9W#x%+%cJ@tQ-s6+8-!ptZnGOCFY!}1|8%7rBay4 z^KAp`@3J;08s@Hy6EA>P^)re7d;XD z*)SSxQ_Z~;vNAwrcmF^#$>(e{J7ZaLD+am+T=$(Cs>UzYZ*RW3Mf^imqXOGZ$sAAb zpt07y77+GnVV52n0*99sVr^I2!1_pzU6WiDUhg_${IrSz{)}e1(UoKzt5!Pe@U;iE zd>?6spQVFb@2TMc-geY`?LYTJmPOEv^lD`3hKq=(s(-( zP=`Y{Eh}aKWeNfnoqRvzFvaEJEz3?A&+-_$_?m{gk+wB{;tVJ{n6CPzxfk}XeBENb zpLpe2DuwgnNzRDRs9~#YFJAc*tk0v|4ELUAFmb)F0N+=x?`z4PTb|>Y$_Mi2q?;Z+ z`?6~Yl2b)@7?NJQp>eLJ2jSe;e(I{A<@Q2cV&!26;#pHEG*vUrq=SpUG0RTd2u%50 zXgyt9gK6vL8627qac}v6>#Z&-e2ie~sQ%Oe{|qBd^DA57!TJLOkKIy{HAU~i&qE_{ z_5H~5JN6tjwb;1%>Y7TVJwLzV)aQVco_FIXqR4(WQ%{14UW2i_2O786W}*N2)T>h4 zNghEw>e-?&6;jt`KR3`TgOS#3@%tgfuQ+#D2g#g5l*Pi-B2P)4q@A zTcyfT?K-i?ikHJ3_R8*0e04Z>aW;0Zf}JJ&O6tpS+mg6`p96{_+1D}aOV#$O9bWqjQLFGWXRY4p>=zf zc%oVK)K#>r(e6+<)$&>sTv062Kl!X4PaD1Y?nHWUSJURaV=UglM}dQi8X*-ZkvaUl zJ2MM6nq2p-Rw+Ps^BU>qsSi+^DNu6eVAm_{DR%gHV)7AeTlH7 zW%Y~YN0dao$#y7y!%fd`H0+1*H<4S`64yu_nzL25|AH#-v6)f1&mPgvi0tL z0K4#+mnoK+z;sP}*KQvwh7{jWnsm&7jXQD->_W5ACPhAXfxQV|F0{{`5*|Rs`M`#Y z1|LC+&pMcz9R;DD-S4Gd60Yv?`y4S_>F~=yKP%-E`901{{fd6xi+olGtpt9xgT+zX zhVL3QyfUq`Tk0#>7qRK-_Pi$C)!RdV#;=c{k0D*bW_=-KF5gk~74Dq~BRw(*X8&9@ufllRRq=o83ptVW7#MFx9Bbg7G!s z1Iho&P+;5Ax1bHlxaePgA^s5q?xa{goY@xuQyVrLnjY`OeqqcJi+ zE9~%6C?LJ(y3)ph*cPaIr)5^DN&I-7GA(AZt+;LaSaZ|@;SSG4=El&X;J+79RN9(q z(D_-O+niK~8>})yG`;AsgZ-{VWJCpS-&5iE$gdR%V^CzdbqLP7yjc<@bNvY|DUDOf zeef@ey~*r*6aF2`5&gj4f&$mXBqk-=p_?T-YKoco1f0zex;OiS+5V9i)8zB6Q5`LI zhfc-){VX<)J4sK6op-NgtS9_ROAbVnx_c~y&>8ay}B)2^~MdkD1Xvdyt{~J2N4mfV}-hlCec$FU|jwKS$ zm#XqiG1s96oP8*J<@F%hj|$t&^!E>fN%z}RYNG9sdYif4Cnp>HkKTK_cd-y1y1p0$ ztz_Ye@7!-kHzi_UiO{<);%j27R{!zJrVeYr8OdB~E`R`ggRV=?Ur1h&%lq;7VqCxF zIi3+N!`gkhUTLfKDJe$-A^E>w&-a49 zQ0woEJEO2?&HVwn%siB@Rvy>rPJ>NsC)e2?Z@{%NDLFLaFZJ@B?o;~|Q&a;Kto+@h8WlyE9ch}qnBkSOSDJGG1T9~2 zIt6xMDI>+>ExA9AtUPJW4WL22*)eL<(GT#ALf?0-yAiy-{qvr^8zOwx^vo}J2eIm$ z$VL}Q;y2W3*ElU&1aiJRHm}>82LaD3&c7BLLF4{b=R}gf=G=R{H+HNV4*eJZL(?+= z)wzmgm|r&IMTJ_a!&(fOf4N=l$j1)ig+6gzp_%yG8;&%^sdk~++>Z6xJo%V z42?AJ>@1?;%PmYz|Gllp(WeyQb`M0^47Hh=<`_Jm_c-Z<6BV*KdO7l&IzX*|q1L6O z70M)8f2}9E$@5!RAF@?#g+1?8hWuU-&ba1E*eSm@WG?oltNHc7Qbm>`lN32$)HY75 z-lqaYDV4mxQ3$lan1qFnG1!_E_PcU&6iO)N!{1I$g1w}sXbt-a_!+Hj;T|u6|9l0< z_C;lY56@DMGcgIVo(ME|SVPVO;k)*plgS|M$0BdX+X4Yw^xo5?+hE<&z85<3#Or*f zJk5Ju2HrB6lgcLhBHQ|Rnok#-z z+hnUCD1Y&I$liJodcw0!exw&Z=L_p{N_L^f7V%WE8X9URZ@VQGN5$Ds8n=j`2Kh2v zoioY4)~i?7e&uf~GG55I3SOh3#5pf4&+h`&M$e%ICGtL7kaQ*?y#jjpPk)?MCj7ms zb(>c+nlS$^%kyr}X1r6Yaz|9A2rGLGui}9Y5RXYNx5>(fK8l3uuH;G-71MwE%!&?C z(E_3BO=2iy|1C=)t_MCu{p5&DBOWwU<+97yv+CTm@V-^oBa#*H%b{Fn+=+M>UAUGeNly0q;`2H+ zS_pcNuDxBlgm{uIQZB=(6YkSI6|0ZbK)IMYg?hOLHqkdJRF1rY#z1L_I1`dH5&9)` z$9NFB6>p?7|E7bxb8wQ8e;sV{6%pwqeeSB%%;<>)3h>s}cySvJ!b(T6e?SiLJFQmH zHF;8sZxb8*5?n^HAirc*k=$1vK4e+7j&M^(tvB9TmEH<^>jflk?V#h=*HbRPlo$v} zE1?4#ogmv#s-~Yzp5Lmz0dE$&!RMp$x0YSR+wd?lx1LdsgFN5Fy<$dyJ}#7@Ep!uJt;nzi$@f-CjB&Pfsev<>_IlktMsK8jB3&#IaiVGY~vvQrY;y~XElSI zQ%O|lR4vBt&pw#K(+OsovOc{do#3_S;M<9_4-pt$(WiG$;Cc7nb(?i&alkFm^|bLg zN~atfP#j2w=`i)pLkp!KaqF`Ii)kMIiSKSN^Y2mFtO@q zjfMPkfrE$0{qL2xm_55)FCH7)Y}cLF3(KPlAG8&_VeHn)za=S+;O2fwKxMXxaO$|@ za>;vcC5PDdWHOf%DLt^gmVDmrRMrP_i!{ThY(=TJVdMC!Om3Q%NVrTrQ62)nI|$Fi zu4$jyC_V~RId7UzJZ?$XIJe!d#v;Y3L-3_7{*nMw6WJe0 z8M0SXP(0H>-<;&Fq{?-3t5y;3V_0wPt+Ec>WZ1ns@=ZBrJ}rv;994*sg6w`AFAboV zeoMBW%n6ir^(5L_7tySV1Po0%sg(U-0Ql}!9J}7y0L8u!-dTu$!C{hfm(GR6s4o%BNosg-!i@j>^0Q}RMX{Ps<0qW3tbjUu{@6QLHWU|jXxaF&7 zFL~cn9iW!_kI~Rouwsi(ZxcGZtx4QD?14xAL{*y+9=<`frdO#41CC$R)-@RHMJ~Bt zoc?6)Gc^~fjztmJ@my4P3rjqFeU;&J-Z2wiZR9Mb?JLJ6-_yFqM$O1QRBbo>yb#*f zJrMJ@ZGgU*&b@UZBOvdxl($qe1cUmHT7N^&p~m-Q_05Cb$Z2zJ;JjfHbd~Z)Zt){M zmk@S3k5fJFh?bMzzgz$j+zFRN#YjGTxtv*0?i0ydXG(kW(Qwseq1twV9!TH;0qSH2 z{7?$Z>E^9Ln&YlL8FlSg5>y*_>o^r;Csa;ZT_9enE3-a%K3 zo6*GUuJ;$oNPNTm-(A-z8ix3aB!Bx(1^Q+kQMm@B^vgRARn z`OHcRAiY&O_rFmpEUs%l?9@uZhUu82PT>QP$itqyLd%0({Ze(cj2Ac|7~p=cvJBKl z^EO@|tRv@2iN-<C$~(9I$l|Gggj+IO17yMBbz^VvryzqO(4 zH|@BDZSg=!`StVJL2oSbUs8UvHW*~wihi_^zD!o!7U#0l-NcL6Dy3}2fNQO5zc#%l zxpL{}*9u-!a8=p6WdWyXWcwFU6Ia>`^+%n{*U`#BcYFQBs4K}k*eq?(Yih#YE6+8~ z5Do_^7Nx5QeE^L&&bA#n9caJ#v#*>=9bBruU-OB4U-P)(WB9IalIPhsubMeP?&AlK zNyr!Cu5)WAt96@!&9d1-fOzLVgbl3?xj=<~eW@DJ^WEUaT*GZ#Hi7+mw|w06DzRhO z?1|s$5ez-1GqQ&%4dQ!S3V*hYLd?PUA0ywkLtA%;Y;rLj>ROo;b@udNO#V#;`OAdI zerH}}cgPpKe@Nin5%C(lRQZLcNFg8XM6&W+$CGfkefM#uzI=4BmwDk+OM$w5o6Y9; z6E0!tmK)dJ^Z-O}xUWKdO>^#?eA{;Rfa`fe&-zn_dM7j@$FtKx&MQz^jP!2bzmha@ z6w4ysZdH%8LxeZ_UzBXLL_MC67g2BzDFx>TV~sN%bnITgD@Cy>6By0!y#JI|;X#hi zi(+F`(3So4!|8o3ioe&~RopR(Y2}Piy-&mV%l4Xw@!tu|ZBW2ce;Pt$*h<6*1B}=; ztfR<$ixyqOQo1q+m%pyrCvvy~G98$b6^ka3h54imFX6&9nN61M5gx~2=a}K|j#SK9 zw|3Stt^z6VB<>oqWkZbI!p13k2G&{b5J)1P`j?c6;nMpp5Sje=>!+4pIJ<1etnyzH zyxTDoq-|9JmaifMmt@ND@l={^XcFR_iag(+2nt%?QG02=hy42urgQr2$lUK)DOFLwL4Y)8^gJ$IKQqzUI)uetW-gJl2^zln;33qsF%roAhtu(Yv4gLA| zTMIb493Cq8T#t%3=4S;QNN?^@se!9+7kt%JP#vQdLER03-vPxnz_GG0zr$h(6Ih}W zbO#C`p*Ax7&gW9_b3VIwvV#FGma$E{M9aWmD4=n&or1^SuUCjYoCObyMUQQo8v>s> zx-)NLE_ChbGKibX0hy}%=B+1s@M6xU>`k_VC?)jYDz=mi+%$AeoN}}lFFZKOeR*3B zQrpBgasQ=au}Zw5iw?=p|CyiQUL>BGMkC>st6dlivZhaYG9cjlW6NW#G{Uz$tS0`i z4h8+kDLWNOkAa!5JT$HaHZ`2KcFs@0gwUr&mjaj!GL94-`+5oS2O6n&oczq5A4`z``<8}yu$p|Nd5ub ze;|42+MhOP6)p*StTBRq0@s}qk2Rx=1DikB#VlyEZsDGtr2*x(f8Hmgq4eIhOK}Et zbZ~1@)VNy##!F-6gDn|YmQXTT&zl2Dh2Os(=JP;5(E_D;yBz#fq}zTuh46Bes(8gO zGvNB>y!^tDPQtxVGncqgfa@Pj#~0d_;g>xT`F80waQZ~y%O~W%tOP=vN)&rBsW!Ku zpgR$t?0;(Ko-%}?|McZJNq@>JPj$k&c@zpSav3m`^I(7Q?EzJ?|9$t~3nbhKmp&_Ld0rY^%s=;c^V@z)73vxzX z`1Dd0_00QxkWRU`-^wEwF7?))NSx>cq3}P^;e?-2zo{gL%2NU{uv&Y^PCB09QK)U^ zAUsoX=^{!0PLS}wVPR)Ocv*i1m~S2;pVMKkA|=v;5v#bM^p$uRESUFrDjXo59c^*W z(xpBO{(FbxX6-cI+Ar7rJ_b4WqGR zkk!TK`T+1#EN)&DtwHAZbwO%*`LMomi0Jk8C}5id8RSKp7yZQCXL9VvK$Eliodj)6V3v2H(}e*g{%lduhm?ZDAHHBj}c z2oLkO4rJF1;)N+>+v_q2!-~6_D6R!~r1R$1omv^V-*j5JXr4iQCQJsmOg`cO;c(O$ zc%g;2?w5JN57>Lr{8cKwhxo#-1pHak0%o`Ld>mZ~N4`bS>)WSBr2UmisJ+~adwR~z z6wcSew@bbc1GG&b>(QCv=fzbhR#i4p=rjx_J74b<`VftQ0l9QxS8_ho+8P@#^uw(% znx&6i2<~4~VE>oQ=SyT(b6ieK!MfoE#b>B%hX`dhHl5qgLFs^A31&9v>n&AGTJ0}QSqVx}$r<>^{O&N>+24PAk57z4@=TX(x=u3Er^W zn1|+`TPN9Xh~DO z^Znoi_{T~GY(J9og<_GCSvpk?+}_gWt80n(Vb3#zp5OiOOFNjt z^R@z{8)9rbPNpD_hWwCj3Kgc_^)Siy*FbA;@#SoP3dr$rz&-Xjkm%MeyANr&V^VS@ zN@f6zrVq<~;g5svOLBY0?l(cPanaA5pL0^U#jAa%`*L z#69f70HN0t_WUCmn8LyyCDB!f2hvt|7*VJgYcn;Vkqq90hR1id36(-GS#pd9SHkXNz1y~y zSEITbw|nJc3HBK+IGWpz!r+*HR;@!4E-z{Cel47a8M$Saj0_5{?{?f4-d>D5c5Uy8 z^L_@aT?0dgJO)u$VDRbw{t`Uey6*_r7V^2PYg8+`IgGTc+s*!SsDa0S&U`DcYs2NT z*hv%eJp4SHOuaSPh!cMVJ>tyj2>(~@0R2J^>VFzBl`v}srZt*szX;EnU*!Ga?Z)k} z!!vA+bsTvf+Ici&yv=}hagBOyy>z%Bp?|Jgu^e@Gz4c;IC!CiRhkZ5WU09xT{*V9b zE@0$rvZ{^wh#PKS$+EHTLfKJkyK|vUm>7RT?C#o8V1H07cti9xyuRnDbMiwWK5(Z? z8A2{FHCVSkoXvpaceqx&{wB{^mnm*S(Tl>o)+HR|j%aJ{eQ zG=HECj}19htdH!56CYsP((nMR3eOS|Sepx+z1Q_~4^@NEHx|>i9|=eNHHAO(A|0i( zM!ai{`{09x&0Gs}5@@rWD!bRgz-TdX)kyY6T<^cvtf;04g;!DbFqT>%&1g|NMj;H2 zy$eVUBk!9{TW`IU=O2XAL2REbZWM#zWe&mF*j60dt18e#K9401m-KaR)8O*zER~Cg zd|+&LzsVIcPjUG&B_0+q1RbFQ|M4x4!1wLEOlF;RsPtm)E8`N$ZJYUgP#?;{L*c<} ztj>fp{sq05Pvijam!lC4nN(DFkGPj`HyW#&&fR`1T!gQRvPCnlb>a<|0PVfCb}(?# z__ES}O}Ipe^@vtqRb)YD)}S*kX>JJW_Nfi296d7?LU!-jfWTS_=S-< zX;R>QMPqWVoh*@_>FEH?87-wx-3)X%zh)%gyb0)0W(x;4r(^lEI14AfY^>Evauj*m zk6)C#ADj~!#MkVCb`2i2pvcPZk+F^rjN|_mjeJW3=?`bwZycZ?1n+ym{;U*ly$OjA zNUcHJHM{&q#fbHEeW_-PeG7h#*50^@aH-qs+129?wn6v@Ci{xQX7FXr6%&@B0dM?W zmuT}eY!*2*)s)bKwti7Rb$*guOqSk$RnjLt_rgRdevpAKE&c`-Lsj^JZgV<=>_b8u z#?H!oXvgNWa(Tyl+OaRzX$$|Ja!haukaxJtfJqX=zEj$(sTgoPbh29p7`N{`vvOc{a3JXN;&+31bKe`Jk{%DO*q46^J9{) z_u`GwRvSA@F&YXKl&~L=Bpb`MIDLX#a=}8ZpkY6ksfjP zwrUp~jb5MfxS|>#%W}zGP$zvkZBb$GE7g!+5#}P;Ukbxp__ll?edH~9q36R^lk@9> zQl`9Z0p710)bi)bgn3xbOD21?!l{V@`|ou8!}U(#*=Z^`m$4lx<_ds|AAf8q)gZnd z;8FU^N4!ZdnDeiccA;U|8|^VNKfZq3@oY;N83#UaNPCo<1RbG zM{r4x3KkngIoYlI)?BK9t+fGNB7y@j%jDkwu^<($%LrXAukFM~&&!!S7D-N_)#;-7 z?RI$jd6N>47Zr~!zwAg@B73>B5qC3LdvHxxt-k2G8XR@>`pthT7u{G!+7A$})=u%e zfAb!Ze(g_pf1Q9DkQP+@ts=~Tn#XOH*wBNgN+h=f$wNNOjyd=3P%8*9wezOwwPLMy zU?@jc8``|AyWX}X6TCtx7dJTfgTC>D#Will#9xi;WjH&5&FSB2i&oS>p%2IpMx;T}}XaoJSg#=uJUMoQaC3mS7hjNK|52ghF8OvewD zfOtqQd*5dUcJ;IKkKb;CZS5ETB}eojpSwZx-B=pf6|L;I3F*Qeb84g7`?}${R&`7B zCE~fr6#aNbe-IrhzSJxyvL^}gyRpmQ=CgJ7mAf>VI(K_m9oD>sQoK|y^$lI6d2bYYVm@9}QKeo4R3 z5?_+HQ=>Un=Hx@Hx!cp!`e#yl44wn^|-@3~50dKg3 zYq&r&iv9j-@!(-D>hrn}OE}T-;?yyV{e*+adcc+~NTQwO6@|n1(A;pxsABmehgwJ< z6^nYZWf0c?_-zt$rV6dSwVG;267iTw$nW#tD6mWI4x7AWAilJUW)$w~!$j-O*`&R_ z5Y;Oezns_&rCB1Bv6 zs7*C^OQmB^cXS>G`CHoX=`>;P29JM#m|W2#?3?ta)%_^veYK6HnTA%*hg_UYbK&`x zO%|KxyYZQV(_bO}4!obrk%IdO-_7bFU&TTj6noYb3$E(GHT9ka_{e zgX~bHY(2bj3awDT)q*ojZEUR5pHSe7(&xaeE?h4*F>-?5O*|HFPpb~pLDqus+E#7eZ`6FIf+Geb@AoYASnaJ2&aA4$y`N9nlzm4BfrhjmqDYQov63}BeZIkLE4uM?Hm2ua5v**_)5->utrN#J~C%8@utEq+Dl!MI-QC502B;Z$j0Kf7GT#vNziBbHU>> z70=}ir6dWrL-yy|z6tVN{2th(d+0Rj@vidrG}lRnQ(7WdPB``9*8PX~vw3!7EsLb< ztO^xQq(?bd3Y5Ze{#e=FWG=zsy{FIdF9ltVOC)uY>!5Dq&C6RNh?nEn!{j!BRA^@9 zIxkjKi*FUGgBZ-^SZ=h+wlypU#OWvNH`*ic?|g3c_XP1Z9qsdVrj)@ou}}%OXCya0 zwNWsyunJ9+Gn_XSRifHrGV7N-(jVTcWvcWfA4E*6&Yt7yK<5J5w+VqzGGBUI-?E*| zH>(^Xng`;LPk--=o8<5;zi>=EL^1=%?md`e%^<#wg0`un#eJZqJat+_Gz?st_ly`3 zo?`g)`b>t@!q zIxY0$?KfOG`?&hyWWkAN9*1cVtk!k2#C`y!YIX}psO8{S{=L^v6_kPH{*Q|DkrW)= z(Leh3RwuGs1lQ4Dr^4m|fw8^>3WlquUSN9JhCS&gofB^7LD%C)AqA)NAZ+jPKCAvb zP}RQmYdH8La2DB%WO`A!g8R}kez_7Y_e%AIp9 z(!r9=_kf|j8z}v=J4fruK<}7K=X%1ZFdweRUH7>T@B6Ls5T|#8=D#YR0QDm1a}I0U zHyRCe{Z(lkA;im3cTYB)a95(ARd1-j%7A^{V=ZYde#Doi+!3*o3-;?=kN1~!gL!X9 z!1q6~IQwLna$U6p*T~*FtRCQvHoTTEKm8&3tksG!LFQfRrKNW@pZBnZ?xmc4z1mTg^ds>Svf?#MEC_}!HuS+ErdI&14=vl;naKmqg4vo zV2N%tCB27eV%D_A)VKu)HhyqAaftZ(?g*W`z*hx*Qa65C+tt9vkw#V~|0EDNzj<5v zSRE*g4_;(H+zgx_i6Jqp19n>4ZoF90jX6H1ZffNIr8&bH$E%eC&H0W_S7#a_mE*&K zoDsrzQE@a^Qt0g*R9lbdGnkHkPT?1obJ0{Hw`oL$br-!Sj68}fqd52>izWu+n zj3O(FBBLc5gbF7@Lli|42_aNuHOMMysI15)D|_#8+I#Q4XI7z%#P9kZ&-48A{P}zC zf9`|B!R>S3pX<8L^L)Qw@3ogo-l3OMLBr&d&fPPm;2zIpakIDsIJ2t0_g>0EB^#-a z$L_V_#l>i==TBN-dOx+-;nY5K6nq@kIoSm@d^HE6Euyjb%{%?0n(Y|#ytOoVT;jK7$JE62D{w5VEmE%(yi0?(uj@dnn)DQn^Zl63> z7EAUYrlVoP-Qb|~a%cH+9>ydmttM$SlDyer8FuYf;FBub{i3)PO!j&I{YTDOg%v*X zMrowa5o>ivYrF;>mmaCn4cEe~wOqH( zdwxEv4YnMk_+Cls#9o=4Gy%Cz&}Whp`9Meb>e{mVETsC8Z)Pfd_jBSCp%8v|hAk3` z`ue`=a0P>4vGAsW*cLpk;x(VV+6eD@>GsF!CBZw_njTf7LR4lM+n&Lc3@`n98~MmN zteu0~XVcA8Toq4x9p)MgXQM0^e{RKcs*&~k(JF#V5VaGvbq^{;Eu;OE0Z9-kf978|LL^P$g6xaP*gy-n$vArc7?{Dl-RNa;jf4sor z^E)T>Q{>PPuSv&~gO|U*4k-uqDd9_(pOAfyrLyUS7|AvCKJzimg7CE!*xSZG_F$%0 z>4$IU8{p_}x@$j{ldw#R-M51D+hsn`bXnbN2NiVGbRan|1^b+68;PDgz~I)Stv$`K zt7g-=_^}2Y?|7>8GAIbnu-RM;D$l^T(afelS;<^G!>&G(ryEp{7VT7Y_CZIA+#R`f z-e~&uT8|h%Y z4asdNu%7D2Nc`!w1^&YRSJMDyMsHkQB)(!_n~$MRQLyqzl@jVJ@%m;pvzi1i>}20A z78>HVem2QL-C{e&UMzu()zS)DeA!#@Yr&(FThXh_CiTO97ZCVCw~ z`u<7_qQh=+>xkYl)Qs#011wiFnxHC8Y^rBx4^CdT;@{{d`-c1|kBT(umwFxxwREe3 z6-Kc>KI?9f)5%=njq1k3jvu3aLu-I`qPt!-_7i5~u>so)?J$tan0Yvi@M#V{8T9zu zjoabueFoE7$dUBS^(N<|zP`wNKM7ByQq^Mh4!Q5Xciml{Je~wMJ}3W91z)@kw~IqPBUyUgT!pn>yI;9j4049hCN zr#xAMFX*3IlU{c7U#n#&<5g;E1Q(_3k-bE(*sJ_jD2Q+*hKNv;MJ5`L^)Fj%?r(&6C5emoy-4n9 zwq&B(?l#nVd2iWAy%n@lOcaHTx-emGImBjL2G-WEbuM!@;#6>vmf-U`=#MYI8=ckz zVzzrN)olaeXEF21n|DYZIo(vS8btIU6O%SpEtObVtIVZL^p|44h3=>?HewpnN57#b zcGya6G~w2_;q3bz+z%9MfKxh-es!-Rrk4m^4Zj(Q%73rB6y5GbjstF+rHoo}?oCa2 z#pV|HSeUsoJ=B8!NA4?2kergXq~pH#vRm=CTg64wm3GYeQa|P1*a2~Sn<5*XGoe8t zxWmPT?l=i*aJ7$)b=;Pug^`j2WT<|Fy`tW-7V z-ts?jnyb@^DZWDwh{F5uf7wR_CW>VJDROUM3=sk(vw1vaE}ss!nCqU z-}4UljS1^sxTL{soiEo6dJCe02Ukd5MskX(#I6R|KNaC;DcpoSTs@5v>mATJb7FS- zemWTQ=^gnZP6Ds zk2`)xI+1H(iQ$NfVio6vt0F;^mVe)eq;9CX_ja`7ZUaUM?hce7&qK4U^fA;$VBvJ+ ze(>IJz&c>|q+vOY@ZlFr-V?s7p8X#AUFsds7S^3Sme&XWa>Rw6N055umg;3|=QjAp zqeihis}aOPczu3ftAc+^oVhWcU0~ze$*^eYfKOX|Ud(E=K(h5(;_}ua+;Zmr(JkLP zNPaVqi`INQQfAW%vOKIpWA3QNX|;a*8ur_7a*@oDwD(6il_a6McGvk3;`jd?eyYn) zryjZfwS?~!PJ((71LI@MB^Y%=+gGHb3|F;SI>X|lK%*||U}1kMiVv=w{-Mx<&F7|X zMzZx|9;95@qeAve9`^YUL!=Le??+z+wF7<60oGnpclxWJx#P?i1vk|CExe9lx; zzK<;3&>(pDnUiz_wkjET6r_;+wSw|q;lX^Ae6$>E!iGTc@`8Wyzb4R>=9(6PQh3|j zy)7@G5Dhs%l3 zTdtqfXKzL3gN;26?+HIb4GK`RdLsS<{T~4jVsJ zxP^qv&(R;J+XB(IXadW|O~G;K@v$omBo}7sgP%nv`8(YCC#~wcvGQ4*YrcCH9GD(r zGvn#O_aB*tKGpOhlg(#-&a7g%Eum~m^`IYKoy#+!OJF|E5xN>NyC^u1<=+*Z+&Qo1qN&_iBiZSePV5@X)m!dV7w@^GZb3kj*(zVhfFik z6<-J&uZn^L>fmFshupWGSM7Hx5nU~HvdQ+34OsK~gj>^}4tQc}H5t8!E;gz7cA9DG1{5rRC_!dml`gI2`zkL>JkK123dmpdE%P1~bMu2Q!5&eL76MQYdnM8$mI-FL~B_lFj4 zq070Zd4TxBu4!z1qC^OJtUq((t`E3LvUPSTRN?j`jek$_7Q-wbD3$`nfys^u_u z^uUf>#h354cfgzF9~3)|5kHmnb$h|=94tD@>66^k1I3DubpKxOgq?}OgEZuvKoRdG zX-M)?PK@4q!Ja`lv$=m9es#aW{B;gSS;J=7d6Hh(%(NBk%v-B2A<3zs?7v{QP>c5; zxoTW_RE~WUJ9T;Dh=1m#UQ8&Sk=iJlEqfVf3PMG9l zYX+}^iIESYEl}I;(D>Rp4MVz~)Y4{^L6qP-hrMG>z^EAf$(Nkl1%soHOde@Qm+6g^ zPb<~HSgHGQsi7GjEOo~Ss1qKJ{M|2Xk}XKRP5r04Wf^kEjy*LXdgF|^`ZceNWb6-0 ze?L(jihGl#_Mh13MQ;Ad%j)xq0BIXMm7RIWDS&eK4>f?zyD~mz!e{z?YG$JDa6b+l ze8{yt-;X<*IVFfy51k*LROaMphEr6-!c$gBc*d6D^&7$+$Q@@b*+TkBMQyHc;e0G-kc8D%|3U9hdPf+N zgaaXZOf)094f5E8G{Un7+E?Gx(VA7osJ`& z&YV|0F1-_GVvY(z)0XpIiTCQ@7!2O_B>m2=&WjHEti<67Y&_QXt1c;q1c8Un}yLRGK-u84j=>Z?ky3GXE=ef#J3 z7C-!1J<2m=hNZjri=X{jii_8>d2W&Ojb_)z!pp=mTvv&y(oXjPCpsH=7 zOwo<^@+wbRJJ;ZtnntNSWdR5#xat+AS7V(8jZMpN9~!8-q3u)c6gp(hk zl9T7%1qZZNeYV?|L0SC9zx01ZXD{-CZn&@yuN@G}VNL5pg;P_ky5yWHyyuDgicgK1NVw;u%Ui1XBG`XoIz>t$$sf@$y-qSc`tZ~=ZK2>G=W%`%hnd6 zBlg)8$P`NQDvD#P8CCdA+=SOBMK)SDY$x8v_8J@d8~o4~!*kfPyJ4?ccTv!p@hJDppq z>8Oc5*PQQDM!}W{2>cf;F)-qdB9yys^b^0w&wyC*H2G4@$k&(WkFUiT$<(aZq;9^l zz|J@?K<2m&+s_{QUVxirEWDBUNCc8^ghkcVqQ0b}cOpd(lu0e_ir7*KEw&$QgRc#s zkX>izJJ$j--!Y9|UJC&AO_pMEE`@Nl%YBnjbu#Y0A*^+ZuN&oVLG0sG#P^VA5|B@P zcJXcnmh^=08+7>+)rwjZ>RfB-*-bbzW$lkR(dq&v!#(Me z3H9JrxE_ixAv_ulS11?0&9mD;$aQ zIi(wuk58&+FZO-Of=o^cVd{WxpcIXnT5?Z>X92d)#*>MT&o=PJCjBnhQLUT5-;(7s`Im@Ga zBZTDBR|vgy7U;##Wp}S!Q6ao*aUTVa8@*_@k*i20+lbd_{U|Pxd40`$eFN?ATIl(} zaQ2j1Ilk9CmT=*C3K%?D+_iY25pJK_9`ZFI0_=|so1bIN0@b{yGzrHVVfm34O;Zl( zuWzh+3kEiUuOH_F>7Guwm9_kAP_7D^-!5Ea5Xi*(M_U@Wlnsm6PT=!=A zUp;Kmd7+|1cqxK|dk)BE_CUzkY&nW`qTAS=l|#o$@PgE}1R7dWC%!*&>ww$Zg6l`*dvEYSVlvzB#mKUuak*l+WzGsiQ!0=FD%2`R%HL z+GduiQ!G80le9a6-iqS9kM|E!w~8Albxyv;!%r9K zkG<}K%--zdcT0MKjuRIS{cMM}#_EZ8<-{kwv_ZAyUOfm;jE>wr+)Hvk`P{z$?E>9% z_RFfzI>A{kaYv^`8a`pw&e-Nzj{HxrIO`IfGP~fn=WiK0A^+!Enw^5aE-0C95S0E!x9@p;PFeN-b0bKuzNdArk!sbY9-sO z`w>0F9$E#jFD^~+@vh0phJ7qF@8EypA>RhM0$PbXFIB?Hg`&k>;#FX zPkY4tPC-GXXH`!P+aOfTh}u1^44zeLTs!@{2L_5R7%;u)#Dbx=k&x6Dh~wcr+E|f> zrBu>>78)e?Rf-bUBt zX82U+#W9A}n7;BiJ+3bXzMlHQ|3%{~^#71oXucJS)UrZ;kIDYRBh-4SU!w!ws=7Kv zsHDQ?OXqGV?5KlKo~4y#ZI*3er!7$ z$Gg?&c@Z7a_&w3cGsR#T8_wm)?~HQq63-YM%Ew9HKyB++T|l$iU`d-&07nv(*gx7- z8AedjO7Tw@~s%P^keJ=P9P$>la8%?+R@IpEs# zDh<~>_x|E0zSS$f44S|6no-!dcVoD<2y}NkD}7@C>=A7A*U8^j_lK)FudY zSuup)LAZQ;dcyq5AaEYB{Q9}J8t>|E_E(mwz{PFPT;;{fV263Za$QXhOhwMHd?C66 z%d4Lr&S5Fi&r5LFO?JYA9UEfT$T}#!RHM9Qvt@SR->XS9oo3|2tS8%QB{H z?Eqed#SKH^U!e?medJ)Dut_taVDa2IWP=+fkeaITp#eQ6<3!e&Z6j+Icqd{%N^r(0<)JV|WE?lj^ zDfvL!#aD?aM@b!Pa3>qDnXfkR=BI)6whXg4w-${5n55IGRtz_))nm8ZC%%|jp7_lx zy^ve`vZ2Q>1!ox^2IQWJ#qguYKfkvv0)LJTi!q|NS(G>??>;Dw_*U^UK8c~$J7H+<-bK}-CFVB z)n>tsv3mTR;Lz~vMLvvEO#DdDZ-KqDWh-V}y)gMk`@@1%E*y8d9+S*hj;ygIcI~9^ za`MiZt;;oGpk2ZdPfgCJ^--!qd!9t%+sS-p*^MgH8slcFRYW*O-Nj)}rw&i*T0EbQ z6CbIn`YheAX5juQp148up$%h_7P(HfcyzjAW=Yo*yvKOC4@#BdOyIe4Me253vg#_3 zCUar-U?Z1=l|EQ}6&VyF(E`eKJKUD7YM}1NjP`rCVsup0P?u6^AoaqLJ4Z=9mG*~e z-y{v;>nf=WSpw0&WQ8hStsjP00ro5o4B5!oP@#@@`YsyKQ}8WL)#l@OG?gH ze5yckI^=jVU8AhTgf z{8q1gfN`8XI)L!PqsoU4d=G4d`%0akGOF8PzxytgUZMwarq$&Zcwn;8Hz8wJ~?R9IUsZLyRRQY$miex`Hy(AzsH_hd2`}& zD|$b8T>Rl)74&;&_Uvj(#JG(d1$pAv*shutdgOaK1`5O< z?jg}BI=ovrxycKTj=6_9ixI96Qv~vwkvaTsiry0cWTbmz^w{5poK&HHZfv|I(rH{~{WC457584nqS#jo%zwSAAx<6a00$<{uaR*ei+ zU#*1nV<7s)PL|pG8>l!{5@cFWzwFB>aFOH;q7y!n7G7QK18_}1!B1e139V;aTX>E?j zKx#y$^^+Sp*duUL@Y>5(@Xobgdqj9(ou^!nK72v^CUQLUl1KdU%xBiOABS6E&Xh)1 zOl1JZWDQ%Htm09xxJxe`MD+}!baM+Q=i{5o*?Mh!%)e7q}qwjRy|IRBX>{!gm;b7d=0 zz36C76Q|lh=G`qHcdS3?Ae`q#50>abbjw~a(=KesYX-Z=z8@*W?MGvN8YiUT(Vs7G zhU&J0HGkDlU3J2Nmj$e2LJBS<5D?M9{D}Y!@9X>5liY05Ib&r+=}o=C)jSBo@yfdnp|=4fAVgPO8+Jm9jrmwOOD0c zN&nmOpkktYdn(Qx9d2l>ONC~oyGHFqfBR?Z(` zzY}kSSB$(mFQ=rU%YN6M^e5Gj7A}@x{xp_!i%TMm=H)TPlQa? zRxwA(A#DERf4%IS3TCrh@%mBPgNNS8Y+R=y+^BOdTbc~oVXx2y`xoz8p{Y+S?(VB# zY@sXCF$M^Y`HvVK89Gq%BFhX5(IH&z8jT1M96-&Dq=Me|Zfx>s{3}5E zmS_GQd7LZOfLfQkn}>;>>H$qC3q!jYJXF_6b|E|wwc3sS@05GN*e2rMtr^1kHDY~5 z+8d}6(&PV-CKLy)mem*v2@mh4o37w&6)t=;lAG0Q14f-Ur!};5K(qbqb}7PPp=wuf z-xuWw&59dZr_~csq1CM2D0>2aUWn-OCO+~bCx=a1<9lJzL;vy&u`Mrr`WnG>*QY5-t7SrcdxU zJ*^N>xrVe8eCiR-7?t#nyP7K0bt-u2&ek2z~h3h7LLmfOAVb&`D(1WV1e;2#B zV_^2tM(O>1Z7_cE%l+sxiBKNLdxIvw6C_zBI_qQG;RXf&t<@cIWc_$3*yE9o+DRTu z#rkzPAW}BO`lB5#a8nCT^R|EpP1m=Am42vhn$qtt8-ZaiFY}1I9U%KFF2a(o7*b!f zZr5>)fGmkJ!E*zn#OF+3tErlVYx`{&b~~p*a#Eo3z*q}B@f#|ALVUk$1`XFZEwUlf zLz8Y*I0Fwlr_J+Ee1{Uszt1laJz#Oohgj2Z&G4j*Kkm}kKG0GdXMS_91A3XW7%gj? zAx2MM+WTo7ru4=R2-BCtA@Lo*i%OeOpqA0`s7M!Hl+pLxMs(9-z5_k4oQRK3p)Jqi zdNsz^J*jKxE+PFBm&-dIhQpf1As2e08#}Xngs+z(C(kg-?p;9jzJidx&1O zy58*A?6Eey6k*`~(J~*qy-WPI93VWKx>%tLQ=yO&C*3d8oQCw(6a5;Dxe0S^FyiXUTzkO!^ZeJF>aG`$I zL3EOp>+(bPM5k>+@4K0*q6Mf|lCR0gWkbW(`J|`HA$a|Z>k}#B^QFv@P1r{KAa}z| z9pyWTzHQZ5I_gywq#ntLHf{Fq{iu&c9vf*P8L~ z89!Ug><&mcEmxGcHUz#G*fWC;76HfYK6gFB-JOW%NY|DcM8;Fk&&&5l;ERlFf2`w( zKK*yxN~;LTr<_(w+j{*gvi-@f-K^LSAt!Q8MgBH|;CT~$Bk@MGOS+ixx!4yeC_Cn= z-gd$4eZ3z>b9HE{xiYWgfOzEUColi78hp$enl@o*in(o@g`!UG*+LW2QH@5ZNE;?*l1>yhsb=e6aR8JXD2E2DNd)W;GBaJ8Ck* zT@1Gv-S{0zJyq2C>>Z0nA#PFi8of+>dzZjd`xsL-81!4%B%jU)wnPG3xH1f`VXF;v zBjxCS*E}sJumiRf7bbnCCHXtgbZ@&Tj=`;}lo3%<*Io6d5;*1FfDLQslLR!wP&bt; zygjN3_ixcF*SbyiNfywew{L{jk$xvHs$3Xf7(2OjHVSoDx2BfsPD4TPgVm3Z>p(8? zrG@glUbs@Dqd)K;9h;xxnWyi`|HC|$e17&D@Ry5Z{9+tH>y671ItTsn@sO;!Nj=G< zsSTw1r&$A6!sq+0c6Y&GCESh^@58GFVNFz#N|-IZpLV}R2im;OT1xGV!mJ0Iwpi)* zqWR!*?AY=M#){JGKFDuIp|fgvxA})KJj15G>fs>ljIWmYT-5->0^yS$r>5bjQ-`Z&vOrA!I?){ zR^0ty75-hCPM{fR>eXhyJRm$-*&j1qq+a$LIQ9HqQ3ZTl=(|qe?F%&XcmFt35v~N2 zm~6al8`8Rpxyu@Oz^1IM;|iM{;6>ccu|pplL1#(CPTzJ26!vXtdqH$cCE}7Phxj_+ z=j$Y+)T7DZoY^*6aX%8^AbKMB7vz;yz;{RQP8|O%=eMI8-6EjQjy5$ht}fdKM}1xP(H{i6GYB^49OR% z%^CZ_{R#sct8NLZaYygb+h+;q+awmXZ!|+?;fHsFo15{~S)F37Esa38P2KaLa4Y<3 z{mWYJQ4gN|b?XQChGDH{?q7~rD=^Fn4DzfrfRcaZj=Q2AAbN$umX>-1H_9ayUytX4 zS_o&?hW8*QY}a$;Cw)$yyY!nc^)=(R?g9T8+e&O@pIP0>+yI4N*j-q{Iw5(x+#4F= zPih*I6t}oRaugUkKYz7$!g;?j8b-Bl$msXiF1Bh1=}qi5d&PV36mR(~hxPy}>&eXi zj3m6enN}Ird*AVro?7HFQIa<$y_hOVe7TB$UMOtUMEE6sOV!Vz1w_*{qPoY4KA1B! zGJ^P)lIU%>F4uO!?_(bap9|HH`!k5{Pi!~ruU~&pPtgZdZu7jX`}`2i4>25>?Eu>< z?;@G(7}%^-TR7>Oi$%7BUK&}U@Tcr_fB>np63T=)qde2mLb#XvYC$PZmnH@0{v>_5 zZHF!RiU**T|DhVkzH+jjeh9rweE-{0rEkA^N!EQAaa9SDlUR~Hq|(UQhPfYX<;Lcc zaK9ba%|9syE-T8!g}G)>6|iSBi!OsEo2J^xi5d`M4-J`6C3%B(5fKlyTe0PUt6W;e zAe3|3dlX-31V*N3SEj5@@weUS%`?Vi&hnZevcj_y3S|fF&$0Gl{4GPq z{==PcT#>_mv85Iriyh?JI?I65FXBqFdjnL}nh%KEj*$7Eo7xkOZ}84O<3l#-x8L}c zSa7_&20f&dnD9B7Z|xkCB~Dd57`wzutLg!1MikS|wC64A9Eq*Hv)#I`aL?DTZrp8L-ClxKHeQ z9O#^-h!^`>gE#HmDz`=u5@C*O|d?(8%Ob}`(Q zc|QqnE)TipiF8127k%6v$x1LapJBXcP3o8X-TNen@9U53Ro0&UqcDNFv=b!%?-lLm z`L5H1^CXb-t=pv#wd<0&dMHxBU%rn*nYRHITh|R<3l{*FZ}j5f{Ae()QvYrAt_djT zTRblifA8*x0cU;d-9cPCKm52*5sWdnFMuMM%kkYoA4(5gIC%G-z?Md|-S6AYnX$x9 zT&sTlNXNYyOWHIJO>P=O;q&~uyEiw$Mf#Sr$N%KQo4W@V|Bj?V{J-WVy@VFjdE3Qy zhj2}P$~rZ(Zc0XhzQweD(H^ABZ_j)y*#u8L@p#~$epo3<$($oT$h6%#)YMW5xGMJ4 z>w|0>WNR4Ko1R1Xv1(;?%`pW_ZR0wc9`|67<7e@V&jk=nmtYb@)eJU|T0eGQYr<`t zXBBP+5256CL-P-Xr66HjUcvF!8dWydlQvogU~|k2S&zv2{p&8(=GYF5Tn#&JX;=eF z!BvWpg2T8^^UtocUqUf6VRBf>dlcu4xHHXd$I!OuPMgt6IR<4dirP4&z|{6jXUB`j z@t%g*O4h|8{Fmc4^M^kPr6(=fW`CAL;#a#DJ@w@{D!(YoEfxXC?}WMRll+FBRmz7g zWn1C;eEf~zq&A#fz7o=})DH3@?=^+}yU@|W+UstA%+l$>q7vcbJiu%v6ku&c?R3 zp!?O5m!rp0AxTN0^(XHDO6=9iJ}aLH64L_oy6AzQUUlaBvG(FYlc~JhxtuTu*>HeVrCD5>xO@nd0a!%A6x2c*6+O-v-~ zqvUN(ahY(EcciYw@u4jY{=s-Qt#t5*092p7zH* zwi@tY0GFIvCC;RNKIpSnhKWp$iY&t=P*%P8%Uq@u4{06oe!iNCbD(D+vVd~-nr&TYUENX0I!n3I1Ckph$4W`=#Tj+%<3j`RS?heby}u>K$(Ks7C47ghG4XM=hO)4%^o z1BAC+aORIr1o5o1EDYtD@Vk66>lB#_@$BDsSnp6D1WK6fI=<0@ZfwzdFoa_U^A357GaOBE+uTN?CZ*#KGcaoL%-n4sD!+-zS|2%sr zswiB)y?K+>ChNoZ^~`n64xi&ZET%7d_&DcbeG@YaGwsJ(CT92b{_}k~?T6-iLa;NgEzGdLY8yFs+aUMw3Rl}80;H^^0}yG-UIoN zZT9Gbu4Exhh#g8`5*ULQvNiQdGX0SFjE3tEj)K}X8Kr5pk8>+%d9u2dX-8 zgz^io{H_8VUl$d6M^p$7TAL}Od0X(*_h47f55xtY9_N0%svVl2aIKD9u7Xn_lrl}a z!B0-4Neg(6!L|VwkopmJQ)oYgn#ymSWq*1I?`gX>dPotz&v24|M*B z8G1Ti!|;37>dsH=@dYh+IPcFccmt>FgbU)aF;R7xqM{Dv<1W2_URDAj4NZM_%NkJ1 z{oAsA-T)2`i5Wkq^G3St>p8V*Lnx+g?WkDa55_gGY19SWVT*hZ|1s5Z*tfxP?(RK% z{K)a($@|eUtXS+3s9z@T?^txr6CQ>+5gBpq>KXk0LiOzA2ePcC@sDr*4D7V6gozhnbf>Vf&0Xp#=P z+lOcU+%RgtQXKG5F2%d%I$E^kqpMrOyJna-8s zs|&jI@3aP?`ZkNu72aV~;%OWFdyS+fu7!%xkX`q~hkSNB!OnT1Gqy8QxyRf_klzS|) zry-uCq|kVTi0zYXDPoLHq{eIFis z@}M)H2Z27Y!(K6S5+)qWmGgzhP$gDzSd4lcJp~iFXb-oe7dr>81`k2Mjl?#lSa0BX za%ErR04A%N0m!9*I^e7{zt;I zyrHSOPSUi5rwa%lSrRzYUJ3g@d>d6JY5*TO)&Pi4 z#gKA~y}o&I_~iEOx-Z3EP|e?(Lz8v+`Hg8X{j)Yin==cKSF`mO)Q^C-dez3o zIxn#7ixHtG>cvKd$@rH)YmoNDqno~?)xb@k@--F^#KpT4W<0*RFmdd{cM-8Va7{Ytck*~K zCf}YAH2aZ{bf*|Bwz0Rsjj3EaQ*lD$q#LvDyRiz9;}&lVs)n#rFmZ=~!7xhwJIM8# zq+@mn^3<2Q^+CC$eA6Dr6;#}kc)I#<2WYaRs{i{s%#J(smVv0*O|OKxIICCV%pSX` zTdQp(9opk-W_~W--@M|m{c0kPt&Zjx^0vcQy}$t8UUJ=9J(hk8ccW$q+v%DcRd^_S zXxKxp66rHu>`K)t$9J_+p1Z#^K|Vo4&;4yf%gmb-Q6*JqA;ccuSLhDj*VW$cctBJd zqOSLOS9>sDC6DSBWd`P^2AIVz4&nGynl<|)ZBQz8{(O-{4`e*5Z0cxg$Fp6=H}wb& z=)!r{t2OGCpzws}gfvGpJ~fHHH$2#i90tmJT#LP7v+W&CTVEBp^Q|G-*1s1H{Z9Xu z_O=JK#eyg`I>~hNAG6QCn^UNkxAq_)BLSMrbt!u||KiiWPQ3!JN{m`F(3|_x0Q?_Y zC0E|g!Q$!fiuF9iJ-1b4Jf*xBl7#B3MD$b8_79WtckUtBw^|aiV>Au}88W8Fh>^( zof^f@`TI4>jWdYLG5rWz+Yc<04tQIaN8BkdY_b?^h$`@dhp%nc5RNk5db?{Mp(B`o zw)s1_1PsD~Gm`1UFy!pIuc)pAIBq>~?JMrWL{_fCQ|$xbvAuwjGv+t!G#ot2vC)YR z4}9hl>tj)}=-b2n>XX>{j_(`yiy~}!TM=e6LZ%}fty+Dfv$*_L%x?IEH|`fJKfdMm zD2AJ_jcpJb-HOp)p9RhVaCK7oD$_Iyw!YlunKr3dP#ZZAf=YD(ClYPXk$2DVV-Fhxsg;a(kURaMDk- zPV;3S(q?>__WRzCYlqzE^1cxD+4(Tr(s`14p6%Xqg{YGpFLT*iv(>>i+1}wqZjwf_ z)p+vt=nT%whWYH5bc8ImVrH3bBe1)anIo^X8@K6GtNVmiAO~edqZW5B@-JUz`}1G{ zZay8o^C#*D8r5hA2~ah{+dbT0UST0gx$4qQw<|Lw+qx&@H68k$)z3v0Z+}3 z)ET8P=z5C5#U~Sm^z?7&-So#FTcr#q-?U@l(RSOjp=1ib?!k9HiBJGWM@Q9fg`>q- z&NK1IB3O6y6>=rCjOGvKc|USnar~|F9{Cqd5Mq!W6?SV3?`0LVp7@f3vqx{q<&$n4 zn_=A7Lp;-{J`p&=H#3N@A~-isr?-QIOxLsBCIhG*Oyi_j5{FTY{voA&B;|KfPH2iy zvJ?o4EWx24uSc8LX-0hmzrEV2UFGpGB){#~`J)9W6-ZJ3g{;@6#xDh(h|2HGoo^Zf4!uNWRTDzNv^aOdU#bp9G=p3|o+MK<#%C0=qIL{@7^yr%rbD!|F@pBKL_JdZN2o&XJv@dY`uH;w4FEkd>@CIw zH(Smj2VKM_OQJq9y6103<3QZ@DwOM{Ed5Xytt+$dk2KK@-OB!hHUH%6G_=VBW0u;=vf z-az7JoSVLUVZ9rfy$^A4OE%%`Eo7dMt%j{C!v7Xo%E0VF$)x(VcjN@epjBIZOni`?QWOc!pr3Myi zwZ=lZhVk@_66>I48=5ZaJssIsfN#394!KM>pw<3gk$UmHD5jWdq&G*Ve}y(-EQUXU zP3xo5-mP7@b6cSOp6{C_WgmB*s-J7aoyh^#-^}aL_H%9hlwd2+DEjJXkFUT(Q)}b( znGQJeminw)Pz_|6Ki+OU5ywxQ2{rOoV|Xd-jwl+f5hpM}=*zqRcCfQ!p9c-Vt zW}J?}G9u*%Uwh&352I>&-vu~szi1$Oq5+q*#$xJ|D)CFacj$`v2wH9tUEv~A15aI= z#VDtCe6${vdmw5N2IDS2bJ|MMCK#;D9;tQWv}iPU+m3cfJZ9rPG)=n7l6$6%_68%J z%A8_xZV@^&=H+U4mx18Qv&>J^k+}7qR3ukNKXw+5dQhC~MPDZVrC{z}@ZmGD3wLbA z(=lw9M4EcgRaneoVWR^Vhnt@)%++G%kFu1^ssI>VZIypXT<+06R~9I|lhB1-Q*cJV z4Pr0Sxt$R#Lp!HGzh8=ffvu-MN3&T!#hi)ncA?F_5b{L2=^1fdCCx9`zR|A&sg8=u z%!N{TpzbEGkx~d;hD(1~L?hs#!u;PNI)4-zFm>l(^M$gb`vanUOAwp{Ke;CLVAbnQ zYHy`~Li^oeM%#ZQSkKxznQhh%j+2E|3Pb()ZlH2oTi!g--aD;5)mMmr`4vZ)hhp)% zG)GRuIpXTeyu~S=)q)Fo@{`dkWGc9C_YpVopRha4nDtP?0``77>BcIX0FgIu+iOtN z1HV_&RLER8+@Y>b0J?4z5c21#OejWGcKakpLR*ot$)LPG8ii836#|q)2VmFeiA`DK z9VqPnmgO`xQAZCa+iQ!)!O0!@Ek@k&*dM84+EpYmQBQL}hfws)E;+aS)S2t{<7A$^ysGR~(`wm3w|;v(}&0RNxAs zOL=sbOwR@0hUXJ?vY*w^aq*=-Y#Mnj*|Dntjy)C`mnKQrNdEaxM_w#= zSq4okaIGueap*!9N^_9eSS(co)Cpd8xKJ~29?$5TCQZWF(DBBppmF4@8@{Dom5NU9 zdsw5JJd6}eGXEy*VZ%$gM3SW?3$7UH89GS3g1khr1y?p>)wc1BS?%;S@Eqhhtc|V) z7s`5rzrxZWg`RDhAxTFrLX^2}D8d`L7N5m~AGEL*z2jT8%ml#SJk>y>G&51~p zU&2H~%_i9*npAXMdUW>Ddm56vUuWZw-$z%Azif#J9U5ZNw4?BP_t#;sPQka3rQ*JA zpmV|HcxO&x#S&EqE<)sJJ4M_S~%@9qGyO-yZgEJiTeVBX|0_aO(ij$V4x=<^z8 zye+ytHs*cOMb)yD#nje~4 zbdL@L6Kh4=up86L&Ya?uc?YSy7u2=Su7~t9T(fhdb&#LCYdrjNIdJ_W*{OY4HKi6; z;F3Uvh2vf?kAAZp zCua__}`Cjls2rn=A=YOjr3&y{OKrsmgKxR56*nJDgg`%62z zuxSg?zLX7yJ};$NbB&3T{ox%Pydz z{#xy4sZ%V_pQ>1Y&7}o0V>VD)Xjo;zvCd$$VfO>6xiY$|5>zGj2is(|!gKd`YJJI{ z5!O>NTyVbH8M-}LOSB!R3xkxe2ecxEl^0s+&Ych&aMv4e6$v zKC2r}N}eFgr<8*_#e#FnyB+l0%GCVM(m|Qk%1~#&f=|?E-Wu4Td|$tr;%Lmo1(K`- zW3Z8>I%Fz3(E=BISyY&671D|hoB9ov-mXEzDh6lOgd3oDn|Y=C7Mucxo?E^K8?`i9 zq90N;%8_Mk$gc+OEEMVSh?Hzri?WUVN~MQ7;beCBi@=0NR5t7yTz#ht^={B~m0UtY z3#_J7w8^*u-!iX+aa@Rk_EwvCz=nx@9V>J$)pnuNLMsmR1Y-l{Y@DHAgNis2q^3FKR#9L#<++{YD~?6?9$9>n-MRAeGgV?IfT;!iSpVHiQsR!{mzG&X{sf}P1uEQB9*Ph#xFsbztr zVJdsP0@<9I_P#&Ufy4^7Yz&XYK>mCLn-ot62J6gtpal~zQG(zmq5si)lBCeKP$Pl> ze~AA}+WAu`f&a}1@kIWTogc<0_Ix1EAK!-+;~)Bu-_H-@(``Py=8x~gs&{=2`@*{C mhw*n3f1~in_hAXvU&FratAqPQ7V!VIF#fRctapU}5dQ%D?Tvr{ literal 0 HcmV?d00001