Skip to content

Instantly share code, notes, and snippets.

@brusangues
Last active May 14, 2026 12:17
Show Gist options
  • Select an option

  • Save brusangues/fb7425c3ed3c388643dde470d81e8da9 to your computer and use it in GitHub Desktop.

Select an option

Save brusangues/fb7425c3ed3c388643dde470d81e8da9 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "42a04b14",
"metadata": {},
"source": [
"# 1. Dataset MNIST Dígitos"
]
},
{
"cell_type": "markdown",
"id": "c304ddec",
"metadata": {},
"source": [
"## 1.1. Leitura dos dados"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "25e3e55e",
"metadata": {},
"outputs": [],
"source": [
"# import pandas as pd\n",
"# from sklearn.datasets import fetch_openml\n",
"\n",
"# mnist = fetch_openml('mnist_784', version=1)\n",
"# X, y = mnist['data'], mnist['target']\n",
"# X[\"target\"] = y\n",
"# df = pd.DataFrame(X)\n",
"# print(X.shape, df.shape)\n",
"# df"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "d98f0cae",
"metadata": {},
"outputs": [],
"source": [
"# len(df)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "85dd10a2",
"metadata": {},
"outputs": [],
"source": [
"# # Salvando dados\n",
"# step = 5_000\n",
"# len_df = len(df)\n",
"# for i in range(0, len_df, step):\n",
"# print(i, i+step)\n",
"# dfi = df.iloc[i:i+step]\n",
"# dfi.to_csv(f\"mnist/{i}.csv\", index=False)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "65f3601e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 5000\n",
"5000 10000\n",
"10000 15000\n",
"15000 20000\n",
"20000 25000\n",
"25000 30000\n",
"30000 35000\n",
"35000 40000\n",
"40000 45000\n",
"45000 50000\n",
"50000 55000\n",
"55000 60000\n",
"60000 65000\n",
"65000 70000\n"
]
}
],
"source": [
"# Lendo dados\n",
"import pandas as pd\n",
"\n",
"dfs = []\n",
"step = 5_000\n",
"len_df = 70000\n",
"for i in range(0, len_df, step):\n",
" print(i, i+step)\n",
" dfi = pd.read_csv(f\"mnist/{i}.csv\")\n",
" dfs.append(dfi)\n",
"df_ = pd.concat(dfs, ignore_index=True)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "7ac4423a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 70000 entries, 0 to 69999\n",
"Columns: 785 entries, pixel1 to target\n",
"dtypes: int64(785)\n",
"memory usage: 419.2 MB\n"
]
}
],
"source": [
"df_.info()"
]
},
{
"cell_type": "markdown",
"id": "c47cd01c",
"metadata": {},
"source": [
"## 1.2. Visualização"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "c7456014",
"metadata": {},
"outputs": [],
"source": [
"X = df_.filter(regex=\"pixel\")\n",
"y = df_[\"target\"]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "8c8b02ce",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 70000 entries, 0 to 69999\n",
"Columns: 784 entries, pixel1 to pixel784\n",
"dtypes: int16(784)\n",
"memory usage: 104.7 MB\n"
]
}
],
"source": [
"X = X.astype(\"int16\")\n",
"X.info()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "ad1e952b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 70000.000000\n",
"mean 13.230286\n",
"std 50.548067\n",
"min 0.000000\n",
"25% 0.000000\n",
"50% 0.000000\n",
"75% 0.000000\n",
"max 255.000000\n",
"Name: pixel100, dtype: float64"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.pixel100.describe()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "a0016645",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"count 70000.000000\n",
"mean 13.230286\n",
"std 50.548067\n",
"min 0.000000\n",
"25% 0.000000\n",
"50% 0.000000\n",
"75% 0.000000\n",
"max 255.000000\n",
"Name: pixel100, dtype: float64"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X.pixel100.describe()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "5ea126bc",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Id: 59094, Label: 2')"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAGzCAYAAABpdMNsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIzdJREFUeJzt3Qt4FNX9//FvEBLCJcFwS4CAXFRUJFRuUi6C0ARUKkitqNVgKQgCVRCwUQRvNQpWrYqorRKtCEI1ULFNwQBBW8ACIlIVCUUSyk3RJBBMoDD/53ue/+4vCwlhlk3OZvf9ep5h2d05M5PJZD57zpw9E+E4jiMAAFSzWtW9QgAACCAAgDXUgAAAVhBAAAArCCAAgBUEEADACgIIAGAFAQQAsIIAAgBYQQChWo0aNUouuOAC9noQ/B4aNGgQ0GX279/fTMDZIoBwzjIyMiQiIkI2btxY5XtTw0vXdeo0bty40+ZduXKl9OnTR+rVqyfnn3++/OxnP5Ovv/663OX+5S9/kSuuuELq1q0rrVu3llmzZsn//ve/c1qmx86dO81yz3Uf6c9+3XXXSSjKz8+Xhx9+WHr06GH2a5MmTUyYffDBB7Y3DVWodlUuHKgKXbp0kXvvvdfntYsuusjn+fLly+X66683ofLEE09IUVGR/P73vzfh8cknn0jTpk298/7tb3+TYcOGmRPe888/L5999pk89thjcvDgQZk3b55fyyxr8uTJUrt2bSktLQ34vggVy5YtkyeffNL8HlJTU034v/HGG/KTn/xEXnvtNbnjjjtsbyKqgg5GCpyL+fPn64C2zr/+9a9K501NTXXatGnj97q07LXXXlvpfJdeeqnToUMHp7S01Pvali1bnFq1ajlTpkw5bd6kpCTn+PHj3tceeOABJyIiwvniiy/8WqZHVlaWExkZ6cyYMeOs99G5/uxnQ38P9evXdwLpqquuMpM/tm3b5nzzzTc+r5WUlDgdO3Z0WrVqFaAtRLChCQ5VZunSpdKpUyfT/KSPmZmZ5c63b98++fLLL+X48eNnvexjx45JcXFxue9999138vnnn8vw4cMlMjLS+3pSUpJccsklsmjRIu9rOp9OY8eONbUUj7vuuks/nMmf//xn18v00J/n7rvvNlP79u2lOnz44Ydy4403mmbEqKgoSUxMNDWwH374odz5//Of/0hKSorUr19fWrRoIY888oj5ucs6efKkPPvss3LZZZeZ32Xz5s3lzjvvlO+//77S7cnLyzO/28rosrXZrSzd/muuuUb27Nkjhw8frnQZqHkIIFSJFStWyIgRI8x1j/T0dNO0os0o5V0DSUtLMyfx//73v2e17FWrVplrMHoRXa+LaDNYWZ6mrujo6NPKarm9e/fK/v37zXNtOlPdunXzmU9Pxq1atfK+72aZHnrS1pP0jBkzpLosWbJEjh49KuPHjzfNiRou+nj77befNu+JEydk8ODBJlBmz54tXbt2Nde+dCpLw2batGnSu3dvs6/197hgwQKz7Mo+NOh69XfrL92nun91QgiyXQVDaDbBdenSxUlISHAKCgq8r61YscLMd2oTnDYH6eu7du2qdF1Dhw51nnzySWfp0qXOq6++6vTt29eUnT59uneeEydOOI0aNXIGDhzoU/bbb781zU46/8aNG81rc+bMMc/z8vJOW1f37t2dK6+80vUy1b59+5yGDRs6L7/8coX7qCqa4I4ePXraa+np6aY5cffu3aft80mTJnlfO3nypFm+Nhl6msM+/PBDM9+CBQtOa1o89fXymuD0ub+nmR07djh169Z1brvtNr/KI/hRA0LAaZPali1bzMXk2NhY7+t6QfnSSy8ttxedNvucTfds7a02ffp00xngl7/8peTk5JhP4k8//bRpqlG1atUyn9qzs7NN7WrHjh2yadMm+fnPf26a7pSnScrzqM09p9LmJs/7bpap7rvvPmnXrp386le/kupUtoamTZTffvut/PjHPzb711ObK2vixIne/2ttVZ/rz+PpfaY1Kv0d6u9Ol+WZtLakNdDVq1efcXvWrFlzWpPe2dBanDYl6s+jHT4QmgggBNzu3bvN44UXXnjaexdffHFA16UnTb3Gob2m9GTnodcyRo8ebZqWtIecNrHpNR59TXm+A+M5YZfXQ62kpMTnhH62y1y/fr386U9/kmeeecYEV3XSay76HZ+4uDizPdoz76qrrjLvFRYW+syr26YhWV5vQk/Xcg1aLdesWTOzrLLTkSNHTE/BQNOmwZEjR5prbnoNTptDEZroho0aTy+0ezoKeGhHgT/+8Y/y29/+Vr766itznUNPrrfccos58Xbo0MHMl5CQ4K21eZbjoa/p91LcLlNraH379pW2bdt6T+Raa/AsU0NCOwlUxYlbayq6H7QG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opyFCxc64bIfVGpqqnP99dc74eTgwYNmX+Tk5Hh/93Xq1HGWLFnineeLL74w86xbt84Jl/2grrrqKufuu+92glnQ14COHTsmmzZtMs0qZQcs1efr1q2TcKNNS9oE065dO7n11lslLy9PwtmuXbtk//79PseHDoKozbTheHysWbPGNMlcfPHFMn78eDl06JCEssLCQvMYFxdnHvVcobWBsseDNlO3bt06pI+HwlP2g8eCBQukSZMm0qlTJ0lLS5OjR49KMAm60bBP9e2338qJEyekefPmPq/r8y+//FLCiZ5UMzIyzMlFq9MPP/yw9O3bV7Zt22bagsORho8q7/jwvBcutPlNm5ratm0rO3fulPvvv1+GDBliTrznnXeehBq9dcs999wjvXv3NidYpb/zyMhIadSoUdgcDyfL2Q/qlltukTZt2pgPrFu3bpX77rvPXCd69913JVgEfQDh/+jJxKNz584mkPQAW7x4sYwePZpdFeZGjhzp/f/ll19ujpH27dubWtHAgQMl1Og1EP3wFQ7XQf3ZD2PHjvU5HrSTjh4H+uFEj4tgEPRNcFp91E9vp/Zi0efx8fESzvRT3kUXXSS5ubkSrjzHAMfH6bSZVv9+QvH4mDhxoixfvlxWr17tc/8wPR602b6goCAszhcTK9gP5dEPrCqYjoegDyCtTnft2lWys7N9qpz6vFevXhLOjhw5Yj7N6CebcKXNTXpiKXt86B0htTdcuB8fe/bsMdeAQun40P4XetLNzMyUVatWmd9/WXquqFOnjs/xoM1Oeq00lI4Hp5L9UJ4tW7aYx6A6HpwaYNGiRaZXU0ZGhvP55587Y8eOdRo1auTs37/fCSf33nuvs2bNGmfXrl3OP/7xD2fQoEFOkyZNTA+YUHb48GHnk08+MZMesk8//bT5/+7du837TzzxhDkeli1b5mzdutX0BGvbtq3zww8/OOGyH/S9qVOnmp5eenx88MEHzhVXXOFceOGFTklJiRMqxo8f78TGxpq/g3379nmno0ePeucZN26c07p1a2fVqlXOxo0bnV69epkplIyvZD/k5uY6jzzyiPn59XjQv4127do5/fr1c4JJjQgg9fzzz5uDKjIy0nTLXr9+vRNubrrpJichIcHsg5YtW5rneqCFutWrV5sT7qmTdjv2dMV+8MEHnebNm5sPKgMHDnS2b9/uhNN+0BNPcnKy07RpU9MNuU2bNs6YMWNC7kNaeT+/TvPnz/fOox887rrrLuf888936tWr5wwfPtycnMNpP+Tl5ZmwiYuLM38THTp0cKZNm+YUFhY6wYT7AQEArAj6a0AAgNBEAAEArCCAAABWEEAAACsIIACAFQQQAMAKAggAYAUBBACwggACABBAAIDwQQ0IACA2/D8WlCPJW6co/wAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"id = X.sample(1).index[0]\n",
"plt.imshow(X.iloc[id].values.reshape(28, 28), cmap='gray')\n",
"plt.title(f'Id: {id}, Label: {y[id]}')"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "58ba3512",
"metadata": {},
"outputs": [],
"source": [
"y = y.astype(\"int16\")"
]
},
{
"cell_type": "markdown",
"id": "7d25ace7",
"metadata": {},
"source": [
"## 1.3. Train test split"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "18929619",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(69000, 784)\n",
"(1000, 784)\n"
]
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X.values, y.values, test_size=1000, random_state=42, shuffle=True)\n",
"print(X_train.shape)\n",
"print(X_test.shape)"
]
},
{
"cell_type": "markdown",
"id": "180bf32b",
"metadata": {},
"source": [
"## 1.4. Scaling"
]
},
{
"cell_type": "markdown",
"id": "af330d6f",
"metadata": {},
"source": [
"A escala dos valores de entrada para a rede é bastante importante para que não haja nenhum problema no treinamento. \n",
"Aqui poderíamos aplicar o standard scaler, mas como sabemos o intervalo de valores que os pixels podem assumir, \n",
"vamos fazer um simples min max."
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "040c3575",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "99be654f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(69000, 784)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.shape"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "ea8b393d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(784,)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Standard Scaler\n",
"# Calculando média e desvio padrão no conjunto de treino\n",
"means = X_train.mean(axis=0)\n",
"stds = X_train.std(axis=0)\n",
"stds.shape"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "7967eb25",
"metadata": {},
"outputs": [],
"source": [
"# Min max scaler\n",
"subtract = [0.0] * X_train.shape[1]\n",
"divide = [255.0] * X_train.shape[1]"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "e144fa81",
"metadata": {},
"outputs": [],
"source": [
"def apply_scaling(X_train, subtract, divide):\n",
" cols_scaled = []\n",
" for i in range(X_train.shape[1]):\n",
" col = X_train[:, i]\n",
" if divide[i] == 0:\n",
" # print(f\"Col {i}: Std == 0\")\n",
" col_scaled = col\n",
" else:\n",
" # print(f\"Col {i}: Std != 0\")\n",
" col_scaled = (col - subtract[i]) / divide[i]\n",
" col_scaled = col_scaled.reshape(-1, 1)\n",
" # print(col_scaled.shape)\n",
" cols_scaled.append(col_scaled)\n",
" X_train_scaled = np.hstack(cols_scaled)\n",
" print(X_train_scaled.shape)\n",
" return X_train_scaled"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "3e2a5ec1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(69000, 784)\n",
"(1000, 784)\n"
]
}
],
"source": [
"# Min max scaler\n",
"X_train_scaled = apply_scaling(X_train, [0.0] * X_train.shape[1], [255.0] * X_train.shape[1])\n",
"X_test_scaled = apply_scaling(X_test, [0.0] * X_test.shape[1], [255.0] * X_test.shape[1])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "2077e5e7",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>69000.0000</td>\n",
" <td>69000.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>12.9836</td>\n",
" <td>11.5725</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>49.7809</td>\n",
" <td>47.1865</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>255.0000</td>\n",
" <td>255.0000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1\n",
"count 69000.0000 69000.0000\n",
"mean 12.9836 11.5725\n",
"std 49.7809 47.1865\n",
"min 0.0000 0.0000\n",
"25% 0.0000 0.0000\n",
"50% 0.0000 0.0000\n",
"75% 0.0000 0.0000\n",
"max 255.0000 255.0000"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.DataFrame(X_train[:, 100:102]).describe().round(4)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "9823c865",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>69000.0000</td>\n",
" <td>69000.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>0.0509</td>\n",
" <td>0.0454</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.1952</td>\n",
" <td>0.1850</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.0000</td>\n",
" <td>0.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>1.0000</td>\n",
" <td>1.0000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1\n",
"count 69000.0000 69000.0000\n",
"mean 0.0509 0.0454\n",
"std 0.1952 0.1850\n",
"min 0.0000 0.0000\n",
"25% 0.0000 0.0000\n",
"50% 0.0000 0.0000\n",
"75% 0.0000 0.0000\n",
"max 1.0000 1.0000"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.DataFrame(X_train_scaled[:, 100:102]).describe().round(4)"
]
},
{
"cell_type": "markdown",
"id": "8e4d8bce",
"metadata": {},
"source": [
"# 2. PyTorch"
]
},
{
"cell_type": "markdown",
"id": "8e029ad3",
"metadata": {},
"source": [
"Refazendo a rede usando a api de alto nível do pytorch"
]
},
{
"cell_type": "markdown",
"id": "48d6dacd",
"metadata": {},
"source": [
"## 2.1. Dados e Wrappers"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "ebe1b118",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Device: cpu\n"
]
}
],
"source": [
"import torch\n",
"\n",
"device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
"print('Device:', device)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "c1544ef3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(69000, 784)\n",
"(1000, 784)\n"
]
}
],
"source": [
"print(X_train_scaled.shape)\n",
"print(X_test_scaled.shape)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "6e9b8897",
"metadata": {},
"outputs": [],
"source": [
"from torch.utils.data import TensorDataset, DataLoader\n",
"\n",
"# Conversão para tensores\n",
"X_train_t = torch.tensor(X_train_scaled, dtype=torch.float32, device=device)\n",
"X_test_t = torch.tensor(X_test_scaled, dtype=torch.float32, device=device)\n",
"y_train_t = torch.tensor(y_train, dtype=torch.long, device=device)\n",
"y_test_t = torch.tensor(y_test, dtype=torch.long, device=device)\n",
"\n",
"# Criando dataset wrappers\n",
"train_dataset = TensorDataset(X_train_t, y_train_t)\n",
"test_dataset = TensorDataset(X_test_t, y_test_t)"
]
},
{
"cell_type": "markdown",
"id": "f3ef4761",
"metadata": {},
"source": [
"* Algoritmos de descida de gradiente por número de amostras antes da atualização dos parâmetros treináveis\n",
" * Gradient Descent (GD): dataset inteiro N\n",
" * Mini Batch GD ou Batch GD: tamanho de amostra entre 1 e N, como 10, 256, 512, etc\n",
" * Stochastic GD ou SGD: uma única amostra n=1"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "31c87dd4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"train_loader batches: 1 test_loader batches: 1\n"
]
}
],
"source": [
"# GD sem mini batch -> batch size = número total de amostras\n",
"batch_size = X_train_t.shape[0]\n",
"\n",
"# Dataloader wrappers\n",
"train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)\n",
"test_loader = DataLoader(test_dataset, batch_size=len(test_dataset), shuffle=False)\n",
"\n",
"print('train_loader batches:', len(train_loader), 'test_loader batches:', len(test_loader))"
]
},
{
"cell_type": "markdown",
"id": "a09782ba",
"metadata": {},
"source": [
"## 2.2. Modelo Simples"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "43dc510f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SimpleNN(\n",
" (fc1): Linear(in_features=784, out_features=12, bias=True)\n",
" (fc2): Linear(in_features=12, out_features=10, bias=True)\n",
")\n"
]
}
],
"source": [
"import torch.nn as nn\n",
"import torch.nn.functional as F\n",
"import torch.optim as optim\n",
"\n",
"class SimpleNN(nn.Module):\n",
" def __init__(self, input_dim=784, hidden_dim=12, output_dim=10):\n",
" super(SimpleNN, self).__init__()\n",
" self.fc1 = nn.Linear(input_dim, hidden_dim)\n",
" self.fc2 = nn.Linear(hidden_dim, output_dim)\n",
"\n",
" def forward(self, x):\n",
" x = self.fc1(x)\n",
" x = F.relu(x)\n",
" x = self.fc2(x)\n",
" return x\n",
"\n",
"model = SimpleNN(input_dim=784, hidden_dim=12, output_dim=10).to(device)\n",
"print(model)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "07ffa410",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Linear(in_features=784, out_features=12, bias=True)\n",
"torch.Size([12, 784])\n",
"Parameter containing:\n",
"tensor([[ 0.0157, 0.0171, -0.0066, ..., 0.0172, -0.0146, 0.0314],\n",
" [-0.0277, -0.0340, -0.0109, ..., -0.0217, -0.0125, -0.0353],\n",
" [-0.0239, -0.0105, 0.0167, ..., 0.0308, -0.0155, -0.0171],\n",
" ...,\n",
" [ 0.0232, 0.0202, 0.0017, ..., -0.0197, 0.0255, -0.0341],\n",
" [ 0.0199, -0.0142, 0.0262, ..., -0.0267, -0.0129, 0.0048],\n",
" [ 0.0098, -0.0129, -0.0045, ..., -0.0335, 0.0015, -0.0051]],\n",
" requires_grad=True)\n",
"Parameter containing:\n",
"tensor([ 0.0037, -0.0175, 0.0340, 0.0003, 0.0237, -0.0269, 0.0306, 0.0200,\n",
" 0.0273, -0.0280, -0.0320, 0.0243], requires_grad=True)\n",
"model.fc1.weight.mean().item()=-7.45274155633524e-05\n",
"model.fc1.weight.std().item()=0.02087283879518509\n",
"model.fc1.bias.mean().item()=0.004962736275047064\n",
"model.fc1.bias.std().item()=0.025130491703748703\n",
"model.fc2.weight.mean().item()=-0.016902277246117592\n",
"model.fc2.weight.std().item()=0.16204246878623962\n"
]
}
],
"source": [
"print(model.fc1)\n",
"print(model.fc1.weight.shape)\n",
"print(model.fc1.weight)\n",
"print(model.fc1.bias)\n",
"print(f\"{model.fc1.weight.mean().item()=}\")\n",
"print(f\"{model.fc1.weight.std().item()=}\")\n",
"print(f\"{model.fc1.bias.mean().item()=}\")\n",
"print(f\"{model.fc1.bias.std().item()=}\")\n",
"print(f\"{model.fc2.weight.mean().item()=}\")\n",
"print(f\"{model.fc2.weight.std().item()=}\")"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "d299e53f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"model.fc1.weight.grad=None\n"
]
}
],
"source": [
"print(f\"{model.fc1.weight.grad=}\")"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "4f256471",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Definindo tensor de pesos...\n",
"w=tensor([2., 3.], requires_grad=True) w.grad=None\n",
"Calculando loss...\n",
"loss=tensor(13., grad_fn=<SumBackward0>)\n",
"w=tensor([2., 3.], requires_grad=True) w.grad=None\n",
"Backward...\n",
"w=tensor([2., 3.], requires_grad=True) w.grad=tensor([4., 6.])\n"
]
},
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Onde ficam guardados os gradientes dos pesos?\n",
"print(\"Definindo tensor de pesos...\")\n",
"w = torch.tensor([2.0, 3.0], requires_grad=True)\n",
"print(f\"{w=} {w.grad=}\")\n",
"print(\"Calculando loss...\")\n",
"loss = (w**2).sum()\n",
"print(f\"{loss=}\")\n",
"print(f\"{w=} {w.grad=}\")\n",
"print(\"Backward...\")\n",
"loss.backward()\n",
"print(f\"{w=} {w.grad=}\")\n",
"\n",
"# De fato,\n",
"w.grad.equal((2 * (w ** (2-1))))"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "f1e98dbc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Antes:\n",
"w=tensor([2., 3.], requires_grad=True) w.grad=tensor([4., 6.])\n",
"Atualizando pesos...\n",
"Depois:\n",
"w=tensor([1.6000, 2.4000], requires_grad=True) w.grad=tensor([4., 6.])\n"
]
}
],
"source": [
"# Atualização dos pesos\n",
"optimizer = optim.SGD([w], lr=0.1)\n",
"print(\"Antes:\")\n",
"print(f\"{w=} {w.grad=}\")\n",
"print(\"Atualizando pesos...\")\n",
"optimizer.step()\n",
"print(\"Depois:\")\n",
"print(f\"{w=} {w.grad=}\")"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "9241a003",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[tensor([1.6000, 2.4000], requires_grad=True)]"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"optimizer.param_groups[0][\"params\"]"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "8a15c4a4",
"metadata": {},
"outputs": [],
"source": [
"# Inicialização customizada - exemplos\n",
"def init_weights_normal(m, std=0.5, mean=0):\n",
" if isinstance(m, nn.Linear):\n",
" nn.init.normal_(m.weight, mean=mean, std=std)\n",
" nn.init.normal_(m.bias, mean=mean, std=std)\n",
"\n",
"def init_weights_xavier(m):\n",
" if isinstance(m, nn.Linear):\n",
" nn.init.xavier_normal_(m.weight)\n",
" nn.init.normal_(m.bias)\n",
"\n",
"# model.apply(init_weights_xavier)"
]
},
{
"cell_type": "markdown",
"id": "d4228612",
"metadata": {},
"source": [
"## 2.3. Loop de treinamento"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "160f8890",
"metadata": {},
"outputs": [],
"source": [
"# Training loop\n",
"\n",
"def torch_training_loop(model, optimizer, train_loader, test_loader=test_loader, n_epochs=100, verbose=10):\n",
" criterion = nn.CrossEntropyLoss()\n",
"\n",
" for epoch in range(n_epochs):\n",
" model.train()\n",
" running_loss = 0.0\n",
" running_corrects = 0\n",
" total = 0\n",
"\n",
" for X_batch, y_batch in train_loader:\n",
" optimizer.zero_grad() # Zera os gradientes de cada tensor do modelo\n",
" outputs = model(X_batch) # Forward pass\n",
" loss = criterion(outputs, y_batch) # Cálculo da loss\n",
" loss.backward() # Cálculo das derivadas - backward pass\n",
" optimizer.step() # Atualização dos pesos do modelo: w = w - lr * d_w\n",
"\n",
" running_loss += loss.item() * X_batch.size(0)\n",
" _, preds = torch.max(outputs, 1)\n",
" running_corrects += torch.sum(preds == y_batch).item()\n",
" total += X_batch.size(0)\n",
"\n",
" epoch_loss = running_loss / total\n",
" epoch_acc = running_corrects / total\n",
"\n",
" model.eval()\n",
" test_loss = 0.0\n",
" test_corrects = 0\n",
" test_total = 0\n",
" with torch.no_grad(): # Deixa de calcular os gradientes\n",
" for X_batch, y_batch in test_loader:\n",
" outputs = model(X_batch)\n",
" loss = criterion(outputs, y_batch)\n",
" test_loss += loss.item() * X_batch.size(0)\n",
" _, preds = torch.max(outputs, 1)\n",
" test_corrects += torch.sum(preds == y_batch).item()\n",
" test_total += X_batch.size(0)\n",
"\n",
" test_loss = test_loss / test_total\n",
" test_acc = test_corrects / test_total\n",
"\n",
" if epoch % verbose == 0 or epoch == n_epochs-1:\n",
" print(f'Epoch {epoch:>2}/{n_epochs} - train_loss: {epoch_loss:.4f} train_acc: {epoch_acc:.4f} - test_loss: {test_loss:.4f} test_acc: {test_acc:.4f}')\n"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "a0365693",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 0/2 - train_loss: 2.3258 train_acc: 0.0988 - test_loss: 2.3010 test_acc: 0.1080\n",
"Epoch 1/2 - train_loss: 2.3003 train_acc: 0.1044 - test_loss: 2.2843 test_acc: 0.1780\n"
]
}
],
"source": [
"optimizer = optim.SGD(model.parameters(), lr=0.1)\n",
"torch_training_loop(model, optimizer, train_loader=train_loader, n_epochs=2, verbose=10)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "5ddc5552",
"metadata": {},
"outputs": [],
"source": [
"# Training loop\n",
"\n",
"def torch_training_loop(model, optimizer, train_loader, test_loader=test_loader, n_epochs=100, verbose=10, show_tensors=False):\n",
" criterion = nn.CrossEntropyLoss()\n",
"\n",
" weights_stats = []\n",
" for epoch in range(n_epochs):\n",
" model.train()\n",
" running_loss = 0.0\n",
" running_corrects = 0\n",
" total = 0\n",
"\n",
" for X_batch, y_batch in train_loader:\n",
" optimizer.zero_grad() # Zera os gradientes de cada tensor do modelo\n",
" outputs = model(X_batch) # Forward pass\n",
" loss = criterion(outputs, y_batch) # Cálculo da loss\n",
" loss.backward() # Cálculo das derivadas - backward pass\n",
" optimizer.step() # Atualização dos pesos do modelo: w = w - lr * d_w\n",
"\n",
" running_loss += loss.item() * X_batch.size(0)\n",
" _, preds = torch.max(outputs, 1)\n",
" running_corrects += torch.sum(preds == y_batch).item()\n",
" total += X_batch.size(0)\n",
"\n",
" model.eval()\n",
" # Cálculo de estatísticas sobre os pesos\n",
" stats = {}\n",
" for n, p in model.named_parameters():\n",
" stats[f\"{n}.avg\"] = p.mean().item()\n",
" stats[f\"{n}.std\"] = p.std().item()\n",
" stats[f\"{n}.grad.avg\"] = p.grad.mean().item()\n",
" stats[f\"{n}.grad.std\"] = p.grad.std().item()\n",
" with torch.no_grad():\n",
" fc1_outputs = model.fc1(X_batch)\n",
" stats[f\"fc1_outputs.avg\"] = fc1_outputs.mean().item()\n",
" stats[f\"fc1_outputs.std\"] = fc1_outputs.std().item()\n",
" stats[f\"fc2_outputs.avg\"] = outputs.mean().item()\n",
" stats[f\"fc2_outputs.std\"] = outputs.std().item()\n",
" if any([\"bn1\" in k for k in stats]):\n",
" bn1_outputs = model.bn1(fc1_outputs)\n",
" stats[f\"bn1_outputs.avg\"] = bn1_outputs.mean().item()\n",
" stats[f\"bn1_outputs.std\"] = bn1_outputs.std().item()\n",
" stats[f\"bn1_running_mean.avg\"] = model.bn1.running_mean.mean().item()\n",
" stats[f\"bn1_running_var.avg\"] = model.bn1.running_var.mean().item()\n",
" stats[f\"bn1_running_mean\"] = model.bn1.running_mean.numpy()\n",
" stats[f\"bn1_running_var\"] = model.bn1.running_var.numpy()\n",
" weights_stats.append(stats)\n",
"\n",
" # Prints maneiros\n",
" if show_tensors and (epoch % verbose == 0 or epoch == n_epochs-1):\n",
" print(\"Visualizando tensores:\")\n",
" print(f\"{model.fc1.weight=}\")\n",
" print(f\"{model.fc1.weight.mean()=}\")\n",
" print(f\"{model.fc1.weight.grad=}\")\n",
" print(f\"{model.fc1.weight.grad.mean()=}\")\n",
" print(f\"{model.fc2.weight=}\")\n",
" print(f\"{model.fc2.weight.mean()=}\")\n",
" print(f\"{model.fc2.weight.grad=}\")\n",
" print(f\"{model.fc2.weight.grad.mean()=}\")\n",
" print(f\"{X_batch.shape=}\")\n",
" print(f\"{outputs.shape=} {outputs=}\")\n",
" print(f\"{loss=}\")\n",
" print(f\"{preds.shape=} {preds=}\")\n",
"\n",
" epoch_loss = running_loss / total\n",
" epoch_acc = running_corrects / total\n",
"\n",
" model.eval()\n",
" test_loss = 0.0\n",
" test_corrects = 0\n",
" test_total = 0\n",
" with torch.no_grad(): # Deixa de calcular os gradientes\n",
" for X_batch, y_batch in test_loader:\n",
" outputs = model(X_batch)\n",
" loss = criterion(outputs, y_batch)\n",
" test_loss += loss.item() * X_batch.size(0)\n",
" _, preds = torch.max(outputs, 1)\n",
" test_corrects += torch.sum(preds == y_batch).item()\n",
" test_total += X_batch.size(0)\n",
"\n",
" test_loss = test_loss / test_total\n",
" test_acc = test_corrects / test_total\n",
"\n",
" if epoch % verbose == 0 or epoch == n_epochs-1:\n",
" print(f'Epoch {epoch:>2}/{n_epochs} - train_loss: {epoch_loss:.4f} train_acc: {epoch_acc:.4f} - test_loss: {test_loss:.4f} test_acc: {test_acc:.4f}')\n",
" return weights_stats"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "a179fe70",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Visualizando tensores:\n",
"model.fc1.weight=Parameter containing:\n",
"tensor([[ 0.0157, 0.0171, -0.0066, ..., 0.0172, -0.0146, 0.0314],\n",
" [-0.0277, -0.0340, -0.0109, ..., -0.0217, -0.0125, -0.0353],\n",
" [-0.0239, -0.0105, 0.0167, ..., 0.0308, -0.0155, -0.0171],\n",
" ...,\n",
" [ 0.0232, 0.0202, 0.0017, ..., -0.0197, 0.0255, -0.0341],\n",
" [ 0.0199, -0.0142, 0.0262, ..., -0.0267, -0.0129, 0.0048],\n",
" [ 0.0098, -0.0129, -0.0045, ..., -0.0335, 0.0015, -0.0051]],\n",
" requires_grad=True)\n",
"model.fc1.weight.mean()=tensor(-0.0002, grad_fn=<MeanBackward0>)\n",
"model.fc1.weight.grad=tensor([[0., 0., 0., ..., 0., 0., 0.],\n",
" [0., 0., 0., ..., 0., 0., 0.],\n",
" [0., 0., 0., ..., 0., 0., 0.],\n",
" ...,\n",
" [0., 0., 0., ..., 0., 0., 0.],\n",
" [0., 0., 0., ..., 0., 0., 0.],\n",
" [0., 0., 0., ..., 0., 0., 0.]])\n",
"model.fc1.weight.grad.mean()=tensor(-0.0001)\n",
"model.fc2.weight=Parameter containing:\n",
"tensor([[-0.1805, -0.1458, -0.2186, -0.2059, 0.2557, -0.1232, 0.2825, 0.0727,\n",
" -0.1218, 0.0996, 0.0303, -0.0850],\n",
" [ 0.2069, 0.0294, 0.1714, -0.1498, -0.1268, 0.0225, 0.1566, -0.2745,\n",
" 0.1963, -0.0901, 0.1006, -0.0663],\n",
" [-0.2092, 0.2346, -0.2465, -0.1276, 0.0560, -0.2703, -0.2480, 0.0718,\n",
" -0.1022, -0.2568, -0.0966, 0.1009],\n",
" [ 0.0376, -0.1535, -0.2816, 0.1326, 0.0514, 0.1331, 0.0170, -0.0374,\n",
" 0.0458, -0.1878, -0.0661, 0.2333],\n",
" [-0.0451, 0.2197, -0.0018, -0.2561, -0.1812, 0.1418, 0.2663, 0.0763,\n",
" 0.0260, 0.1337, 0.0105, -0.1543],\n",
" [ 0.0234, -0.0842, 0.0311, 0.1843, -0.1439, -0.1387, 0.0378, -0.1909,\n",
" -0.1441, 0.1529, 0.1614, -0.2568],\n",
" [-0.1559, -0.0663, 0.0994, -0.0757, 0.1747, 0.0449, 0.1856, 0.2640,\n",
" -0.0101, -0.0724, -0.1524, -0.2802],\n",
" [ 0.1607, 0.0385, -0.0981, -0.1531, -0.2885, 0.2327, -0.2551, -0.1637,\n",
" -0.0854, -0.0469, 0.2834, 0.1045],\n",
" [-0.1125, -0.0723, 0.0030, -0.1907, -0.0680, -0.2336, -0.1279, -0.0856,\n",
" -0.2668, -0.0976, 0.2576, -0.0014],\n",
" [ 0.2623, -0.0383, 0.2664, -0.1458, -0.2011, 0.1999, 0.1473, -0.1149,\n",
" 0.1635, 0.1655, -0.1374, 0.1809]], requires_grad=True)\n",
"model.fc2.weight.mean()=tensor(-0.0169, grad_fn=<MeanBackward0>)\n",
"model.fc2.weight.grad=tensor([[ 2.4804e-03, 5.9323e-04, -7.5110e-03, -7.2572e-03, -2.3526e-02,\n",
" 2.2188e-03, -6.9465e-04, -2.5928e-03, -1.4326e-03, 3.7230e-03,\n",
" 1.0767e-03, 2.4364e-04],\n",
" [ 2.4898e-03, 4.4452e-04, 5.2419e-03, 5.0613e-03, 1.6013e-02,\n",
" 2.5592e-03, -5.3397e-03, -3.7673e-04, 1.7172e-03, 9.7044e-04,\n",
" 1.4862e-04, 2.0606e-04],\n",
" [-2.1696e-03, 5.7392e-04, 2.3036e-03, 3.3536e-05, -5.1150e-03,\n",
" 1.4363e-03, 4.7066e-03, -2.0022e-04, -1.0841e-03, 2.6118e-03,\n",
" 7.0708e-05, 7.2945e-05],\n",
" [ 6.4886e-04, 2.8186e-04, 2.9449e-03, -1.3140e-02, -6.4170e-03,\n",
" -9.7044e-03, 1.1046e-03, 5.3236e-04, 1.7399e-04, -4.8220e-03,\n",
" -3.9804e-04, 1.5996e-04],\n",
" [-7.9293e-04, 2.8569e-04, -2.3556e-03, 3.8956e-03, 4.3679e-03,\n",
" 5.6386e-06, -3.0987e-03, 4.4390e-04, -2.6287e-04, -1.5823e-03,\n",
" -8.6957e-04, -2.4218e-05],\n",
" [ 2.2068e-03, -1.1288e-03, -2.7611e-04, 1.0364e-03, 1.7821e-03,\n",
" 1.4918e-04, 4.9518e-03, 3.2386e-04, 8.9173e-04, 1.5815e-03,\n",
" 1.6844e-03, 1.8870e-04],\n",
" [ 3.9760e-04, 4.0653e-04, -8.0893e-03, 8.0662e-03, -1.0123e-02,\n",
" 2.8460e-03, -5.6916e-03, 4.4660e-04, 1.4260e-03, 2.6743e-03,\n",
" 1.1676e-03, -1.3271e-03],\n",
" [-4.3597e-03, -1.4132e-03, 2.2757e-03, -3.7606e-03, 9.6654e-03,\n",
" 1.1156e-03, 5.7751e-03, 3.0905e-04, -1.1185e-03, -1.5609e-03,\n",
" -2.3659e-03, 1.4387e-04],\n",
" [-3.8762e-04, 4.5962e-04, 2.3960e-03, -2.5934e-03, -4.5336e-03,\n",
" -1.1321e-03, -5.7867e-03, 4.4949e-04, -1.2205e-04, -4.7018e-04,\n",
" 5.6666e-04, 1.0477e-04],\n",
" [-5.1365e-04, -5.0333e-04, 3.0699e-03, 8.6582e-03, 1.7886e-02,\n",
" 5.0580e-04, 4.0733e-03, 6.6447e-04, -1.8879e-04, -3.1256e-03,\n",
" -1.0812e-03, 2.3133e-04]])\n",
"model.fc2.weight.grad.mean()=tensor(1.2418e-10)\n",
"X_batch.shape=torch.Size([69000, 784])\n",
"outputs.shape=torch.Size([69000, 10]) outputs=tensor([[ 0.2503, 0.1919, -0.0700, ..., -0.2393, -0.1634, 0.2419],\n",
" [ 0.0802, 0.1443, -0.0250, ..., -0.0865, -0.0880, 0.1673],\n",
" [ 0.1542, 0.1748, -0.0250, ..., -0.0398, -0.0828, 0.2626],\n",
" ...,\n",
" [ 0.2342, 0.1826, -0.0971, ..., -0.1725, -0.1300, 0.3153],\n",
" [ 0.0786, 0.1796, -0.0832, ..., -0.1000, -0.1609, 0.2787],\n",
" [ 0.0899, 0.1485, -0.1042, ..., -0.0525, -0.1865, 0.2688]],\n",
" grad_fn=<AddmmBackward0>)\n",
"loss=tensor(2.2831, grad_fn=<NllLossBackward0>)\n",
"preds.shape=torch.Size([69000]) preds=tensor([0, 5, 9, ..., 9, 9, 9])\n",
"Epoch 0/10 - train_loss: 2.2831 train_acc: 0.1698 - test_loss: 2.2707 test_acc: 0.1920\n",
"Visualizando tensores:\n",
"model.fc1.weight=Parameter containing:\n",
"tensor([[ 0.0157, 0.0171, -0.0066, ..., 0.0172, -0.0146, 0.0314],\n",
" [-0.0277, -0.0340, -0.0109, ..., -0.0217, -0.0125, -0.0353],\n",
" [-0.0239, -0.0105, 0.0167, ..., 0.0308, -0.0155, -0.0171],\n",
" ...,\n",
" [ 0.0232, 0.0202, 0.0017, ..., -0.0197, 0.0255, -0.0341],\n",
" [ 0.0199, -0.0142, 0.0262, ..., -0.0267, -0.0129, 0.0048],\n",
" [ 0.0098, -0.0129, -0.0045, ..., -0.0335, 0.0015, -0.0051]],\n",
" requires_grad=True)\n",
"model.fc1.weight.mean()=tensor(0.0005, grad_fn=<MeanBackward0>)\n",
"model.fc1.weight.grad=tensor([[0., 0., 0., ..., 0., 0., 0.],\n",
" [0., 0., 0., ..., 0., 0., 0.],\n",
" [0., 0., 0., ..., 0., 0., 0.],\n",
" ...,\n",
" [0., 0., 0., ..., 0., 0., 0.],\n",
" [0., 0., 0., ..., 0., 0., 0.],\n",
" [0., 0., 0., ..., 0., 0., 0.]])\n",
"model.fc1.weight.grad.mean()=tensor(-0.0008)\n",
"model.fc2.weight=Parameter containing:\n",
"tensor([[-0.1905, -0.1463, -0.2206, -0.2027, 0.2982, -0.1340, 0.2926, 0.0826,\n",
" -0.1218, 0.0924, 0.0281, -0.0851],\n",
" [ 0.2015, 0.0290, 0.1656, -0.1541, -0.1588, 0.0133, 0.1527, -0.2776,\n",
" 0.1956, -0.0968, 0.1003, -0.0664],\n",
" [-0.2106, 0.2341, -0.2486, -0.1281, 0.0764, -0.2757, -0.2559, 0.0741,\n",
" -0.1018, -0.2611, -0.0976, 0.1009],\n",
" [ 0.0360, -0.1538, -0.2855, 0.1584, 0.0628, 0.1458, 0.0106, -0.0401,\n",
" 0.0456, -0.1863, -0.0658, 0.2332],\n",
" [-0.0406, 0.2194, 0.0048, -0.2647, -0.1935, 0.1492, 0.2749, 0.0756,\n",
" 0.0264, 0.1427, 0.0108, -0.1543],\n",
" [ 0.0162, -0.0834, 0.0305, 0.1893, -0.1453, -0.1431, 0.0348, -0.1922,\n",
" -0.1445, 0.1499, 0.1586, -0.2568],\n",
" [-0.1621, -0.0667, 0.1106, -0.0871, 0.1919, 0.0339, 0.1967, 0.2643,\n",
" -0.0106, -0.0773, -0.1564, -0.2798],\n",
" [ 0.1782, 0.0399, -0.1003, -0.1553, -0.3090, 0.2427, -0.2623, -0.1648,\n",
" -0.0848, -0.0416, 0.2918, 0.1044],\n",
" [-0.1101, -0.0727, 0.0020, -0.1850, -0.0585, -0.2307, -0.1266, -0.0870,\n",
" -0.2669, -0.0968, 0.2577, -0.0014],\n",
" [ 0.2696, -0.0378, 0.2662, -0.1583, -0.2360, 0.2077, 0.1445, -0.1172,\n",
" 0.1639, 0.1749, -0.1361, 0.1808]], requires_grad=True)\n",
"model.fc2.weight.mean()=tensor(-0.0169, grad_fn=<MeanBackward0>)\n",
"model.fc2.weight.grad=tensor([[ 2.0623e-02, 6.5604e-04, 9.0204e-03, -6.5274e-04, -5.8729e-02,\n",
" 2.1485e-02, -1.7090e-02, -2.0420e-02, 1.8162e-04, 1.2330e-02,\n",
" 4.4216e-03, 4.1812e-05],\n",
" [ 6.7770e-03, 4.9384e-04, 1.0495e-02, 5.4179e-03, 4.6253e-02,\n",
" 1.8386e-02, 1.0276e-02, 1.1631e-02, 5.4859e-04, 1.4357e-02,\n",
" 2.3924e-03, 2.5751e-05],\n",
" [ 4.7991e-03, 4.3066e-04, 2.8598e-03, 4.3625e-04, -3.6777e-02,\n",
" 9.3630e-03, 1.0497e-02, -9.2542e-03, -2.9265e-04, 6.4787e-03,\n",
" 2.3174e-03, 8.3001e-06],\n",
" [ 1.8916e-03, 3.7102e-04, 7.5363e-03, -4.0700e-02, -1.6578e-02,\n",
" -1.4061e-02, 1.1305e-02, 7.6517e-03, 2.4273e-04, 1.2235e-03,\n",
" -8.1267e-04, 2.2282e-05],\n",
" [-8.3786e-03, 2.7376e-04, -1.4212e-02, 1.3580e-02, 2.0604e-02,\n",
" -1.7715e-02, -1.4274e-02, -1.4861e-04, -5.0905e-04, -1.8709e-02,\n",
" -1.7607e-05, -1.6788e-05],\n",
" [ 1.3065e-02, -8.0473e-04, 1.5662e-03, -1.0536e-02, -9.4774e-04,\n",
" 1.0335e-02, 2.0862e-03, 3.6649e-03, 3.5021e-04, 4.7438e-03,\n",
" 5.8125e-03, 2.4086e-05],\n",
" [ 1.4541e-02, 4.4826e-04, -1.8138e-02, 1.7614e-02, -1.9322e-02,\n",
" 1.9783e-02, -1.5471e-02, -5.0256e-03, 5.2420e-04, 7.9103e-03,\n",
" 1.0667e-02, -1.6970e-04],\n",
" [-3.2802e-02, -1.7794e-03, 3.9650e-03, 6.9073e-03, 2.9806e-02,\n",
" -2.6451e-02, 9.0205e-03, 2.8392e-03, -5.2713e-04, -1.0027e-02,\n",
" -1.9654e-02, 1.3907e-05],\n",
" [-6.4741e-03, 4.4000e-04, -1.2877e-03, -1.0277e-02, -1.5652e-02,\n",
" -4.2528e-03, 1.0472e-03, 2.4267e-03, 1.5016e-04, -2.1403e-03,\n",
" -2.8069e-03, 1.7526e-05],\n",
" [-1.4041e-02, -5.2943e-04, -1.8053e-03, 1.8210e-02, 5.1344e-02,\n",
" -1.6871e-02, 2.6026e-03, 6.6349e-03, -6.6867e-04, -1.6167e-02,\n",
" -2.3198e-03, 3.2827e-05]])\n",
"model.fc2.weight.grad.mean()=tensor(-9.3132e-11)\n",
"X_batch.shape=torch.Size([69000, 784])\n",
"outputs.shape=torch.Size([69000, 10]) outputs=tensor([[ 0.0251, 0.3163, -0.4805, ..., 0.1033, -0.3067, 0.6781],\n",
" [ 0.2393, -0.1313, -0.2056, ..., -0.3428, -0.4115, 0.0028],\n",
" [ 0.5492, -0.1175, -0.0586, ..., -0.6381, -0.2595, -0.1253],\n",
" ...,\n",
" [ 0.4694, 0.0761, -0.1252, ..., -0.5719, -0.2409, 0.1202],\n",
" [ 0.4054, 0.1418, -0.1551, ..., -0.3310, -0.2163, 0.2762],\n",
" [ 0.1946, 0.1799, -0.2011, ..., -0.1923, -0.2693, 0.2169]],\n",
" grad_fn=<AddmmBackward0>)\n",
"loss=tensor(2.1315, grad_fn=<NllLossBackward0>)\n",
"preds.shape=torch.Size([69000]) preds=tensor([9, 0, 0, ..., 0, 0, 9])\n",
"Epoch 9/10 - train_loss: 2.1315 train_acc: 0.2066 - test_loss: 2.1156 test_acc: 0.2180\n"
]
}
],
"source": [
"optimizer = optim.SGD(model.parameters(), lr=0.1)\n",
"weights_stats = torch_training_loop(model, optimizer, train_loader=train_loader, n_epochs=10, verbose=10, show_tensors=True)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "eff9ddb9",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>fc1.weight.avg</th>\n",
" <th>fc1.weight.std</th>\n",
" <th>fc1.weight.grad.avg</th>\n",
" <th>fc1.weight.grad.std</th>\n",
" <th>fc1.bias.avg</th>\n",
" <th>fc1.bias.std</th>\n",
" <th>fc1.bias.grad.avg</th>\n",
" <th>fc1.bias.grad.std</th>\n",
" <th>fc2.weight.avg</th>\n",
" <th>fc2.weight.std</th>\n",
" <th>fc2.weight.grad.avg</th>\n",
" <th>fc2.weight.grad.std</th>\n",
" <th>fc2.bias.avg</th>\n",
" <th>fc2.bias.std</th>\n",
" <th>fc2.bias.grad.avg</th>\n",
" <th>fc2.bias.grad.std</th>\n",
" <th>fc1_outputs.avg</th>\n",
" <th>fc1_outputs.std</th>\n",
" <th>fc2_outputs.avg</th>\n",
" <th>fc2_outputs.std</th>\n",
" </tr>\n",
" <tr>\n",
" <th>epochs</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-0.000204</td>\n",
" <td>0.020894</td>\n",
" <td>-0.000123</td>\n",
" <td>0.003790</td>\n",
" <td>0.004283</td>\n",
" <td>0.024670</td>\n",
" <td>-0.001007</td>\n",
" <td>0.005171</td>\n",
" <td>-0.016902</td>\n",
" <td>0.162100</td>\n",
" <td>1.241763e-10</td>\n",
" <td>0.004607</td>\n",
" <td>0.054981</td>\n",
" <td>0.126167</td>\n",
" <td>1.862645e-10</td>\n",
" <td>0.016249</td>\n",
" <td>-0.046689</td>\n",
" <td>0.223712</td>\n",
" <td>0.035999</td>\n",
" <td>0.152674</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-0.000164</td>\n",
" <td>0.020916</td>\n",
" <td>-0.000401</td>\n",
" <td>0.003679</td>\n",
" <td>0.004585</td>\n",
" <td>0.024523</td>\n",
" <td>-0.003018</td>\n",
" <td>0.004988</td>\n",
" <td>-0.016902</td>\n",
" <td>0.162290</td>\n",
" <td>-3.104409e-11</td>\n",
" <td>0.005526</td>\n",
" <td>0.054981</td>\n",
" <td>0.124841</td>\n",
" <td>1.862645e-10</td>\n",
" <td>0.016212</td>\n",
" <td>-0.036210</td>\n",
" <td>0.239651</td>\n",
" <td>0.032650</td>\n",
" <td>0.155874</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-0.000105</td>\n",
" <td>0.020945</td>\n",
" <td>-0.000592</td>\n",
" <td>0.003757</td>\n",
" <td>0.005045</td>\n",
" <td>0.024342</td>\n",
" <td>-0.004606</td>\n",
" <td>0.005822</td>\n",
" <td>-0.016902</td>\n",
" <td>0.162543</td>\n",
" <td>2.793968e-10</td>\n",
" <td>0.006574</td>\n",
" <td>0.054981</td>\n",
" <td>0.123542</td>\n",
" <td>1.862645e-10</td>\n",
" <td>0.016428</td>\n",
" <td>-0.020353</td>\n",
" <td>0.256153</td>\n",
" <td>0.029886</td>\n",
" <td>0.162756</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-0.000034</td>\n",
" <td>0.020980</td>\n",
" <td>-0.000706</td>\n",
" <td>0.003874</td>\n",
" <td>0.005620</td>\n",
" <td>0.024151</td>\n",
" <td>-0.005745</td>\n",
" <td>0.006425</td>\n",
" <td>-0.016902</td>\n",
" <td>0.162863</td>\n",
" <td>2.405917e-10</td>\n",
" <td>0.007704</td>\n",
" <td>0.054981</td>\n",
" <td>0.122260</td>\n",
" <td>-5.587936e-10</td>\n",
" <td>0.016742</td>\n",
" <td>-0.001149</td>\n",
" <td>0.273528</td>\n",
" <td>0.026949</td>\n",
" <td>0.172131</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.000041</td>\n",
" <td>0.021022</td>\n",
" <td>-0.000750</td>\n",
" <td>0.003955</td>\n",
" <td>0.006259</td>\n",
" <td>0.023971</td>\n",
" <td>-0.006389</td>\n",
" <td>0.006474</td>\n",
" <td>-0.016902</td>\n",
" <td>0.163252</td>\n",
" <td>-9.313226e-11</td>\n",
" <td>0.008889</td>\n",
" <td>0.054981</td>\n",
" <td>0.120989</td>\n",
" <td>5.587936e-10</td>\n",
" <td>0.017121</td>\n",
" <td>0.019424</td>\n",
" <td>0.291424</td>\n",
" <td>0.023696</td>\n",
" <td>0.183724</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.000118</td>\n",
" <td>0.021070</td>\n",
" <td>-0.000777</td>\n",
" <td>0.004021</td>\n",
" <td>0.006943</td>\n",
" <td>0.023808</td>\n",
" <td>-0.006841</td>\n",
" <td>0.006342</td>\n",
" <td>-0.016902</td>\n",
" <td>0.163713</td>\n",
" <td>-3.414850e-10</td>\n",
" <td>0.010076</td>\n",
" <td>0.054981</td>\n",
" <td>0.119728</td>\n",
" <td>7.450581e-10</td>\n",
" <td>0.017550</td>\n",
" <td>0.040928</td>\n",
" <td>0.309624</td>\n",
" <td>0.020132</td>\n",
" <td>0.197076</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.000200</td>\n",
" <td>0.021126</td>\n",
" <td>-0.000818</td>\n",
" <td>0.004105</td>\n",
" <td>0.007673</td>\n",
" <td>0.023662</td>\n",
" <td>-0.007306</td>\n",
" <td>0.006441</td>\n",
" <td>-0.016902</td>\n",
" <td>0.164246</td>\n",
" <td>-4.035731e-10</td>\n",
" <td>0.011223</td>\n",
" <td>0.054981</td>\n",
" <td>0.118487</td>\n",
" <td>3.725290e-10</td>\n",
" <td>0.018005</td>\n",
" <td>0.063679</td>\n",
" <td>0.328181</td>\n",
" <td>0.016220</td>\n",
" <td>0.211770</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>0.000285</td>\n",
" <td>0.021188</td>\n",
" <td>-0.000852</td>\n",
" <td>0.004211</td>\n",
" <td>0.008440</td>\n",
" <td>0.023532</td>\n",
" <td>-0.007666</td>\n",
" <td>0.006637</td>\n",
" <td>-0.016902</td>\n",
" <td>0.164854</td>\n",
" <td>-4.346172e-10</td>\n",
" <td>0.012314</td>\n",
" <td>0.054981</td>\n",
" <td>0.117277</td>\n",
" <td>3.725290e-10</td>\n",
" <td>0.018474</td>\n",
" <td>0.087511</td>\n",
" <td>0.347350</td>\n",
" <td>0.011977</td>\n",
" <td>0.227690</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.000371</td>\n",
" <td>0.021258</td>\n",
" <td>-0.000860</td>\n",
" <td>0.004291</td>\n",
" <td>0.009222</td>\n",
" <td>0.023408</td>\n",
" <td>-0.007816</td>\n",
" <td>0.006772</td>\n",
" <td>-0.016902</td>\n",
" <td>0.165537</td>\n",
" <td>3.725290e-10</td>\n",
" <td>0.013332</td>\n",
" <td>0.054981</td>\n",
" <td>0.116117</td>\n",
" <td>1.862645e-10</td>\n",
" <td>0.018957</td>\n",
" <td>0.111659</td>\n",
" <td>0.367314</td>\n",
" <td>0.007363</td>\n",
" <td>0.244621</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.000455</td>\n",
" <td>0.021335</td>\n",
" <td>-0.000842</td>\n",
" <td>0.004309</td>\n",
" <td>0.009997</td>\n",
" <td>0.023264</td>\n",
" <td>-0.007752</td>\n",
" <td>0.006803</td>\n",
" <td>-0.016902</td>\n",
" <td>0.166295</td>\n",
" <td>-9.313226e-11</td>\n",
" <td>0.014287</td>\n",
" <td>0.054981</td>\n",
" <td>0.115020</td>\n",
" <td>-5.587936e-10</td>\n",
" <td>0.019443</td>\n",
" <td>0.135372</td>\n",
" <td>0.387807</td>\n",
" <td>0.002539</td>\n",
" <td>0.262100</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" fc1.weight.avg fc1.weight.std fc1.weight.grad.avg \\\n",
"epochs \n",
"0 -0.000204 0.020894 -0.000123 \n",
"1 -0.000164 0.020916 -0.000401 \n",
"2 -0.000105 0.020945 -0.000592 \n",
"3 -0.000034 0.020980 -0.000706 \n",
"4 0.000041 0.021022 -0.000750 \n",
"5 0.000118 0.021070 -0.000777 \n",
"6 0.000200 0.021126 -0.000818 \n",
"7 0.000285 0.021188 -0.000852 \n",
"8 0.000371 0.021258 -0.000860 \n",
"9 0.000455 0.021335 -0.000842 \n",
"\n",
" fc1.weight.grad.std fc1.bias.avg fc1.bias.std fc1.bias.grad.avg \\\n",
"epochs \n",
"0 0.003790 0.004283 0.024670 -0.001007 \n",
"1 0.003679 0.004585 0.024523 -0.003018 \n",
"2 0.003757 0.005045 0.024342 -0.004606 \n",
"3 0.003874 0.005620 0.024151 -0.005745 \n",
"4 0.003955 0.006259 0.023971 -0.006389 \n",
"5 0.004021 0.006943 0.023808 -0.006841 \n",
"6 0.004105 0.007673 0.023662 -0.007306 \n",
"7 0.004211 0.008440 0.023532 -0.007666 \n",
"8 0.004291 0.009222 0.023408 -0.007816 \n",
"9 0.004309 0.009997 0.023264 -0.007752 \n",
"\n",
" fc1.bias.grad.std fc2.weight.avg fc2.weight.std \\\n",
"epochs \n",
"0 0.005171 -0.016902 0.162100 \n",
"1 0.004988 -0.016902 0.162290 \n",
"2 0.005822 -0.016902 0.162543 \n",
"3 0.006425 -0.016902 0.162863 \n",
"4 0.006474 -0.016902 0.163252 \n",
"5 0.006342 -0.016902 0.163713 \n",
"6 0.006441 -0.016902 0.164246 \n",
"7 0.006637 -0.016902 0.164854 \n",
"8 0.006772 -0.016902 0.165537 \n",
"9 0.006803 -0.016902 0.166295 \n",
"\n",
" fc2.weight.grad.avg fc2.weight.grad.std fc2.bias.avg fc2.bias.std \\\n",
"epochs \n",
"0 1.241763e-10 0.004607 0.054981 0.126167 \n",
"1 -3.104409e-11 0.005526 0.054981 0.124841 \n",
"2 2.793968e-10 0.006574 0.054981 0.123542 \n",
"3 2.405917e-10 0.007704 0.054981 0.122260 \n",
"4 -9.313226e-11 0.008889 0.054981 0.120989 \n",
"5 -3.414850e-10 0.010076 0.054981 0.119728 \n",
"6 -4.035731e-10 0.011223 0.054981 0.118487 \n",
"7 -4.346172e-10 0.012314 0.054981 0.117277 \n",
"8 3.725290e-10 0.013332 0.054981 0.116117 \n",
"9 -9.313226e-11 0.014287 0.054981 0.115020 \n",
"\n",
" fc2.bias.grad.avg fc2.bias.grad.std fc1_outputs.avg \\\n",
"epochs \n",
"0 1.862645e-10 0.016249 -0.046689 \n",
"1 1.862645e-10 0.016212 -0.036210 \n",
"2 1.862645e-10 0.016428 -0.020353 \n",
"3 -5.587936e-10 0.016742 -0.001149 \n",
"4 5.587936e-10 0.017121 0.019424 \n",
"5 7.450581e-10 0.017550 0.040928 \n",
"6 3.725290e-10 0.018005 0.063679 \n",
"7 3.725290e-10 0.018474 0.087511 \n",
"8 1.862645e-10 0.018957 0.111659 \n",
"9 -5.587936e-10 0.019443 0.135372 \n",
"\n",
" fc1_outputs.std fc2_outputs.avg fc2_outputs.std \n",
"epochs \n",
"0 0.223712 0.035999 0.152674 \n",
"1 0.239651 0.032650 0.155874 \n",
"2 0.256153 0.029886 0.162756 \n",
"3 0.273528 0.026949 0.172131 \n",
"4 0.291424 0.023696 0.183724 \n",
"5 0.309624 0.020132 0.197076 \n",
"6 0.328181 0.016220 0.211770 \n",
"7 0.347350 0.011977 0.227690 \n",
"8 0.367314 0.007363 0.244621 \n",
"9 0.387807 0.002539 0.262100 "
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"\n",
"df_stats = pd.DataFrame(weights_stats)\n",
"df_stats.index.name = \"epochs\"\n",
"df_stats"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "da1b318c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: xlabel='epochs'>"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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D1+pOivF4V588UX1MBTXTV1VbRuLVKg9//zz1cP/ww8/VONKfyF54OpioyHkPKW413vvvYdp06aZBINw8OBB/Pe//8W3336rqu1J2f+//OUv+Pe//23X2F988YVquCjnJAHSIiaE22+/XVmEfv31VyVGdu/eXW9hOymY9vjjj6N3795KhIi4kc8sAkYEx1VXXYXFixdbWJfkHMeMGYPExERVJ0REkgjB9evXq6J9d999t12fgRBCnJIzx4G9S4C93wEpawCtEW0rJLumjXA7MeIKhIeHqweuPNDlF7w89ESgvPrqqyptWhCxIqKkJXj99deV1ULGl1/5Uv9FKobef//9KivKnuynyMhINZd4FesCd1IBV0SOpHQLr7zyCi644AK88MILNovhWdOhQwd1LeSaSFaWXvJfLEczZ840WYO6detW7zg33nij6bXs+/LLL2P48OGq8Z6IGGnWKOck44rgEGvJJ598gn/84x/qGCl7Lu4zCcLWz1usU1IKnRBCXAJNA7L3Anu+MwqQdKtWLNEDgD7nA5veBQpz6ogbMRizaiTNt41wOzES6OutLBT2sO5QDm78YHOD+71/w3CVXWPPezeFPXv2qC7FEydObNLx9owvRenMi3OJNUAe0idOnFAP5uYgx+tCRJD3kge9VNi1R4zUxd/+9jdlxZAGidKMUYTJwIED69xfmjiKpWf79u0qQ0mv9iviQ1wu4k7q27evso6Im0pcV2JBkVgcQc5XRJv5OYtrixBCnJqqKiB1M7D3W6MIOXXIbKMB6DwK6Hsh0OcCoL3RxY7o/tXZNAYrQVL9nJj2dJvWG3G7mBF54IqrxJ5pXM9IRIf66Ze+9lgAYsMD1H72jNfUSpzSi8XRiHXEOualpdrGN3Xsm2++WXXwlf5GUslX4kHE6mILKbw3depUZVUR14u4lb788ku1TVw9OmIdETEiyFxcThEREc38hIQQ0sZUlgOHfga+mwu8mAS8MwlY85JRiHj7AT2nANNfBu45ANz4AzDq9hohIkjarqTvhsVajisWkTZO63VLMdIYpI7IfZOMpn9rGaEvz5ue1Kr1RoSePXsqQWJeZr8lEWvA2rVrLQTBmjVrlFtEgjp1N4zEqehI7MeRI0csxpG+K3ovIHPE8iBuH51169YpASKxG7bGljF27txZq9WArbHFUnHrrbequBKJ35C4GltI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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_stats.filter(regex=\"outputs\").plot(marker=\"o\", grid=True)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "37ff7c2a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Test accuracy: 0.218\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGbCAYAAAAr/4yjAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAEmRJREFUeJzt3AmMXHUdwPH/LFu0LcQaWrUcLaBoAC2NVUw4uiiXiEA0KKgxiih4UGwIKVKjgCAqEOWSKxgEWiBBFCgBiQQsxXggClikBrSgpByt4YhUpbDP/F8yP3e7Pea97s7OTj+fZLvt7vxn3rzdznfef978G0VRFAkAUko99gIATaIAQBAFAIIoABBEAYAgCgAEUQAgiAIAQRQACKLAJttxxx3TZz/72fj3L3/5y9RoNMrPnbqNwLqJwhj34x//uHwAbn68/vWvT29/+9vTCSeckJ599tk0ltx+++3p9NNPT52ov78/nXPOOWmnnXYq9/GMGTPS9ddfX+u69ttvv0E/s/V9dOq+yC6++OK06667pte97nVpu+22SyeddFJ6+eWXR3uzGAa9w3EljL5vfetb5QPWf/7zn3TfffelSy+9tHyQXbp0aZowYUJbt2X27Nnp3//+d9pyyy0rjcvb+8Mf/rAjHwy//vWvp+9+97vpC1/4Qnrve9+bbrnllvTJT36yfPA++uijK1/X5z//+fj3/fffny688MI0f/788oG2KYenE51yyillII888sj01a9+Nf35z39OF110UXrkkUfSnXfeOdqbx6bKC+Ixdl111VV5QcPi/vvvH/T1k046qfz6ddddt96x//rXv4ZlG6ZPn1585jOf2eTr+cpXvlJu80jYlG186qmninHjxpXb19Tf31/su+++xfbbb1+8+uqrm7RtN954Y3m/77nnng1ebrh+XptixYoVRW9vb/HpT3960Ncvuuii8j7ceuuto7ZtDA/TR13qAx/4QPl5+fLl5ec8n77VVlulv/71r+lDH/pQ2nrrrdOnPvWpmBo5//zz0+67715Ojbz5zW9Oxx9/fHr++ecHXWdeUPess85K22+/fXn08f73v798dri29b2m8Nvf/ra87Te+8Y1p4sSJ5TPhCy64ILYvHyVkA6dQmoZ7G7O8L/LHxuSjgjVr1qQvf/nL8bW8bV/60pfSU089lX7961+n4ZaPlvJt5Gfh+Ygk77N99tknpp/yx9ryPsyvnQzU6n578cUX07Jly8rPG5Lv66uvvjrk6Kj57xtuuKH2faYzmD7qUs0Hu2222Sa+lv8zH3zwweWDy3nnnRfTSvlBIr82ccwxx6QTTzyxDEmeM/7jH/+YfvWrX6Vx48aVl/vmN79ZPuDmB/b88Yc//CEddNBB6ZVXXtno9vziF79IH/7wh9PUqVPLKYe3vOUt6dFHH0233XZb+e+8DStWrCgvd+211w4ZPxLbuP/++5efn3jiiQ1ue76NHLGBUzvZnnvuGd9vPmAPt4997GNpl112SWeffXYZvKpa3W8/+9nPystcddVVG3xB/r///W/5efz48YO+3vxdeuCBBypvIx1mmI44GOXpo7vuuqtYuXJl8Y9//KO44YYbim222aYYP358OfWR5amTfLmvfe1rg8YvWbKk/PrChQsHff3nP//5oK8/99xzxZZbblkceuih5dRJ0/z588vLDZyaydMgA6dD8vTKTjvtVE7hPP/884NuZ+B1rW/6aCS2Mcvbkz82Jl/fzjvvPOTrL7/88jr36XBMH5122mnl1z7xiU8MuXxfX1/5sbZ8/wben1b328Dfo/x5Qx544IHycmeeeeY6r3OrrbZq8V7TqUwfdYkDDjggTZkyJe2www7loXyeKsrP/vKZIQPlKY+BbrzxxvSGN7whHXjggWnVqlXxMWvWrPI67rnnnvJyd911V/lse86cOYOmdebOnbvRbcvPSvMz1HzZSZMmDfrewOtan5HaxnyEsLGjhCy/aJ7Psllbno5pfn+kfPGLX6w9ttX9luWjg3wksrHTdt/97nen973vfel73/teeVSR998dd9xRHpHko46R3Be0h+mjLpHn4/OpqL29veW88Tve8Y7U0zO4+fl7ea59oMcee6ycR37Tm960zut97rnnys9PPvlk+TlPZQyUQ5Tnu1uZynrnO99Z4561Zxs3JE+VNKdNBspnejW/P1LyGWV1tbrfqrrpppvSUUcdlT73uc+V/95iiy3KU1IXL16c/vKXv9TeXjqDKHSJPL/9nve8Z4OXyc921w5FfiEyP2gsXLhwnWPyA+poG+1tzK+D5GfV+Zn0wCOQp59+uvy87bbbjthtrys4eRvW9frCa6+91pb9lo8+82nPOTrPPPNMGeH8GlHeD/mJCWObKGzm3vrWt5bTLnvvvfcGn/FOnz69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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Avaliação final e predição randômica\n",
"model.eval()\n",
"with torch.no_grad():\n",
" outputs = model(X_test_t)\n",
" _, preds = torch.max(outputs, 1)\n",
" test_acc = torch.sum(preds == y_test_t).item() / y_test_t.size(0)\n",
" print('Test accuracy:', test_acc)\n",
"\n",
"# Mostrar imagem e predição para um sample\n",
"idx = torch.randint(0, X_test_t.size(0), (1,)).item()\n",
"img = X_test_t[idx].cpu().numpy().reshape(28, 28)\n",
"pred_class = preds[idx].item()\n",
"true_class = y_test_t[idx].item()\n",
"\n",
"import matplotlib.pyplot as plt\n",
"plt.imshow(img, cmap='gray')\n",
"plt.title(f'Predicted: {pred_class}, True: {true_class}')\n",
"plt.axis('off')\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"id": "e09f7dbe",
"metadata": {},
"source": [
"## 2.4. Variações no Tamanho do Batch"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "b3469b17",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 0/10 - train_loss: 2.3069 train_acc: 0.0996 - test_loss: 2.2998 test_acc: 0.1000\n",
"Epoch 5/10 - train_loss: 2.2273 train_acc: 0.3300 - test_loss: 2.2139 test_acc: 0.3370\n",
"Epoch 9/10 - train_loss: 2.1599 train_acc: 0.3972 - test_loss: 2.1454 test_acc: 0.3920\n"
]
}
],
"source": [
"model = SimpleNN()\n",
"optimizer = optim.SGD(model.parameters(), lr=0.1)\n",
"weights_stats = torch_training_loop(model, optimizer, train_loader=train_loader, n_epochs=10, verbose=5, show_tensors=False)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "ee7940e8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: xlabel='epochs'>"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGwCAYAAACKOz5MAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAkyBJREFUeJztnQd4VGXahp/0nhDSE5JAEnpvgVBEpFpQ1wY2WAv7i+Kq2LAiNqyIBbGsgq661tVVUaqACJFAkN4htBSSUNJ7zn+932QmM8kkmSSTZJI8t9dxOGW+OXO+yZxn3mqnaZoGQgghhBAbxr6lT4AQQgghpC4oWAghhBBi81CwEEIIIcTmoWAhhBBCiM1DwUIIIYQQm4eChRBCCCE2DwULIYQQQmweR7QBysvLkZKSAi8vL9jZ2bX06RBCCCHEAqQUXE5ODkJDQ2Fvb9/2BYuIlfDw8JY+DUIIIYQ0gFOnTqFTp05tX7CIZUX/hr29va06dklJCVatWoWJEyfCycnJqmMTzkdrh38ftgfnxLbgfNROdna2Mjjo7+NtXrDo3UAiVppCsLi7u6txKVhaHs6HbcH5sD04J7YF58MyLAnnYNAtIYQQQmyeBgmWxYsXo3PnznB1dcWwYcOQkJBQ47H//e9/MWTIEHTo0AEeHh4YMGAA/v3vf5sc8/e//12pK+Nl8uTJDTk1QgghhLRB6u0S+uqrrzBnzhy89957SqwsWrQIkyZNwsGDBxEYGFjt+I4dO+KJJ55Ajx494OzsjJ9//hm33XabOlaep0cEytKlSw3rLi4ujXlfhBBCCGnPgmXhwoWYOXOmEh2CCJfly5fj448/xty5c6sdf/HFF5us33ffffjkk0/wxx9/mAgWESjBwcEWnUNRUZFajIN29L5CWWqirKwMpaWlKo3KUuR4R0dH5ObmqkfSsrS2+RBroZyng4MD2iL6v7fa/u5I88I5sS04H7VTn++Oen3jFxcXIzExEY899phhm+RNjx8/HvHx8XU+X4TCb7/9pqwxL7/8ssm+9evXK6uLr68vLrnkEjz//PPw8/MzO86CBQswf/78atslm0cCZM0hEciy1JXnbQ4RUseOHav380jT0NrmQ+oESZ0BWdoqq1evbulTIFXgnNgWnA/z5Ofnw1LstHqYG6TeSVhYGDZv3oy4uDjD9kceeQQbNmzAli1bzD4vKytLPU+sIvJL891338Xtt99u2P/ll18qodGlSxccPXoUjz/+ODw9PZUIMvfL1JyFRdKiMjMzzWYJnTlzRh0TEBCgXqc+xeXk8uTl5an4Gxala3la23zI+cofZEZGhvpsBgUFoa39OpIv4gkTJjCLzkbgnNgWnI/akXuzv7+/0gl1Zfk2i01dLBs7duxQZvy1a9eqGJioqCiDu2jatGmGY/v27Yt+/fohOjpaWV3GjRtXbTxxH5mLcZG046qpx+IGkl+2cqOoyWJT169j+cC5ubk1yDpDrEtrnA8RV3Ku6enpCAkJaZPuIXN/e6Rl4ZzYFpwP89Tne6NegkVUkHzZisXCGFmvLf5EvqxjYmLUvyVLaP/+/cqtUzW+RY+IGXmtI0eOmBUsDfGP1eQqIqQ50H/+5PPYFgULIYQ0NfX6iSpZPoMHD1ZWEuNfvLJu7CKqC3mOsUunKqdPn8bZs2fVr1Fr0RrcB6Ttws8fIYQ0jnq7hMSdM2PGDFVbJTY2VqU1S0yBPmto+vTpKl5FLCiCPMqx4uIRkfLLL7+oOixLlixR+8VNJAG01157rbLSSAyLxMSIRcY4i4gQQgghLUB5GXBiM5B7BvAMAiJHAPYOti9Ypk6dqgIIn376aaSlpSkXz4oVKwzBhCdPnjSJLRAxc/fddyuricQdSD2Wzz77TI0jiHl8165dKtX5woULqmOj9O157rnnWIuFEEIIaUn2/QiseBTITqnc5h0KTH4Z6HVls55Kg4JuZ8+erRZzSKCsMZKeLEtNiIhZuXIlWgNl5RoSks4hPacQgV6uiO3SEQ72dk2aYfJ///d/+Pbbb3H+/Hn89ddfSiASQgghzSJWvp4udyPT7dmpuu03fNqsoqV1pFnYACv2pGHUy7/hxg//xH1f7lCPsr5iT2rTveaKFVi2bJmqDpyamoo+ffrUevwLL7yAESNGqABPaYXQUrEaP/zwQ5OMLe0g3nzzzSYZmxBCSBU3kFhWqooVRcW2FXN1xzUTFCwWsPbgWdzzxV9IzSo02Z6WVYhZn21vMtEi8TwSeCwiROJ76qrsKoX9rr/+esyaNatJzocQQkg74cRmUzdQNTQgO1l3XDPRLgWLKuZVXGrRklNYgpdXH6tNY+KZH/ep4ywZz9I6fdIQ8t5771UxQWK1EOuCZFe98sorKiBZ6tBEREQoq4oeCV5+4IEHVC2bhiDF/ySQWsYWoSStFqQUvh45BwmyNkZcVM8884xhv/C3v/3NcM7q+jzzjDru/fffVwX+xAJ0ww03qEJBeiTF/f777zcZ++qrr1bXQb//xIkTKuhbqiHrU4Nl25QpU9Q2qXfSu3dvFdhdExLwLUHgUhtIROBNN92k6qMIcn07depkCAjXI644icuS1xIOHDiAUaNGqeafvXr1wpo1a5rUskQIIc3GuWPApreAn+6z7HgJxG0mbL8ZSxNQUFKGXk9bJ25G5EdadiH6PrPKouP3PTsJ7s51X3ZxfUhm1QcffICtW7eqG7S0RPjwww/xxhtvqBumuInk5mkNkpOTcdlllymB8Omnn6pxpWeU3JT1gqQu5DylvYI0sZRmlsb1RqSmztdff42ffvpJVTa84447VDD2559/btHY0vW7f//+6pwkYFsEh3DPPfcoy9Lvv/+uBMu+fftUleSakDooEtDdvXt3JVREAMl7FpEjouTGG2/EF198YWKlknMcOXIkIiMjVSFCEVIiFqWysxQlfPDBBy16D4QQYnNoGnBmD7D/Z+DAz7p/1wfJGmom2qVgaQ34+Piom7Lc9MUSIDdGETHvvPOOSisXRNCIcLEG0i5BrB8yvlgLJJtLWjE8+uijKiPMkqqy0vpAkPiZqoUECwsLlRCSlHfh7bffxuWXX47XX3/doqaX0vVbroVcE8lI05dwFguUpMTrrUpSdLA2jFtCyLFvvfUWhg4dqtLrRejcfPPN6pxkXBElYnWR1hFPPvmkeo6UoRdXnQSX689brFxSmp4QQloF5eXA6QRg/086kXL+eOU+Oweg80ig++XAHwuBXLFAm/MM2OmyhSTFuZlol4LFzclBWTos4c+jmbj9k8Q6j1t221CVNWTJazcEqQ4sdWwaW/m3tvGl+J9xgTOxKsiNXFLS5ebdGOT5erEiyGuJGJBGmJZ26TbHP//5T2UNkcaX0oRTxIu0dqgJad4pFqOdO3eqzCs5B0EEirh3xHXVs2dPZWURl5i4ycQSI7FBgpyvCDvjcxY3GiGE2DSlxcDx3ytEyi9Ans4VrnB0BaIvAXpOAbpNBtwr7mUiSFSWkF0V0VJxn5j8UrPWY2mXMSxyUxa3jCXL6K4BCPJy1k9P9bEAhPi4quMsGa+hFU8l/bulEStL1Ric+rQGb4qx77zzTtW5+dZbb8Xu3btVfIpYb8whNYGkGKFYZ8TNIy6s77//Xu0Tt5IesbKIYBHkUdxbDelDRQghLUpxHrDvf8B3dwKvxgCfXQskLtOJFRdvoO/1utTkh48CN/4HGHBTpVgRJGVZ9ntXqTovQqaZU5rbrWCpD1Jn5ZHxOjdDVamhX583pVeT1mMRunbtqkSLcVsEayJWBemObSwaNm3apFwwEoiqd/lI3IweiUVJSkqq1shK4jyqIhYMcTHp+fPPP5VIkVgSc2PLGHv27KnWGsLc2GLxuOuuu1Sci8STSJyPOSQuR1o+vPTSSxg9erRye+kDbo2RQFx5bbHGSA0cETB65HxPnTpl0k9LhA8hhNgE+eeAvz4H/nMj8EqUzkKy+xugKAvwCAQG3wbc8p1OpFz7L6DXVYBLzXF/SpTcvweY8TNw7Ue6x/t3N7tYEShYLGBcdz8svmkggn1cTbbL+pJbBmFyH+v1PKoJCX6VeBJpWyCxIBJHITf9jz76yEQUSFdseZQbu/xb3yW7LiQAVm7EkpkkN/b//e9/mDdvngpK1cevXHLJJSrLZuPGjcqaIbE0VRv5SWaQiCqpgiwuF+Pzl+PFFSPPF1eOZArpXSsy9vLly9Uiry9uHql8XHVsCa4V4ZOZmam2SWaRFB4U4bR9+3asW7dOiS89Ikr0VhRxS4noEQuMWGV+/PFHFYBbFXkdSSWXwGC5jldeWfmHKbEqEjsk70UqNIuo08e3sF8QIaRFyEoGtnwAfDJFZ0n5393AwV+A0kLAtzMQNxu4fSXw4AFgyiIgZjzg6Gz5+OL26TIa6Hud7rEFyvIrtDZAVlaWmAXUY1UKCgq0ffv2qceGUFZWpp0/f149lpaVa5uPZGo//HVaPcp6U/LGG29okZGRJufy/PPPq21OTk5aRESE9uKLLxr2z5gxQ12Hqsu6desser3169drQ4cO1ZydnbXg4GDt0Ucf1UpKSgz75fpOnTpV8/b21sLDw7Vly5Zp/fv31+bNm2c45scff9RiYmI0R0dHw7nLfjnu3Xff1UJDQzVXV1ftuuuu086dO2d4XnFxsTZr1iytY8eOWmBgoLZgwQLtqquuUu9JT3x8vNavXz/NxcVFvS9h9uzZWnR0tNoWEBCg3XrrrVpmZqbhOXLc0qVLDetffPGF1rlzZ3V8XFycOl855q+//jK5FnKusn369OnVrtP+/fu1kSNHquvUo0cP7aefflLHrlixosZr29jPoa0i8/bDDz+oR2IbcE7ayXxkHNK031/XtA/Gato8b9Pl3RGa9tuLmpa6S9PKm/Y+1ZT376rYyf/QyhHXhGTVSF0PffaIcXaK/Pru0qWL+pVfXyQoU8aXcS3JlCHVkSBXqVEi1p7GYovzIVYWydaS1G2xvpijsZ9DW0XijCQlXFLixR1IWh7OSRudD00DUnfo0o8lcDbzoNFOOyA8FuhxBdDzCqBj7dmSreX+XZV2mSVESGMQF5OkQEtckYiU++67T2VU1SRWCCGkQUjZ+5PxFZk9y4GsU5X77B2BLhfpMnskBdmr+eqhtBQULO0ECUqVLtnmuOWWW/Dee+81+zm1VqQmjsQTSayQv7+/SqeW2i2EENJoSgqBpA3A/h+Bg78C+Wcr9zm56+JPRKR0nQi4tUzPuJaCgqWd8Oyzz+Khhx4yu68uM5w1XEKWVsttDUyfPl0thBBSK+VlsDvxB8LOxcPuhDcQdZH5gNXCbODwKl0Rt8OrgWKjRAnXDkD3y3SuHqmV4tTyJS5aCgqWdoKUzJeFEEJIM7DvR9Xt2DE7BUNk/cQSXf2SyS/rUoJzM3SZPCJSjq0HyiprQcErFOhxuU6kRI4EHBgfJlCwEEIIIdYWK6pCbJWcluxU4OtbgYAeQOYhQNNV2lb4xVQEzV4JhA6UapqckypQsBBCCCHWDJRd8WgN/XcqtmVUNK0N6Q/0mKKLSQnoLsWcOA+1QMFCCCGEWIvjm4DsyqreNSJVY6UQG7EYChZCCCGk0Y0FN+pSj3d/y2vZRFCwEEIIIQ1pLHhkja6Q26GVul499cGz7ddNsTaM6qmvbzJpo05By6OsNyFShPgf//gHOnbsqPrUWKNSLGk869evV/NRtdcRIaQ9Nhb8uqKxYAAwaAZw41e6LJ9q7XL12AHeYUDkiGY++dYPLSyWIpUGV8419U0ap6g1AStWrMCyZcvUDTIqKkoVKauNF154QTUPFGEjTf5a4oYqN3KpBHv11VdbfWxpSihVZW+77TY0BRdffDEGDBiARYsWNcn4hJBWSNZpnatH7gEnNgOa0Q/VDpG6gFnJ7pHS+PoaK5KirLKE7KoE31aImMkvtVwDwVYMBYsFOB35FXY/z6ohRW06cMOnTSJapCNzSEiI6hxsCcXFxbj++usRFxdn0sWZEEJIPcg4WFEO/2cg5S/TfUF9Knv2yL/NZfbI/UDuC5ItVO1H7ktN9iO3rdM+XULSREr8j5YshdlwW/dM7Slq8qGUSoWWjGdhr8m///3vuPfee1X5d7FaiHVBGv+98soriImJgYuLCyIiIpRVRc/8+fPxwAMPoG/fvg26LBs2bEBsbKwaW4TS3LlzUVpaatgv51DV+iAWCX0VW9kv/O1vfzOcsyD75bj3338f4eHhcHd3xw033KCaXRlbN+6//36TscVKI9dBv//EiROYM2cOfH194eCg+3Ui26ZMmaK2eXh4oHfv3qrRWE28++67qgeQNCAMCgrCddfpovTldeT9v/nmm+rcZTl+/LjaJ+N169YNbm5uGDt2rGE7IaSNUF4OnE4E1jwDvD0EWBwL/PZchViRxoLDgYnPA//cAczaBIx9DAjuW3sasoiS+/eg9JYfsC1ylnrE/bspVhpB+7SwlOQDL4qP0RqKTtMp6JfCLXvtx1MAZ486D5MbpzTT++CDD7B161Z1g37sscfw4Ycf4o033lDdgVNTU3HgQEU+fyNJTk5W3UTlxv3pp5+qcWfOnKlu7JaW1ZfzlGq6S5cuxeTJkw2iQpAmgV9//TV++ukn1Z3zjjvuwN13343PP//corH/+9//on///uqcpk6dCi8vL7X9nnvuUZal33//XQmWffv2qcaE5ti2bRv++c9/4t///reyWp07dw4bN240XO9Dhw6hT58+qo2BEBAQgFOnTuGaa65RryPxRDLGgw8+aNE5E0JsmLIS4MQmXdCsuHxyjCwh9k5A1BidJUUqzno2sEq4vQO0yFFI3puN/pGj6AZqJO1TsLQCpN223JTlph8cHKwa7slN9Z133sGMGTPUMSJoRLhYA7E8iPVDxhfrQo8ePZCSkqKa/D399NOwt6DqotzghQ4dOqhzNqawsFAJobCwMLX+9ttv4/LLL1dNA6seaw4JPJZrIddELCP6/kdigbr22msNViWJ9akJOVZEzRVXXKHGiYyMxMCBAw3XW+J+xPpjfD5LlixR11nf3LB79+7YvXs3Xn755TrPmRBiYxTnA0d/07l6pLFgoVGcn7Mn0HWCTqTIo6tPS54pMUP7FCzS8VIsHRZQnvQH7P9zQ90H3vytZVHf8toNYP/+/SgqKsK4ceMa9HxLxpfYFxErekaOHInc3FycPn1auZ8agzxfL1YEeS1xcR08eNAiwVITYjGZNWsWVq1apbomi3jp16+f2WMnTJigRIqIGrEAySLuKxEptV2XYcOGmWyTcyeEtKLMHkk7FpFyZC1QWlC5z90f6H6pLnC2yxjAybUlz5TUQfsULHJTtsAto4i+BOWeIbDLTYOd2TgWSVEL1XXRbMKob4mfaGnEyiKp1saUlJS06Nh33nknJk2apLKjRLQsWLBAWUMk/qcqYlXZvn27yrqSY8VyJO4ucWWJVYgQ0kYQN70+s+f4H6aZPT4RuoBZsaREDKebphXRPoNu64O9AwounlexUjXAqvlS1CRQVETL2rVrm2T8nj17Ij4+3kQ0bNq0Sd3kO3XqZHD5SNyMHolFSUpKMhnHyckJZWVlZt0x4mLS8+effyqRIi4Wc2PLGHv27DEZQ1w25sYWV9Zdd92l4lwkvkTifGrC0dFRWWIkeHnXrl0qgPa3336rcXy5LgkJCSbb5NwJITZG5mFg40Lgw0uAhT2BXx4CkjboxEpgL+CiR4D/+x24fxcweQHQeSTFSiuDgsUCSmIuhXb9J4B3iOkOsaw0UUpzVST4VeJJHnnkERULIinPcuM0Tl8WUSA1WORRbrzyb1nErVMXEgArAaZimZCA2//973+YN2+eysrRx69ccsklKmBVAlUljkNiaYwDawXJDBJRlZaWhvPnz5ucvxy/c+dO9Xxx5UimkN4dJGOLlUQWeX1x81StIyNjS3CtCJ/MzEy1TTKLVq5cqYSTWE/WrVunRIYeicWRujDCzz//jLfeektdE8kukusobim9aJLxt2zZokSMjC/7RAgdPnwYDz/8sHJfffHFF6o2DiGkhYt0yo+r5O3A2meBd2KBd4YAa+cDyYkVmT3DgAnPAvduB+6OBy55QtdskA0GWy9aGyArK0vMAuqxKgUFBdq+ffvUY0MoKyvTzp8/rx61slJNO/a7pu36Rvco603IG2+8oUVGRpqcy/PPP6+2OTk5aREREdqLL75o2D9jxgx1Haou69ats+j11q9frw0dOlRzdnbWgoODtUcffVQrKSkx7JfrO3XqVM3b21sLDw/Xli1bpvXv31+bN2+e4Zgff/xRi4mJ0RwdHQ3nLvvluHfffVcLDQ3VXF1dteuuu047d+6c4XnFxcXarFmztI4dO2qBgYHaggULtKuuukq9Jz3x8fFav379NBcXF/W+hNmzZ2vR0dFqW0BAgHbrrbdqmZmZhufIcUuXLlX/3rhxozZmzBjN19dXc3NzU2N99dVXhmMPHjyoDR8+XO2T5yUlJantP/30k3pP8hqjR4/WPv74Y7VfPheW0tjPoa0i8/bDDz+oR2IbtPo52fs/TXu9h6bN865cZF22l5Zo2rENmrb8YU17vZfpMfP9NO3Tv2na1o80LTtVsxVa/Xy04P27KnbyP7RyxDUhWR5S10OfPWKcnSK/vrt06aJ+5dcX+ZUt48u4lmTKkOpInMgPP/xgldYCrXU+Gvs5tFUkzkjq1EhKvLgDScvTqudk348VFWJruC1JJk+xkcXYyQPoOh7oMUWX2eNme7ForXo+Wvj+XZX2GXRLCCHEthC3jxThrEmsCCJWXH11tVEkcDbqYsCp5RMSSPPQen6ikkYhsRhSUM3cIvsIIaRFkYwe4zL2NXH9MuDqxbp0ZIqVdgUtLO0Eqd760EMPmd1XlxnOGi4hS6vlEkLaCRKNkHlIVx9Fqs2mbLfsefm6gHvS/qBgaSdIyXxZCCGkRXv2SBbPAWksuBw4e6T+Y3gGNcWZkVYABQshhJCmo7QYSPq9ohz+L0Dumcp9Ds66OBSJSYmZCHw0DsiWeky1FOm0pKI4aZM0KIZl8eLFqmaFZDtI2fKqhbWMkWJeQ4YMUZVEpY+LdO2VWh7GSKKSVB2VDsFSHE0Ke0ntC0IIIa0Q6V6/5zvg29uBV6OBz68FEpfqxIqLN9DnOuC6pcDDR4GbvwEG/x3wCQUmv9ziRTpJG7KwfPXVV6qY2HvvvafEyqJFi1RpdCmqZc7lIE3rnnjiCVXASyqJSvGu2267TR0rzxOk6qgU9Prkk09U2udTTz2l9knn3baUAkoIIW2WnDM6C4q4eqTCbFlx5T7PYKDHZTpLSueLAEdn82NIEU4pxinZQsYBuGJZEbHSDEU6SRsSLAsXLsTMmTOV6BBEuEh10o8//hhz586tdvzFF19ssn7fffcpYfLHH38oUSLWFRE9Tz75JK666ip1jFQglY68Urtj2rRpDX93hBBCmo6zR3WuHhEppxJMXTl+Mbp+PbKEDZaGYZaNKaJEhM2JzTqLjMSsiBuIlpV2T70ES3FxMRITE/HYY48ZtknxLnHhSB+auhBxIn1bxBrz8ss6058U05Iy7jKGHikiI9YbGdOcYJGuxbIYF57RF+ip2jBP1uV1peCYLPVFX1dPPwZpWVrrfMi5yjnL57FqO4PWjP7vzVpNMImNz4mmwS51B+wO/Qr7g8thl3nQZHd56CBo3S5DeffLAf+ulTukR5eZPmC10mm40fPLdUsrhH8jtVOfz2m9BIv0V5EeNWL9MEbWpf9LTUgFu7CwMCUy5Mv63XffxYQJE9Q+ESv6MaqOqd9XFenIO3/+/GrbpQOvu7t7tWZ30q9G+umI4GooOTk5KNPKsOvsLpwtPAs/Vz/08+sHB7umu/nIDe6BBx5QfX2kr4700enbt2+TvV5rQuajNSGfvYKCAjWHpaWlaGusXr26pU+BNNGc2Gml8Ms9iJALiQjJ2g63knOGfeVwQKZXT6T6DEaaz0AUOncEsgAkSAwi4xCbYj7aGvn5+baVJSQdf/VN+KQxnsTAREVFVXMXWYpYeGQMYwuLdOydOHGi2dL80tRPCqQ1JB5GRIPcHBPOJ+CVba/gTH5lhHuQexAeGfoIxkdUWoesya+//qqa7YlVSq6Xv7+/EmDmkIZ9zz//vGr+J0IvNDQUN998Mx5//HEVO9QcyDlER0crK5wEV1sbEbvfffedapQonym7VtTETD6HElB+0UUXtam4LPl1JF/E8gOEZcfb0JwU58Hu2G+wP/gL7I6sgl2hqBAdmpMHtOhxKO9+GbSYCfB19YGveHKs9xbaFPwbqR29h8TqgkVumHLTOHPGKC0NUOv6rrvmELdRTEyM+rfcyPbv36+sJCJY9M+TMSRLyHjMmm56Li4uaqmK/HFW/QMVi5Dc2OQcGtJ7Rkz5G1I24KmtT0GrkmqXnp+OhzY8hIUXL8T4SOuLFnGXyTUZNWpUncceOnRIiav3339fXes9e/aoWCNRr6+99hqaA/31bei1rg/6OW0tyLnKOZv7jLYF2ur7aldzkpcJHPxVF49ybB1QWli5z92/Imj2Cth1GQM7J1eWSW/q+WgnONXjmtTrG19+qQ8ePFhZSYxv6LIeFxdn8TjyHH0MimQFiWgxHlMU15YtW+o1Zn2QG3t+Sb5FS05RDhbtXlRNrKhxKv57KeEldZwl41naa/Lvf/877r33Xpw8eVLd6CSNXK6bZFSJIBHBFhERgRdeeEEdP3nyZCxdulRZmcQac+WVV6rKtpJWbilivejdu7caW17v9ddfN9kv5yGB0MZIuvqyZcsMcykMHDhQHau3oMl7ufrqq5UbLyAgQFnBpB2AsYtOXk+Cr40RwaqvkCv7hWuvvRa+vr7qPQo7d+7E2LFjlcVFxpXP57Zt22oNGhe3mqTYi1Xu7rvvVpY//edOrCBi2TLm+++/V+PrTZebN29W5yaWEknZl2si79cazR0JaRTlZbA78QfCzsWrR9WfpzbOHwfiFwNLLwNe6wr8OBs49KtOrPh2BuJmA7etAB46BFz5NtBtEuDUdiyEpHVRb5eQuGJmzJihvqhjY2PVTSYvL8+QNTR9+nQVryIWFEEe5VhxFYhIka6VUodlyZIlar980d9///3KndG1a1dDWrO4NOQm1xQUlBZg2BfDrDaeuIlGfGlZMaMtN22Bu5NpnI053nzzTXXNPvjgA2zdulVZtsQV9uGHH+KNN95QVpfU1NQ6Y4ckrdwSxI1zww03KIEwdepUdVOWm7mfn58SHJYg9XjkM7FmzRolfIxdUSJI5Qa/fv165TqSz4uMrRdcdSHXQFLhP/roI4wcOVIJJUHcXiKQ5PMk10hEQ22KXSwdkkIvn7Njx46p9/jII4+ouCoRPFdccYVyw1166aWG53z++efqsyjxUSJqpkyZojqvynEnTpxQn19CbKLT8YpH4ZidgiGyfmJJRTrwy5XpwPKDKW23zooiy5ndpmOE9K/I7LkcCOwlX9At8U4IsY5gkZtZRkaGKvQmsRLyS3PFihWGoFmxCBib6kXMyE3h9OnT6ter1GP57LPP1Dh65IYhx/3jH/9QwaVyM5Yx25Kvv75IppT8qpebsFigJI5GRMw777yjBKMggqYmd9GRI0fw9ttvW+wOEsvDuHHjlFgUunXrpurgvPrqqxYLFrGeCCJEqroIRbxI6rvc9EXMSG+jhx9+GM8995xFrh392CJU5LOmj1WSz5uMI58rQURvbRiLC7HaiFAWa48IFr0AuvXWW5U1RS9QJG1frCyCiBQR2SIc5fPZq1cvJCcnK/cbIS0qVr6eXr1CrFSNle1jHwMKLuhSkC+crNwvSQOSMqxEymVAh4hmP3VCmjTodvbs2Woxh/yCNkZuCLLUhtwA5AYmS3Pg5uimLB2WsC11G+5Zd0+dx7077l0MDhps0Ws3BIn7EQuViIq6kBuouIiuv/56i2+kMr6+Do4esWSIBU3igBqbitu/f3+TDC5x94krRgKiIyMjGzyuWPzuvPNOZbWT1Hh5zyLkakKsP2L1E8uUiBHJ2JGAWL1AEcuJWGh+/PFHlVIvbjIRR/q0e0nJ79evn4mYFqsSIS2GuH2k0JrZcvYV29a9WLlJvoNixumsKN0mA+6WWWEJaWlaT9SiFRGBJG4ZS5a40DgEuAbArlqp6IqxYIdg92CMCB1h0XgNzWwR65QlpKSkqJiOESNGKHeSNZFzrxqDY61aD2JlacjY4sLau3cvLr/8cpVNJRYPvTWkKuKKEpePCA4RIuIGkzYTgj6eRixB1113nbKkCPIo1sCasrMIaXGkwJpxVdiaiB4HTPsCeOQYMO1zYMBNFCukVdEuBUt9cLB3wH1971P/ripa9OuPxj6qjmtKxNUhosU4ONmcZUUCXSXwVAJw65NF07NnT2zatMlkm6yLa0hvXRG3jMTN6JF+T8Y59PqYFbHIVEWCY6UOiZ4///xTpZpL4Ku5scX6IVlSxojlw9zYco5Sr0bq8FxzzTXqvZtDBIoELksw8fDhw9XzROBVRdxC4pIUISQiSNb1dO/eHbt37zYpXCjxNYS0COeOAds/texYEShiVXGuO4aOEFuEgsUCxoSOwWtjXkOgu2mvJKnD0lQpzVURF8Sjjz6q4n2kdcHRo0fVTV+CUI3FimQOSdyKxBlJjFFNxfeq8uCDDyoxJDElkiIt7RMkXkYyjfRI/RPZ9tdff6lMHIn9MA5wlaBYEVVys5e0dAn61SMWjDvuuEPFxUjg9bx585RbUS+qZGxx62zcuFEJAonTqeqGkpgTERAy9vnz55UAkjHEDSnBryKwRDyI+NJfE4lt0TfnlOwqsdpIbI8E3MrrSWuJqkitFInBEaEiwblSdVnPTTfdpESPxFuJG23lypWGOKHWVBeGtFKkuvPpRGDts8Di4cBbA4HdX1v2XClxT0hrRmsDZGVliS9BPValoKBA27dvn3psCGVlZdr58+fVY2lZqZaQmqAtP7pcPcp6U/LGG29okZGRJufy/PPPq21OTk5aRESE9uKLL6p9S5cuVdfA3GIp3377rdarVy/D2K+++qrJ/uTkZG3ixImah4eH1rVrV+2XX37RfHx81Gvr+fDDD7Xw8HDN3t5eGzNmjNo2Y8YM7aqrrtKefvppzc/PT/P09NRmzpypFRYWGp4nczd16lTN29tbPX/ZsmVa//79tXnz5hmO+fHHH7WYmBjN0dFRXYOioiJt2rRp6nhnZ2ctNDRUmz17tmGuk5KS1Ptft26dYYyFCxdqISEhmpubmzZp0iTt008/VcfIHBvzyCOPqO1yzlXZtGmT1q9fP/WagwcP1r744gt17IEDB2q8to39HNoqxcXF2g8//KAeSVNd5AJNO7RK0368T9Ne7aZp87wrl2d8NW3p5Zr2YrimzfMx3WdYfDTt9Z6a1sTfV6SG6ePfSIPv31Wxk/+hlSPuA8mqkV/05irdimtBfik3JOtIfk3L+DJuaypUZktIlpFkf1Wt4dIQbHE+JO1Z0rTl81dTrFFjP4e2ilisxGKmD1YmViL/HHB4lS71+OhvQLGuVpDC2ROIGa9z73SdALj5GmUJCcZf6RVWP+mAzE7HLQL/Rhp+/64KIwkJqSfikpPCdVJvSGJzxFUnNWwsDYwmpMYibgd+AQ7+oguk1YzitbxCge6XAt0vA7qMBhyrVPoWMSKiRLKFjANwVR2WlyhWSJuAgqWdIIXQJD7EHNJvSBZiGRIXpK9DJK0TJJXa0gJ4hBgQ43bKXzqBIkIlfa/pxQnsrauNIiIldGDdRdxEtPS4HKXHfseOjSsxYPQkOEZdBDRxQgAhzQUFSzvhX//6l0mWjjGWVsNtKPrS/W0FCXyWhZB6U1oMHP+9wpLyK5CTUr2ImwgUsaZ01LW6qBf2DtAiRyF5bzb6R46iWCFtCgqWdoK4LwghLYBUmD28Gji4HDi8BijOqdzn5FFZxK3rRNZFIaQWKFgIIcTaSPl7fefjE5uA8lLT9GIVj3I50OUiNhMkxEIoWAghxBrxKKk7dSJFLCnSYNCYgJ46kSKWlNBBUtqZ15yQekLBQgghDY1HOfFHZTxK9unKfXb2QERcZTyKX839rQghlkHBQggh0kBQUolzz+hcNhL8ai67pjCrIh7lF108SlFlNWc4uQPRl1TEo0wCPPx4XQmxIhQshJD2jRRdM1u/5GVdqnDW6cp4lON/AOVGTTk9AoHuk3XxKFFjACfW4iGkqaBgqQdaWRnytyWiNCMDjgEBcB8yGHZV+t1YEylC/H//93/49ttvVe8c6eEzYMCAJns9Ynma9v3336+q95JWjqFCbJWC3yJevr4V6BAJXDhhus+/m87VI5aUsCGMRyGkmWDkl4XkrF6NI+PG4+SMGUh56CH1KOvZq1Y12eRIE0G5Of7888+qk3GfPn1qPPb48eOquaCUfpeKq9HR0arBoDQdbC7kHKQB4I4dO5pkfBnbGuX9a0KaKy5atKjJxic26AYSy0pVsWKMXqyEDwcmPAvMTgRmbwUmzAfCYylWCGlGaGGxgIJ163FBKsFWabtUeuYMku+7H3hzEbwnTrT65EhHZqmkOmLEiDqPPXDggOqz8/7776uuxHv27MHMmTORl5dn6CZMCDHi0EpTN1BN3PAZ0GsKLx0hLUy7tLCIq6U8P9+ipSwnB9kLF1YTKxUDqV9nZ154UR1nyXiW9pqUhoH33nsvTp48qSwL8utfBMkrr7yiBImLiwsiIiIMJeEnT56MpUuXYuLEiarPzZVXXomHHnoI//3vfy2+Lt999x169+6txpbXe/311+u0cHTo0MFQyVasO8LAgQPVsRdffLHhvVx99dWYP38+AgICVIOru+66y8T6Y866Ie6vZ555xrBfuPbaa+Hr66veoyC9fMaOHQsvLy817uDBg7Ft2zaz70+uvYwn103eY2hoKP75z3+qfXKuJ06cwAMPPKDOXRY98v7kOe7u7vjb3/6Gs2fPWnxNiQ0hf3sZB4E/FgEfXwp8eZNlzysrauozI4RYQLu0sGgFBTg4aLCVBtNZWg4NjbXo8O7bE2Hn7l7ncW+++aZy63zwwQfYunUrHBwc8Nhjj+HDDz/EG2+8gVGjRik3kVhWakK6X1padj8xMVE18JMb+tSpU7F582bcfffd8PPzU4LDEhISEhAbG4s1a9Yo4ePs7GzYt3btWtWleP369cp1JN2NZWxLe/DINQgMDMRHH32EkSNHKqEk3HzzzUogLVmyRF0jcUfV1DVYBJlcuy+//FKdn/QCEsEjiLDr378//vGPfyjLlJ4tW7YoV9uCBQuU6BI3nbjaSCtKPT65GTi4Ajj0q67BYH2RrCFCSIvTLgVLa0DabYvVQG7CwcHByMnJUSLmnXfewYwZM9QxImhEuJjjyJEjePvtty12By1cuBDjxo3DU089pda7deuGffv24dVXX7VYsIj1RBAhIudsjIiXjz/+WFkpRCw8++yzePjhh/Hcc8/B3oIiWvqxRagEBQUZ2pCLBUrG6dGjh1rv2rVrjWPIsXJe48ePV6JGrCYisAQRdnKt5Zobn7tcc7Fe6XsHyXURMSfChdgoeWeBI5J6/Ctw9DegKLtyn4Ozrrpst8lAzHhg2WVAdmoNcSx2umwhSXEmhLQ47VKw2Lm5KUuHJeQmbEXyXXfVeVz4B+/DfcgQi167Iezfvx9FRUVKVNRFcnKyuslKF2Fja0Fd41911VUm28SSIW6asrIydTNvDGK9ELGiJy4uDrm5uTh16hQiIyMbPO6cOXNw55134t///rcSIvKeRciZQ/bJ+xF3klyfyy67DFOmTIGjo2Ot10XcQMbIuVOw2Jqr54BOoEhcyukEQCs3TT3uNlEnUqLGAi6elfskdVllCdlVES0VLsHJL7GBICE2QvsULBKjYIFbRvAYOQL2gYEoz8gwH8diZwfHoCB4jBzZpCnOkvljCSkpKSqmQwJ1xZ1k7etWNQanpMSoJkUjECtLQ8YWF9ZNN92E5cuX49dff1XuGnH5VBUZQnh4OA4ePKhcVqtXr1YuL7EgbdiwoUY3ErHxKrPK1bOieupxUF9dfZRulwKhA2vO5pE6Kzd8WkMdlpd0+wkhNkG7FCz1QUSI9wMP6LKEJBDT+KZaEZgZ9PhjTSpW9K4OES0SCyIWhZosKyJWJPBUAnAtcbXo6dmzJzZt2mSyTdbFBaK3rohbRuJm9Bw+fBj5+fmGdX3MilhkqiKxIgUFBQbh9eeff8LT01OJCHNjZ2dnIykpyWQMERXmxpZzlEUCZm+88Ub13s0JFkFeX6wqstxzzz3KlbR7924MGjRInX/V8eW6SByLMXLupAXIywQOr6pw9awz7Xrs4KJz9SiRMhnw6WT5uCJKpKaKJZVuCSEtBgWLBbiNvRjui95A+oKXUJqWVnnxgoKUWGmKlOaqSMDqo48+qmIp5MYq7pqMjAzs3btXBYWKWJFMF3GvSNyK7NNTNZ7EHA8++CCGDh2qYkok6DY+Pl7Fy7z77ruGYy655BK1TVwicmOX8zG2TEhQrAgCcZd06tRJnbPE4giSESTn+eSTT6qgW7GEzJ492yCqZGzJxhEhIXEqTz/9dDU3lGQK/fbbb+jXr596fXExSfzKddddpzKUTp8+rYJzJZNIkGsiLrRPP/1UxarI+PK8YcOGqed+9tln6nz1LikZ//fff8e0adNUFpG/v7/KIpJrLddUXGYrV66kO6i5kB8H6ft0FhSxpJzeauq2EWHRdaKuV0/UxYCzR8NfS8RJl9FWOW1CSBOhtQGysrJUfrE8VqWgoEDbt2+femwIZWVl2vnz59VjeWmplvvnFu3CTz+rR1lvSt544w0tMjLS5Fyef/55tc3JyUmLiIjQXnzxRbVv6dKluhxrM4ulfPvtt1qvXr0MY7/66qsm+5OTk7WJEydqHh4eWteuXbVffvlF8/HxUa+t58MPP9TCw8M1e3t7bcyYMWrbjBkztKuuukp7+umnNT8/P83T01ObOXOmVlhYaHiezN3UqVM1b29v9fxly5Zp/fv31+bNm2c45scff9RiYmI0R0dHdQ2Kioq0adOmqeOdnZ210NBQbfbs2Ya5TkpKUu9/3bp1av3777/Xhg0bpl5D3sPw4cO1NWvWGMaPj4/X+vXrp7m4uJhct48++kjr1KmT5ubmpk2ZMkV77bXX1PuuD439HNoqxcXF2g8//KAerUJJoaYdXq1pPz+oaQv7aNo8b9NlyShN++0FTTu9Tf4grPOabQyrzwlpFJyPht+/q2In/0MrR9wH8kte0nj12SN6CgsLlWtBfoHLL/76IrVPZHwZtz4uFlKJZBlJGXtrVKltrfPR2M+hrSJxRr/88osKYG5wHFBuBnB4ZaWrpySvcp+jK9BljM7VIw0FfcKsdu5tFavMCeF82MD9uyp0CRFCmhf5jXRmT6WrJzmxiqsnGOg2SefqEbHibFmAPCGkbUPB0k649NJLsXHjRrP7Hn/8cbUQUi/Ky2B34g+EnYuH3QlvIOqimgNVSwqB4xt1IkVSj7NOme4PGaATKCJUgvuzRw8hpBoULO2Ef/3rXypLxxyWVsNtKPrS/aSNdTle8Sgcs1Ogqg+dWFKRCvxyZSpwzhmdq0cESjVXj5suUFbv6vEOaal3QghpJVCwtBPCwuj7J1YUK6rYWpXwN6kY+/WtQJ9rdSXwlavHCK9QI1fPRYBTw4ooEkLaJ+1GsLSB2GLSimkzn7/yMl2RNbOl7Cu27fmucpMUbZPibWJJCe5nqF1ECCH1pc0LFn2UvBQ4s7RaLCHWRl9gr9VnbZzYZFoRtibi7gVGzAa86q4BRAghltDmBYsUH5NCZOnp6WpdCoZJifn6pNFK0TNJS21NabRtldY2H2JZEbEinz/5HDa2J1OLUJQLJP0OHFkD7LMwNT10AMUKIcSqtHnBYlzpVS9a6nvD0ZeUr4/QIU1Da50PESuWVBy2qQqzIlBkOREPlNezZ5RUoSWEECvSLgSL3NhCQkJU6fj6NuuT46Vc+0UXXdT6zfltgNY4H3KeNm9ZKbgAHFtfIVLWAjlV3D6+nYGYCUDUJcAvc4CctBriWOx02ULSi4cQQqxIuxAseuSmUd8bhxxfWlqqqpO2lhtkW4bzYSXKy4G0XZVWlFMJgFZmmnYsvXVixusWv+jKfVppRZaQXRXRUmHxki7HbBxICLEy7UqwENKuyTsLHFtXaUXJq+Ii9e+ms6LEjNNZSGpKO5Y6Kzd8qssWMg7AVXVYXqqsw0IIIVaEgoWQtoqkICdvr7SiVC2B7+ypK33fdTwQPQ7w1XWttggRJT0uR+mx37Fj40oMGD0JjrVVuiWEkEbSoDSLxYsXo3PnzspNMmzYMCQkJNR47IcffojRo0fD19dXLePHj692vDTHkzgT42Xy5MkNOTVC2jdSXXbHf4BvbwdejQY+Gg9seAlI3qYTK0F9gJH3ATN+Bh5JAm78Ahhye/3Eih57B2iRo5DcMU49UqwQQmzKwvLVV19hzpw5eO+995RYWbRoESZNmoSDBw+qoNaqrF+/HjfeeCNGjBihBM7LL7+MiRMnYu/evSbVV0WgLF261LDu4uLSmPdFSPugrAQ4vVVnQTm8WheXYoyLDxA9tiIWZZzObUMIIe1BsCxcuBAzZ87EbbfdptZFuCxfvhwff/wx5s6dW+34zz//vFpPm++++w5r167F9OkSuFcpUCxN+ywqKlKLcXtqfQZJfbOA6kI/nrXHJQ2D8yEf+BTYHV0L+2O/wS5pPeyKckyuUXlwf2jR46FFXwItbDBgb/Rnzr+PNg//RmwLzkft1OfeWi/BIgW7EhMT8dhjjxm2SfEucfPEx8dbNIYU0ZITrNpwTywxYqERt9Ell1yC559/Hn5+fmbHWLBgAebPn19t+6pVq1RhuKZg9erVTTIuaYfzoZXDL/cgXEsuoNCpA856dgfsavbO2peXoGPeIQRm70JQ9m54F5422V/k4Il0775I9+6HdK++KHbyBqSw7u6zwO5VzfCGWvl8tFE4J7YF56P2KuCWYKfVo8lJSkqKcuNs3rwZcXFxhu2PPPIINmzYgC1bttQ5xt13342VK1cql5C4iIQvv/xSCY0uXbrg6NGjePzxx+Hp6alEkLk0ZHMWlvDwcGRmZsLb2xvWRMSVfNAmTJjAtGYboLXPh92Bn+Gw6nHYGdU50bxCUTbxRWg9rqg88MIJ2B9dqywpdsf/gJ1Rp2PNzh5a6GCdBSV6HLTg/i0WP9La56MtwjmxLTgftSP3b39/f2RlZdV5/27WLKGXXnpJiROxpujFijBt2jTDv/v27Yt+/fohOjpaHTdu3Lhq44j7yFyMi3xhNtWXZlOOTdrJfEiX4+/ElWr6G8EuJxWOsn30Q0BxLnBkNXD2SPXKsRVxKHZRY2HnbmqhbGla5Xy0cTgntgXnwzz1+d6ol2ARFSQWjzNnzphsl/W64k9ee+01JVjWrFmjBEltREVFqdc6cuSIWcFCSJvscrzx1cpNEncSPqyycFtwX3Y6JoS0a+olWJydnTF48GAVMHv11VcbmtHJ+uzZs2t83iuvvIIXXnhBuYKGDBlS5+ucPn0aZ8+eVeX0CWkTnNhsWZfjrpOAQbcCXS4CXH2a48wIIaRVUG+XkKQ0z5gxQwmP2NhYldacl5dnyBqSzB+Jc5HAWEHSmJ9++ml88cUXqnZLWpr0IIGKUZElNzdXBdBee+21ykojMSwSExMTE6PSpQlptUj2zvFNuh49+3+07Dn9bgB6TmnqMyOEkLYvWKZOnYqMjAwlQkR8DBgwACtWrEBQkK4768mTJ1XmkJ4lS5ao7KLrrrvOZJx58+bhmWeeUS6mXbt24ZNPPsGFCxcQGhqq6rQ899xzrMVCWhelxbqaKCJQkjYAp7eZ9uexBHY5JoQQ6wXdivunJheQBMoac/z48VrHcnNzU64iQlplA8EzeyoFirh9Sqqk6HWM0pW/FxfPysd0lWjZ5ZgQQuoNewkRYilSAeB8EnBsg06kHN8I5J81PcYjQCdQoi4GosYAHSJMA2nZ5ZgQQhoEBQshtZGbobOe6K0oF06a7pcGgpEjKwVKYK+as3nY5ZgQQhoMBQshVQNlxbUjVhQRKOLyMcbeCeg0tFKgSOl7B6d6dzlWr5F7RhezEjmCjQMJIaQOKFhI+0YCZaWTsd7NI/8uLzU9RmqgKDfPWCAyDnD2aNxrSlXaLqMbNwYhhLQzKFhI+wuUTd9bKVBUoGxl2XuFb+fKOBQJlvXwb6mzJYQQUgEFC2k9lJfB7sQfCDsXD7sT3kDURZa5Us4frxQoSb8D+Zmm+939dcJE7+YRwUIIIcSmoGAhracPz4pH4ZidAlUr+cQSwDsUmPyyLi7EmLzMikDZijgUESzGOHno4kYMgbK9pe14c74bQghpNZSVa0hIOof0nEIEerkitktHONjXkFzQhFCwkNYhVlQ6cJU+PNmpuu3XfAC4+eosKCJSzuw2PU7SiSVQVu/mkUBZR+dmfQuEENIaWbEnFfN/2ofUrELDthAfV8yb0guT+zRv+xwKFtL6mwb+d2b1XUF9KgWKBMq6eDX5qRJCSFsTK7M+217t2zctq1BtX3LLoGYVLRQspG00DfQIBLpNqgiUHQN4BjTH2RFCSJt1A83/aV+NPxXFIST7J/QKbjb3EAULsb1qshdOAKcSgFNbgEMWtm2Y9CLQ7/qmPjtCCGkXJCSdM3EDmRMtsl+Oi4v2a5ZzomAhLUtpEZC6SydO1JIA5Oo6etcLr+CmODtCCGmXbD953qLjJBC3uaBgIc1f6v50QqU4Sd4OlBVVryYb0h8IHwZ0GgKseExXFZZNAwkhpMkoKSvHqr1nsGxzErYet0ywSNZQc0HBQpq2SFvGgUpxIo/njlY/zt1PJ07CY3WPoQMBJ7fK/WwaSAghTcbZ3CJ8ufUU/h1/AmnZOouJgx3g5GiPwpJys8+RqJVgH12Kc3NBwUKs24cnObFSnJzaChRlVT8uoGelOJHFL7rmhoECmwYSQojV2ZOchWWbj+PHnSkoLtUJE39PZ9w0LBI3D4vAXyfPq2wgwTj4Vv9tLanNzVmPhYKFNCI49qSRONmiaxSolVcv0tZpcKU4EReP1EypLxVNA0uP/Y4dG1diwOhJcLS00i0hhBCD22fFnjR8svk4tp2odPv07+SDv4/sjMv6hsDFUfe9KinLkrpctQ6LWFZYh4XYdpPAtCrBsTmp1Y/ziai0nkQM01WRdbCSLrZ3gBY5Csl7s9E/chTFCiGEWEhmbhH+s+UkPttyAmeydXGDTg52SqD8fURnDIww/0NSRIukLrPSLWm+4mtSz0QCVz2DdGXp67JMSHl7Y+tJyl9AaZVocIkt0QfH6kWKlMsnhBBiE+w6fUG5fX7emYriMr3bx0W5fGQJ9K47aFbcPs2VulwbdAm1kx48JsXXqvbgkeDYzIOmwbFnj1Qfy61jpTiJGF49OJYQQohNuH1+3ZOGZZuSsP3kBcP2AeEdlDVFrCrOjq2vfxoFS7vtwXMr0Oc6oDBLl2Ysj1UJ6FFhORluWXAsIYSQFiMjpwhfbDmJz7ecQHpOpdvnin6hmDGisxIsrRkKlvbcg2fPt5WbnNx1TQFV7MnwhgfHEkIIaVZ2ntK5fZbvqnT7BHi54JZhkbhxWHiz1kppSihY2gJlpbpy9pmHgcxDwNnDwOltlvXgif0/YMBNumaB1gqOJYQQ0qQUl4rbJxVLNx3HjlOVbp+BETq3z6V9WqfbpzZ4h2pNFFzQxZaIKFGLCJTDwLljQHlJw8YUl0/oAGufKSGEkCYgPaewwu1zUrmABGcHe1zRL0S5ffq3crdPbVCw2KIrR+qbGFtL9MIkL73m5zm6AX4xgH9X3SL1UH5/te7Xk6whQgghNs1fJ8+r2inLd6eipEzn1g8Ut8/wSNwYG6FcQG0dCpbaKC+D3Yk/EHYuHnYnvAFrFiorzDYVI0qcHAHOHq3eW8cYrxCdIPETYdKtUqB4dwLs7U2Fz47PdQG27MFDCCGtjqLSMvyyOxXLNp9QcSp6Bkf6KrfP5D7BcHJoW26f2qBgqSMd2DE7BUNk/cSS6unAdSHpwlmndIJEiRMjN05tHYkdXEytJSJMZF0WV2/LXluElZyryhKyM19YefJLLL5GCCE2Rnp2IT7bclK5fqTgm97tM6V/qBIqfTv5oD1CwVLvdODpwA2fmoqWotwKQWIUX6KsJUeqF1ur6o7RixFja4lPuHWEBHvwEEJIq0DTNFUzRdw+YlUpLdfdf4K8XXDr8EhMi41QBd/aMxQsDUkH/nE2cGydzn0j1pKcWrJxHJyBjtGAf4UoMbhyxFrSDCq5ogdPvSvdEkIIaRRl5Rq2JJ1DYqYd/JLOIS4msFqzQHH7SBXaT+KPY9fpynpYQ8TtM7IzJvVuX26f2qBgqYrc2OtKB5Yia9s+Nt3mEVAhRozcOMpaEtHy6cIiTrqMbtlzIISQdsSKPalGTQMd8OnhbQgxahqYllWoCrz9J0HcPsXqOZKGfGWF26dPWPt0+9QGBUtVxAphCd0vBXpMqbSWsMgaIYSQCrEy67Pt1ez0IlLu+mw7Bkd2wM5TWQa3jwgZyfaZNjQcfu3c7VMbFCwNTfMdfg+tFoQQQqq5gcSyUktQARJP6DJ+Yjt3VG6fib2C4Ei3T51QsFRF4jskG4jpwIQQQupJQtK5CjdQ7Sy4pg9ujI3k9a0HjOSpKR1YUbXRH9OBCSGE1F6J1hLcnWkvqC8ULLWlA3uHmG4Xy0vVlGZCCCHtnpKycvxvRzLeWnvYomvRVhoSNieUeHWkA5ce+x07Nq7EgNGT4GjNSreEEEJaPWdzi1Smz7//PIEz2bVUKTey0wf7uCK2S8dmOb+2BAVLbdg7QIscheS92egfOYpihRBCiGJ/ajaWbkrCDztSVOdkQfr53DIsUgmSud/tUtvM1BhXqc1V67GQuqFgIYQQQizMAFqz/4wSKn8eO2fY3q+TD24b2RmX9w1VtVQEHzdHozosOoKN6rCQZophWbx4MTp37gxXV1cMGzYMCQkJNR774YcfYvTo0fD19VXL+PHjqx0vJYmffvpphISEwM3NTR1z+LBlfkBCCCGkKckqKMG/Nh7Dxa+tw//9O1GJFbGQXN4vBN/NisP/7hmJvw3sZBArgoiSPx69BJ/dPgTTu5apR1mnWGlGwfLVV19hzpw5mDdvHrZv347+/ftj0qRJSE9PN3v8+vXrceONN2LdunWIj49HeHg4Jk6ciOTkZMMxr7zyCt566y2899572LJlCzw8PNSYhYWWRVsTQggh1uZYRi6e/t8exC1Yi+eX78epcwXo4O6EWRdHY+MjY7H4pkEYHNkRdnbm3TsiaoZ16YjB/pp6pBuomV1CCxcuxMyZM3HbbbepdREZy5cvx8cff4y5c+dWO/7zzz83Wf/Xv/6F7777DmvXrsX06dOVdWXRokV48skncdVVV6ljPv30UwQFBeGHH37AtGnTGv7uCCGEkHog96TfD2cqt8/6gxmG7d2CPHHbyC64ekAY3JyZfGHzgqW4uBiJiYl47LHHDNvs7e2VC0esJ5aQn5+PkpISdOyoi5BOSkpCWlqaGkOPj4+PcjXJmOYES1FRkVr0ZGdnq0cZVxZroh/P2uOShsH5sC04H7YH56Rh5BeX4vsdqfg0/iSOZeapbWI4GdstADPiIhAXpbeklKOkRBdky/mw3ufV6oIlMzMTZWVlyvphjKwfOHDAojEeffRRhIaGGgSKiBX9GFXH1O+ryoIFCzB//vxq21etWgV3d3c0BatXr26ScUnD4HzYFpwP24NzYhnnioCNqfaIT7dDQZnOtePioGF4gIbRweUIcEvFhYOp+PUg56MpECOGTWYJvfTSS/jyyy9VXIsE7DYUsfBIHI2xhUUfG+Pt7Q1rqz/5w58wYQKcnJysOjbhfLR2+Pdhe3BOLHP7bD1xHp/En8Sa/emo6EGIiI5umD48AtcMDIOXq3Vuj5yP2tF7SCyhXjPi7+8PBwcHnDlj2tFY1oODg2t97muvvaYEy5o1a9CvXz/Ddv3zZAzJEjIec8CAAWbHcnFxUUtVRFA0lahoyrFJ/eF82BacD9uDc1KdwpIy/LQzBcs2H8felMob5agYf5WWPLZ7IOybqD4K58M89bmv1kuwODs7Y/DgwSpg9uqrr1bbysvL1frs2bNrfJ5kAb3wwgtYuXIlhgwZYrKvS5cuSrTIGHqBIopLsoVmzZpVn9MjhBBCqpGeXYjP/jyBLxJOIjO3WG1zcbTHNYPC8PcRXdA92ItXrRVQb5uXuGJmzJihhEdsbKzK8MnLyzNkDUnmT1hYmIozEV5++WVVY+WLL75QtVv0cSmenp5qkSCm+++/H88//zy6du2qBMxTTz2l4lz0oogQQgipLztPXVDZPst3p6KkTOf3CfFxxa1xkbhxaAR8PZx5UduyYJk6dSoyMjKUCBHxIVaRFStWGIJmT548qTKH9CxZskRlF1133XUm40gdl2eeeUb9+5FHHlGi5x//+AcuXLiAUaNGqTEbE+dCCCGkfTYhXLk3DR//kYTtJy8Ytg+O9FVun0m9g+HkwL6/rZEGRRWJ+6cmF5AE1Bpz/PjxOscTK8uzzz6rFkIIIaS+nM8rxn+2nsS/408YyuE7Odjhin6hSqj069SBF7WVw15ChBBCWi0H03KwbHMSvv8rGYUV9VH8PZ1x07BI3DIsAoHetNS3FShYCCGE2FyTwYSkc0jPKUSglytiq5S1Ly/X8NuBdCzdnIRNR84atvcO9VbVaKf0D4GLI6vRtjUoWAghhNgMK/akVutyHFLR5XhkjD++2XYan8Qfx4mzuoJjomMkLkWEytDOvjX29SGtHwoWQgghNiNWZn22HRV13AyIeLnrs+1wdbRHYanO7ePt6ogbYyNUxk8n36apcE5sCwoWQgghNuEGEstKVbFijIiV6AAPZU2RGiruzryFtSc424QQQlociVkxdgPVxPNX90FctH+znBPRoZWVIX9bIkozMuAYEAD3IYNh59D8MUIULIQQQlqcYxm5Fh2XnlPU5OdCKsletQpnXlyAUqNmxI7BwQh6/DF4T5yI5oTVcwghhLQYR9Jz8Nh/d+OZH/dadLxkDZHmEyvJ991vIlaE0jNn1HbZ35zQwkIIIaTZuyXHHz2LDzcew7qDGYbtUuhNX0K/KpL7E+yjS3EmzeMGEssKNDPzIdvs7NR+r3Hjms09RMFCCCGkWSguLVfdkv/1RxL2p+q6JUsW8oSeQZh5URQyc4pw9+fb1Xbj26Q+UVlSm43rsZCmIy8hoZplxQRNU/sltsVjWCyaAwoWQgghTcqF/GJ8vuUkPtl83BCD4ubkgOuHdMLtI7ugs7+H4dgltwyqVodFLCsiVib3CeFMNRHlRUUo3LUL+YmJSoTkb91q0fMkELe5oGAhhBDSJCRl5qkmhN8mnkZBSZnaFuTtghkjOuOm2Ah0cK/eLVlEyYRewbVWuiWNpyw7G/nbt6OgQqAU7tkDraSk3uNI1lBzQcFCCCHEqvEpW4+fV/Epa/afMYRA9AzxxszRXVQzQmfH2vM9RJzERftxVqxIyZkzyN+2DQWJ25UVpejQoWrxKQ4B/nAfPATugwfDbeAAnL5nNkrT083HsdjZwTEoSKU4NxcULIQQQhpNSVk5ftmdio/+SMKu01mG7Zf0CMSdo7ooAcKy+c0nGouTjiM/cRsKxL2TmIiS06erHeccGQm3IYMrRMogOEVEmMxR0BOPq2wgFWhkLFoqjpHU5uasx0LBQgghpMFkF5bgy4STWLbpOFIq4k5cHO1xzaBOuGNUZ8QEevHqNjFaaSkK9x/QCRRx8SRuR9m5c6YH2dvDtUePSoEyaGCd7hxVZ+XNRdXrsAQFtUgdFgoWQggh9ebUuXws3XQcX209ibxiXXyKv6czbh3eGbcMj4CfpwuvahNRXlCAgp27kL89UVlQCnbsQHm+rhmkHjsXF7j16we3wYOUQBEXj4OnZ71fS0SJpC6z0i0hhJBWReKJ8/joj2NYsScN5RVegm5BnrhzVBSuHBAKV6fmL9ne1im7cAH52/8yuHgK9u0DqgTI2nt7w33gQIMFxbVPb9g7Vw9qbgji9mmu1OXaoIWFEEJInY0JV+5Nw782HsP2kxcM20d39cedo6NwUVd/xqfU1INn61Z47diB/IAAeA8bZlHMR0lqqi61uMLFU3T4SPWbtwS8SnBshUBx6RoDO/u2XbyegoUQQohZcotK8fXWU1i6OQmnzhWobc4O9rhqQCjuGN0FPYK9eeUs6MEj1WNS/vMl0s304FEBskePVgiURCVQSlJSqo3nHBWlBIpk5bgNHgynsLB2JxIpWAghhJiQcqFAFXn7IuEkcgpL1TZfdyfcMjwSt8ZFsp+PhT14qqYD63vwFD/wAOwcHQ0CRVw+Jjg4wLVXL50FRcWgDIZjR7YkoGAhhBCi2H06S9VPWb47VbmBhCh/D2VNuWZgJ7g5Mz6l0T14AGQsXGiy2c7VFW79+1daUPr3h71HZfVfooOChRBC2jHl5Zoq8Cb9faS6rJ64KD/cOboLxnYPhD2rzFqEuHeyfv659h48FbgOHAjv8eOVQBFrip2TU2OmsV1AwUIIIe2Q/OJSfJd4WhV6O35WlxLraG+HKf1DcceoLugT5tPSp2jzlOXkoGDXLhTs3KmWwh07UZZVWTSvNjrefDN8rri8yc+xLUHBQggh7Ygz2YX4NP64akZ4IV+XGuvt6oibhkVixohIhPi4tfQp2iRaebkuOHbHDp042bkTRUeOVnf9iKXEgp48zdmDp61AwUIIIW0EiTvZknQOiZl28Es6h7iYQEPTwH0p2fjXH8fw084UlJTpbrIRHd1x+8jOuH5IODxceDswpvT8+UrLiTzu2o3y3Nxq19wpPFzFnKhlwAC4xETj6KWXqQBbW+nB01bgJ5QQQtoAK/akYv5P+5CqyuM74NPD2xDs7YprB4dhx6kL2HTkrOHYIZG+qn7KhF5B7IJcUdpemgGK9USJkx07UXziRLVrbOfuDre+fSvEiU6kOPpVb9Ioqcu21IOnrUDBQgghbUCszPpsO6r+nk/LLsTidUfVv8XQcmnfENWIcGCEL9ozpRkZJuKkYO9eaAW6OjNVa59UWk/6wyUmRqUj14Wt9eBpK1CwEEJIK3cDiWXFjPPBgIezA5b/czQ6+7e/VNny4mIU7d+v+u0oF8+OnWYLs9l7eZmIE7GkOHTo0ODX1ffgyd6yBYmrV2PwhAkWV7ol5qFgIYSQVoykIuvcQDUjzQnlmNYiWFRJ+22JyhIiwakS72HJjV7SiktTUyuEyQ4lTgr37YNWNQjWzg4uXbsa4k5EoDh36WL10vZyzu5DhyInI0M9Uqw0DgoWQghpxYXeXllxwKJj03NqFzW2WNJej6OZkvb6rsWFe/eaWE9E5FTFwde30nIyYABc+/RpUOdi0rJQsBBCSCtCrAgbD2fi/d+PmgTS1kWglytae0n70iefgIOXV6X15OBBoKyseln7Hj1MBIpk8rS3vjttEQoWQghpBZSWlauS+e9vOIZ9qdlqm6QsX9E3GJuOnsXZ3GKzcSxymw72cUVsl46tvqT9meeer7ZLXEZ6t46IFNfevWHvxloybREKFkIIsfGKtNIxWUrnnz6vy2Rxc3LAtNhwVZG2k6+7IUtIxInx7V5vU5g3pZdNpy+XZWfjwnf/taikvXN0NDxHjapMKw4JofWknUDBQgghNsi5vGLVMVmq0p6vqEjb0cMZfx/RGbcOj4Svh7Ph2Ml9QrDklkFGdVh0iGVFxIrst6WCbIV796lgWIk/kceSU6csfr7/rFksad9OoWAhhBAb4uTZfFWR9uttp1BYUm6oSDvzoihcN6jmjskiSib0Ckb8kXSs2rgFE0cPM6l02xJIAKwIEqlzogTKvn0oTUk1e6yDvz/KMjPrHJMl7dsvFCyEEGID7EnOwvu/H8PyXSkor/Dr9A3zwf+NicKlfUIsEh5yzLAuHXF2v6Yem0usqHTiM2d0FhMj64m5jB3BKTICbr17qy7F+kXqoBwZN54l7UmNULAQQkgLITf6P45kqkBaedRzUbcA3HVRFOKi/WwuPkPOuSQ5uZpbp+zcueoH29mparEGYdK7F1x79lSZPuZgSXtSGxQshBDSAhk/v+xJw/sbjmJvilHGT78Q/OOiKPQO9bGZDsUlJ09WcevsR3lWVvWDHRzgEh1dIUx668RJ9+6w97C8WB1L2hOrC5bFixfj1VdfRVpaGvr374+3334bsbGxZo/du3cvnn76aSQmJuLEiRN44403cP/995sc88wzz2D+/Pkm27p3744DBywriEQIIa2BguIyFZvy4cZjJhk/U4fqMn7CO7o3vkLs1q3w2rED+QEB9SoFL88tPn7c1K2zf7/ZDsVwcoJL1xgTt46LiBPXxtd60Ze0b0ilW9K2qbdg+eqrrzBnzhy89957GDZsGBYtWoRJkybh4MGDCAwMrHZ8fn4+oqKicP311+OBBx6ocdzevXtjzZo1lSdmQYMpQghpLRk/ku0jWT/GGT8z4jpjepxpxo81KsRKTlDKf75Eeg0VYlV34qPHDO4ctRw4AC0/v9q4ds7OcOnRA669ehqsJ1LW3t658edcEyJOPIaZ/xFM2i/1VgULFy7EzJkzcdttt6l1ES7Lly/Hxx9/jLlz51Y7fujQoWoRzO03nIijI4KDgy06h6KiIrXoyc7WmVRLSkrUYk3041l7XNIwOB+2Beejdk6dz8fSTSfwzfZkQ8ZPJ1833DkyEtcMDDNk/DT2+yV3zRqkzXmwhgqx96HwgTmw9/ZSTQCL9u1D8aHD0Iy+Q/XYubnCpXsPuPTsCRexmvTsCeeoLrBzcjI5TmrLlvE70SL4N1I79fns10uwFBcXK9fOY489Zthmb2+P8ePHIz4+Ho3h8OHDCA0NhaurK+Li4rBgwQJERESYPVb2VXUhCatWrYK7e+NMqjWxevXqJhmXNAzOh23B+TDldB6wNtkef521g1ZRvq2Th4ZxoeXo75cDh7N7sG7NHutc/PJydHnpZThq+lcyQtNUIbmzCxdWe1qZiwuKQkNRFBaGwrAwFIWFojggQL7UKw86ekS3kEbDvxHziBemSQRLZmYmysrKEBQUZLJd1hsTbyKupWXLlqm4ldTUVCVGRo8ejT179sDLTDS5CCZxSxlbWMLDwzFx4kR4e3vD2upPPmgTJkyAU5VfGaT54XzYFpwP0+yZzcfO4cONx1WpfD2jYvwwc1RnxEV1tFrGT3leHoqPHUPxkaPI27QJeeaCYCvQv6Jzz55wHz7MYDlR/XWs3J2YVId/I7Wj95BYgk0Eilx66aWGf/fr108JmMjISHz99de44447qh3v4uKilqqIoGgqUdGUY5P6w/mwLdrzfEjGz6+S8fP7UexJ1n35SvmTK/qFqoyfPmENz/gpy81D8dEjKDpyFEVHjqBI/ftIjcXXasP/jjtYIbYFac9/I7VRn2tSL8Hi7+8PBwcHnDlzxmS7rFsaf2IJHTp0QLdu3XDkCE2RhBDbzfj5JlGX8XPqnC7jx9XJHtOGRtQ746csNxfFRytEyWERJrp/l6bWLEwcAvzhEh0De09PFcNSF6wQS1o79RIszs7OGDx4MNauXYurr75abSsvL1frs2fPttpJ5ebm4ujRo7j11lutNiYhhFiD8yrj5wQ+iT+usn8EX3cnzBghGT+dVfZPrcJERMkRY6vJ0bqFSUyMEifqsav8OxoOHToY0pFZIZa0B+rtEpLYkRkzZmDIkCGq9oqkNefl5RmyhqZPn46wsDAVGKsP1N23b5/h38nJydixYwc8PT0RExOjtj/00EOYMmWKcgOlpKRg3rx5ypJz4403oiVpTE0DQkjrQf2t11H349S5fHz0RxK+2noKBSVlhowfcftcPzjcpMdPWU6OEiPKamJsMamlG7G8rogRZ70wiYk2ESY1IefJCrGkPVBvwTJ16lRkZGSoYnBSOG7AgAFYsWKFIRD35MmTKnNIjwiQgQMHGtZfe+01tYwZMwbr169X206fPq3EydmzZxEQEIBRo0bhzz//VP9uKepT04AQ0npRf+svvKjrYVOBY1AQgp54XP2t703Jwge/H8PPu1JRVtHkp3eoN/5vTDQmRXqgLOkYCv+3Fdl6i4kIkypuc2McAwOVGHHWW030FhOfhse6sEIsaQ/YaRLa3gaijH18fJCVlWWVLCH5Aku+7/5qNQ2kL4YQ9uYiipYWjLj/5ZdfcNlllzGAzQZo7fMhf+un/3mf+rdx/k55xfp/r5qNf9l1hkdxASJyzmCcex4uccmFX2aysp7ULUxi4CyWEmUx6QqX6KhGCRNLLEXZW7YgcfVqDJ4wgVZhG6C1/43Y0v3bJrKEbAn5gxfLSjWxonZqSrTIfikdTfcQIa37b/3E/OchjpyqycZiI5ZvgCk/vYcxTm7wL8ox2W9cOUKsMWIhUe4cQ6xJNBysXGLBEuQ7yX3oUORkZKhHfkeRtgQFSxWUH7sWP7OIFtl/8vbb4dq7D5xCQuAUEgzHYN2jQ0fr1VoghFiX8uJiFeAq3YZzNv4Bx7MZNR4rf8XO5aUGsaKEibKUGFlNoltGmBDSHqFgqYIE3VlC/pYEtVTFzsUFjsFBcBIBExwMx5BgOIWEVoga+XdIja3VWzKgkJC2JkiKk5PVY0lySsVjMkrT081bT2uh4OY70P/+/2v2v1tCiCkULFUviIWBvh1uvFE1/yqRL8e0NPUlWZqZqfpzlJw4qZaakLoJBqtMFVGj1oODrdL1tGrwsOE9MniYtNIsOmsIEjtXV9iHhOJ0kR1CUo7W+ZqZUT0pVgixAShYqiDWB7mhq2A6c198dnbKNBz85BPVvpy14mKUpKfrvlDT0lCSKksKSuWxQtSUZWWpdu0q1fFwzYXxxLWkEzM6UeMUGmKw0KjtgYGwq6OjdU3Bw7qGaPcDDB4mNpZFpwRJSkp1MZKSYrkgcXODU1gonEJD4RQWBuewMPUoS5a3Pz7acx6fJ5xCYVEJlq18AX6FWSpmpdq5iFhx6wCviuathJCWhYLFijUNpA27c6dOaqmJ8vz8CjGTqr7sq4oaWaTFe9m5c2pBRQ2batjbK9FisNCoGJoQw78dAwNw5sUXGTxMrE5jhHCNgkRvIRGXrKWCpIoY0S8Ovr7V4sikhsp7G47im207UVym65rcM8QH/x56LR7Y+LESJ/ZmsoS+HnYd3oppufIKhJBKKFiauaaBvbs7XKKi1GIOyTIvz8oyFTUplW4ntV2sPyUlap86vx0NOJGK4OHsFSvgdcklsHdza/B7Iu0HS7Lo0p57XokKneumiiARC0kdNESQ1MSR9By8u+4o/rczxVBDZXCkL2aPjcHF3QOwcm9XvFBUhv/b9QMCCisbCIpl5YO+V+HW2TfBQRoDEUJaHAqWGhBRIqnLzV3TQL6IpbKlLK49epg9RisvV/Ey5i00qaoxmqXBwykPPqR7XTc3OPh2gKNvR+WOcuzoCwf5t68vHDr6wrGj/Fu/3Rf23t7Nng3VVioPt6YgaK2kBGXZ2cqVKUtewtY6s+jKMjJweuY/mkWQ1MSe5CwsXncEK/amGbTV6K7+uGdsDIZ1qczkm9wnBHhkBub+bzD8ju1Dx6IcnHPxwtmoXnj6qj66/YQQm4CCpRXWNJCW8E7iDgoMhFu/fmaPyd20CafuuLPuweQ9lZVBKyhAqSyWdoF1dDQROCb/1gucDkZip0OHOmNu2kPl4ZYIglZWu9xclGWJ8LigLHhKhFyoeJRt+nX9Pom1kiXfuOKI5UimnGv3HhUiJNTqgqQmEpLOKaGy4VClYJ/YK0gJlf7h5kvciyiZ0CsYCUmDkJ5TiEAvV8R26UjLCiE2BgVLG8Vj+HCLgoej16yGVlioi5k5fx6lKnbmPMrOn0Opejyv9pVWPMp6eV4eUFqKsoxMtViKVPjUWWwqRI2x2Kmw4FRac3wNmVJtJXi4se9D4j/KLlSIiwqLh0GEmAgQ3T4lTGTJyVGitDGIRU1VaHVwQMnx43UeH/ryK/AYFovmQATZ74czsfi3I0g4fk5tEy/Olf1DcffYGHQLqjsdWdw+cdF+zXC2hJCGQsHSzoOH7cXq4ekJB09PICLCorHLi4oqhYxe1CiBYyR21P4KkZOVpXMVVNxAYcENT52mu7uyzNQYiFmxLfWJJ1F84qTOgmOns0Cpf8ijfl3es525dTvYyd2tlnW5+ymLgGHceqyrcXTXP23+/Nrfx+NPID9xO8pzclCWnYXyKhYPEZaNQdJ5HSqEh72PPHYwrDt08DGIEgdv3brhWC8vg3XRljoDl5drWLUvDYvXHcXuZF38ibODPa4d3Al3jYlCpJ9Hk58DIaT5oGBpwzRV8LC9iwvsJcU6ONii4+UmJ5aB6hYcsdhcqLDgVGyXf1+4oIKKJVuq1AKXhNzgM15/Ha0dcduc/+ST2g+yt1dCoprgMIgQM4JD1n28rVLbxxY6A5eWlePHnSl4d/1RHEnPVdvcnBxw07AIzBwdhWAf69QwIoTYFhQs7SR4uCWDPOW1HP381OJSn5iLc+eQ9dPPyHznnTqf4zZ4kIqPgGSCyE1UK1fj1LheXg4NpuvSPUYzXtc03XPqtS6PqLaufz914XHxGLgPHFQhQvTWEJ0gUf/28KiwILUcLdUZuLCkDN9tP63Sk0+dK1DbvFwdMSOuM24b2Rl+npZ8ugghrRUKlnaACIbmiiewWqaUl5daJNjZEgL+eZ9Nv8e8LQk4OWNGncf53Xa7Tb+PlsiiyysqxX8STuKD348hPadIbfPzcMbto7rg1rhIeLuyAy4h7QEKFtImKg83R8xEY2gr76M5s+iy8kvwSfxxLN2UhPP5JWpbiI8r/nFRFKYNjYCbs21k7RFCmgcKFmLT2ELMhDVoK++jOcjIKcJHfyThsz9PILeoVG3r7OeOWRdH428DO8HZsWVdYoSQloGChdg8LRUzYW3ayvtoKpIvFOCDDUfx5dZTKCrVlc/vEeylUpMv6xMMRwcKFULaMxQspFXQUpWH22IQtK1xLCNXBdL+d3sySivK50uRNymfP65HIOxZGp8QQsFCWhO2Wnm4rQdBNxX7U7NVVdpfdqeqZC1hRLSfqkorj83d+oEQYtvQwkIIaVa2nzyvqtKuPVDZCFEsKfdcEoNBEb6cDUKIWShYCCFNjtSr2Xz0LN757Qjij51V28SAcnnfENx9cQx6hXpzFgghtULBQghpUqGyZn+6cv3sOHVB96Vjb4drBoXhrjHRiArw5NUnhFgEBQshpEGUlWvYknQOiZl28Es6h7iYQEOHY9m3fHcq3l13BAfSctQ2F0d73BgbgZkXRSGsgxuvOiGkXlCwEELqzYo9qZj/0z6kZklDRgd8enibKur2+GU9kV9ciiXrj+L4WV0fKE8XR9wyPBJ3jOqCAC+WzyeENAwKFkJIvcXKrM+2q5ZJxoh4ufc/fxnWO7g74faRXVSvHx93ls8nhDQOChZCiMWIq0csK2aaCxgQr9DcS3vg5mGR8HDhVwwhxDqwdCQhxGISks5VuIFqRmqq9A3rQLFCCLEqFCyEEIs5eS7PouPSc2oXNYQQUl9oryWE1ElOYQk+jT+Bd9cfsehqBXq58qoSQqwKBQshpE6h8uHGY7iQX6K2SeqyxLKYQ5Kag31cEdulI68qIcSqULAQQiwSKlEBHrhvXFc42dvjni+2q23GskXf+WfelF6GeiyEEGItKFgIIRYJlSv6hRqEyBL7QUZ1WHSIZUXEyuQ+IbyihBCrQ8FCCEFuUSk+2Xy8TqGiR0TJhF7BiD+SjlUbt2Di6GEmlW4JIW2HsvIybE/fjoz8DAS4B2BQ4CA42Ds0+3lQsBDSjqmvUDFG9g3r0hFn92vqkWKFkLbHmhNr8FLCSziTf8awLcg9CHNj52J85PhmPRcKFkLaIWaFir8H/jmuK6b0r12oEELaj1iZs34OtCqlItPz09X2hRcvbFbRQsFCSDuCQoUQYqkbSCwrVcWKINvsYIeXE17G2PCxzeYeomAhpB1AoUIIqQ8Ss2LsBjInWtLy09RxQ4OHwmYr3S5evBidO3eGq6srhg0bhoSEhBqP3bt3L6699lp1vJ2dHRYtWtToMQkhlgsVKfY2+uXf8OrKg8r9I66fRVMHYPWcMbh6YBjdP4QQhaZpOHbhGD7d+ykWbFkAS5BA3Oai3haWr776CnPmzMF7772nhIUIkEmTJuHgwYMIDAysdnx+fj6ioqJw/fXX44EHHrDKmISQuoXKp/HH8eHvx3CeMSqEkBrIKc7BltQt+CP5D2xO2YzUvFTUB8kaslnBsnDhQsycORO33XabWheRsXz5cnz88ceYO3duteOHDh2qFsHc/oaMSQipn1C5d1wMpvQLhaMD24cR0p4p18px4NwBbErepETKzoydKNPKDPud7Z0xJHgI4kLisGzvMpwrPGc2jkViWCRbSFKcbVKwFBcXIzExEY899phhm729PcaPH4/4+PgGnUBDxiwqKlKLnuzsbPVYUlKiFmuiH8/a45KGwfmoWah8vuUUPtp03CBUOvu5Y/bFUbi8b7ASKlp5GUrKK7+YrAHnw/bgnNgWtjAf5wvPIz41HptTN+PPtD+VCDGms3dnJVBGhIxQAsTN0U1tD3YPxiMbH1HixFi0yLrw4OAHUV5WrpaGUp/rUi/BkpmZibKyMgQFBZlsl/UDBw7UZ6hGjblgwQLMnz+/2vZVq1bB3d0dTcHq1aubZFzSMDgfOorKgI1pdvgtxR55pbovkQBXDZM6lWOQfzYcUnZgVUrTf8o4H7YH56T9zkeZVoZTZadwpOQIDpceRkpZiongcIYzoh2j0dWpK2IcY9DRviNwBsg6k4V1WGcy1jT3aVhesBzZms4wIHjbeeMyt8tQtLsIv+z+pVHnKmEjbTpLSKwxEvNibGEJDw/HxIkT4e3tbdXXEvUnH7QJEybAycnJqmMTzkdDySsqxWd1WFSaA/592B6ck/Y5H2l5aQYrypa0LcgtyTXZ3923u7KgyNLPvx+cHCw7l8twGeaUz8FfGX8hsyAT/m7+GBgw0GqpzHoPidUFi7+/PxwcHHDmjGmqk6wHBwfXZ6hGjeni4qKWqsiHoak+EE05Nqk/7XU+RKhIr58Pfj9qECpdJEblkhhc2b/lYlTa63zYMpyTtj0fRWVF2H5mu4pF2ZSyCUcuHDHZ7+Pio8TJyLCRGBE6olHBsU5wQlynOCuctZmx63FN6iVYnJ2dMXjwYKxduxZXX3212lZeXq7WZ8+eXf8zbaIxCWlr2KpQIYQ0X8rxyZyTKlBWRMrWtK0oLKtsPmpvZ4++/n2VQBkVOgq9/Hq1SL+fpqTeLiFxxcyYMQNDhgxBbGysSkHOy8szZPhMnz4dYWFhKs5EH1S7b98+w7+Tk5OxY8cOeHp6IiYmxqIxCWnPQuXff4pQOYZzecVqG4UKIe2DvJI8JKQmKAvKpuRNOJ172mR/oFsgRoTprCgSNCtWlbZMvQXL1KlTkZGRgaeffhppaWkYMGAAVqxYYQiaPXnypMry0ZOSkoKBAwca1l977TW1jBkzBuvXr7doTELaG+aEisSoSK8fWlQIaT3l7bed2YadxTsReCYQsaGxtVo9xIpy6Pwhg0CRKrKl5aWG/Y72jhgcOFgJFFm6duiqCrK2FxoUdCuumprcNXoRokeq18okNGZMQtoSZeUaEpLOIT2nEIFerog16nRck1C595KuuGoAXT+EtNYux9+s/cZsl+OsoizEp8QbCrdlFJhWju3k2QmjwkapRUrguzs1TSZsa6BVZgkR0lpZsScV83/ah9SsSt9ziI8rHp3cA2nZhRQqhLSDLsf/HPRPlJSV4I+UP7Anc48q5qZHaqCIMBkZOlKJlAjviBZ4B7YJBQshzShWZn22vVrNSBEv93+1w7BOiwohbbfLsfDm9jdNtsd0iFHiRLJ5BgUNgotD9SxYQsFCSLO5gcSyUptzVNxCL13TF38bGMasH0LaaJdjPYODBuPK6CuVSAn2aFhZkPYGLSyENAMSs2LsBqpJ1HTydadYIaQVcjJbl3L8w5EfLDr+hm434LKoy5r8vNoSFCyENAOpFwosOk4CcQkhrT/l2Ja6HLcVKFgIaUJKy8rx/V/JeHmFZb22JGuIEGJ7SLbrwfMHDdk8f6X/VS3leGDgQFUP5fP9n9tUl+O2AgULIU1AebmGn3enYtHqQziWmae2SeZyeQ1BLJLUHOyjS3EmhNgGIjok5VgEilhRzhaerZZyrGqihI5EbEgsPJw81PYuPl1UNlBNXY4fjX20zVWhbQ4oWAix8q+wVfvO4I3Vh3AgLUdt83V3wqyLoxHk7Yr7v9RlAxnrFn3Zp3lTpJR2+ykCRYitIRaTXRm7DFaUfWclUF4zSTmODY41iJSaUo6lzsrCixea1GERxLIiYsW4DguxHAoWQqwkVDYcysDC1Yew63SW2ubl6oh/jI7CbaO6wNNF96fm4mhfrQ6LWFZErEzuE8K5IKSZSclNUXEom5M348/UP813OQ4bofrzDAgcAGcHZ4vGFVEyNnwsElISsDp+NSbETaiz0i2pHQoWQhpJ/NGzeH3VQWw7cV6tuzs74PaRXTBzdBR83E07kYoomdAruMZKt4SQpqWgtACJZxINXY6TspJM9ndw6YC40DhlQWlsl2MRJ0OChiDdOV09Uqw0DgoWQhrI9pPnlVDZdOSswXoyPS4Sd42Jhp9nzYWfRJzERfvxuhPSTNbPoxeOGrJ5RKwUlxdX/j3aOaBfQD8lUMTV07NjTwoLG4WChZB6sic5S7l+fjuQrtadHOxwY2wE7hkbo+JUCCEti/Tn2ZK6xSBSqhZyk0JteoEyLGQYvJ29W+xcieVQsBBiIYfO5Khg2l/3pBksJdcN6oR7x8Wogm+EEOuVt5eKsRn5GcolIynAtblT5Pi9Z/caBMruzN0m/Xmk1L24ZPTBspLF0566HLcVKFgIqYOkzDy8ueYQ/rczBdJ4XL7nruofivvGd0MXf10aIyGkabocC+a6HEsjQREnks0TnxqvrCrGRPtEq2BZEShSBt/VkdbP1g4FCyE1cPp8Pt5eewTfbj+tyuYLl/YJxgMTuqFbkBevGyHN2OX4gfUPYFb/WSgsLVRdjg+fP2xyjJeTF4aHDje4etifp+1BwUJIFc5kF2LxuiP4T8JJlJTpvjgv6RGIORO6oU+YD68XIS3U5XjJziUmRdj6+PdRmTzS6Vj+LdVmSduFs0tIBWdzi/DehqP4NP4Eikp1/u+RMX6YM6E7Bkf68joRYgNdjsWCclXMVRgeMhy+rvy7bE9QsJB2T1Z+CT7ceAwfb0pCfnGZuh4iUB6c2A0jov3b/fUhpClTjg+dP6Qqy/549EeLnnNl9JW4tMulnJR2CAULabfkFpVi6R9J+GDjMeQU6pqY9Q3zUUJlTLcAZhEQ0gRcKLyggmT15e8zCzLr9Xx2OW6/ULCQdkdBcRn+/edxLFl/FOfzS9S27kFemDOxGyb2CqJQIcTKsSmSZqxvICj/NtefR6rL/mvXv1SDQXY5JuagYCHthqLSMnyZcArvrDuCjJwitS3K3wP3T+iGK/qGwJ7l8QmxCvqUY6mLIt2Os4uzTfZ39e2qevNINs/AwIGG/jySvswux6QmKFhIm6ekrBzfJZ7GW2sPI6Wi6WAnXzfcN64r/jYwDI4O9i19ioS0aorLivFX+l9KpJhNOXb2Utk8+v48QR5BZsdhl2NSGxQspM0itVN+3JmMRWsO48TZfLUtyNsF917SFTcMCYezI4UKIQ3lVPYpJU5EpCSkJaimgsYpx339+xoKt9Un5Vjf5bg+lW5J+4CChbQ5yss1rNibpvr9HEnXtYr383DG3WNjcPOwCLg68YuPkPqSX5KPrWlbDcGyJ3NOmuz3c/VTLh6piRIXEocOrh0afJFFnAwNHspJIiZQsJA2lSIpDQlfX3UI+1J1PnMfNyf835gozIjrDA8XftwJqc/f0+ELhw2xKNvPbEdJuS5IXXC0c8TAoIGGyrLdfLvB3o5WS9J08BuctCoXz5akc0jMtINf0jnExQSqBoTyxbrpyFm8tuogdpy6oI71dHHEHaO64I7RXeDt6tTSp05Iq0D68UjK8eZkXUZPeoGuI7meMM8wZUGROBTpcuzhxF5apPmgYCGtghV7UjH/p31IVUGzDvj08DaE+LgqF8/Gw5lKyAiuTvb4+4gu+L+LouDrocs8IKQ9pRBvO7MNO4t3IvBMIGJDY+vscrzv7D5DLErVLseuDq4YEjxEiRSxpER6RzLtn7QYFCykVYiVWZ9tr9ZhRMTLa6sOqX87O9jj5uERmHVxNAK92JWVtD+qdjn+Zu03ZrscSyCrvibK5tTNZrsci4tHFuly7OLg0uzvhRBzULAQm3cDiWWleju0StydHbDy/osQ3tG9Gc+MkNbR5Vi23z3gbpXFIyLl4PmDJsd4Onmqom36tOMQz5BmPntCLIOChdg0CUnnKtxANSP9f06fL6BgIe0SS7ocL96x2GR7b7/ehi7HfQP6wsmecV7E9qFgITbNthO62JS6SM+pXdQQ0t67HEt3Y+lyLCnHfm5+zXJuhFgTChZik/x18ryqTLvuYIZFxzNuhbQnJDPuePZxVRPlh8M/WPScv8X8DZdFXdbk50ZIU0HBQmyKxBPnVGVayfwRpL2Pi6M9CkoqMxeMsQMQ7OOK2C4dm/lMCWn+wm1bUreomigiVJJzk+v1fHY5Jq0dChZiM7Eqb649pOqpCFJf5dpBYbj74hgcSMtWWUKCVkWsCPOm9FLHE9JmC7clb0JieiJKy0sN+yXuZFDQIBUo+8neT3Cu8By7HJM2DQULadEv5PhjZ5Xr589julgVR3s7XD+kkxIq+qyfzv4eWHLLIKM6LDrEsiJiZXIfZjWQtoF0NRYrilhQZJEsH3OF20aHjVal692ddH8j4V7h7HJM2jwULKTZ0VemFaGScFwnVJwc7FRDQqmj0sm3enqyiJIJvYIRfyQdqzZuwcTRwwyVbglprUiRtgPnDui6HCf/gZ0ZO1GmlRn2Sw0UESZ1FW5jl2PSHqBgIc0qVH4/nKmESuKJ84aCb9Niw3HXmGiEdnCr9fkiToZ16Yiz+zX1SLFCWiMXCi/oCrel6Fw9Zwt1blA9nb07K4EiixRuc3V0rVeX44SUBKyOX40JcRPqrHRLSGuCgoU0i1BZfzADb649bOj1I4G0N8ZGKKEirh1C2nKdlL1n9yoLir78vXHNFDdHN9WXR9w8Uhulk1enBr+WiJMhQUOQ7pyuHilWCNq7YFm8eDFeffVVpKWloX///nj77bcRGxtb4/HffPMNnnrqKRw/fhxdu3bFyy+/jMsuq0yv+/vf/45PPvnE5DmTJk3CihUrGnJ6xIaEytr96Xjrt8PYdTrL0Ovn5mGRqtdPoDeFCmmbZBZkKivKH6f/MFv+vqtvV4wK1VlRBgYOhJMDC7cRYnXB8tVXX2HOnDl47733MGzYMCxatEiJi4MHDyIwMLDa8Zs3b8aNN96IBQsW4IorrsAXX3yBq6++Gtu3b0efPn0Mx02ePBlLly41rLu4sH9Fa6W8XMOqfWfw9m+HsTclW21zc3LArXGRmDk6CgFenFvStpDsHYk/0cei7D+332S/l5MXhocON3Q6DvYIbrFzJaTdCJaFCxdi5syZuO2229S6CJfly5fj448/xty5c6sd/+abbyox8vDDD6v15557DqtXr8Y777yjnmssUIKDLfsjLioqUoue7GzdTbGkpEQt1kQ/nrXHbatCZeW+M3h3/TEcOJOrtnk4O+CWYRG4bWQk/Cq6JzfmWnI+bIu2Mh/itvkr4y9lGfF388fAgIF1ulOkuqxYUcSCsiVtC3JLdJ95PT18e6hA2REhI9DXvy8c7Su/bpvyerWVOWkrcD5qpz6f03oJluLiYiQmJuKxxx4zbLO3t8f48eMRHx9v9jmyXSwyxohF5ocfTKszrl+/XllofH19cckll+D555+Hn5/58tFirZk/f3617atWrYK7e9M0wBORRcxTrgE7ztph5Wl7pBXoMhhcHDSMCdZwcUgpPEoPY8uGw5yPNkxr/vvYW7wXywuWI1vT/fARvO28cbnb5ejt3NuwrVQrxYnSEzhcehiHSw7jTLlpOXx3O3fEOMagq1NXdHXsCk/NE0gGUpNTIf81N615TtoinA/z5Ofno0kES2ZmJsrKyhAUFGSyXdYPHDhg9jkS52LueNmuRyww11xzDbp06YKjR4/i8ccfx6WXXqrEjoND9V85IpiMRZBYWMLDwzFx4kR4e3vD2upPPmgTJkyAkxP9zFU7KS/fnYZ3NxzD0Yw8tc3L1REzhkdgRlwkOrhb/3pxPmyL1j4fa0+txZcbv6xWcC1Hy8GX+V9ibq+5qkKhWFISziSojsd67GCHPn59dF2OQ0aiZ8eeNhHk2trnpK3B+agdvYek1WQJTZs2zfDvvn37ol+/foiOjlZWl3HjxlU7XtxH5mJc5I+zqf5Am3Ls1kZpWTl+3JmCd347gmOZOqHi7eqIO0ZF4e8jO8PHremvE+fDtmiN8yFuoNcSX6u1y/GCbQtMtvu5+mFk2EgViyJNBDu4doCt0hrnpC3D+TBPfT6j9RIs/v7+yuJx5oypKVTWa4o/ke31OV6IiopSr3XkyBGzgoW0DCVl5fj+r2QsXncEJ87qzHhiRZFA2ulxkfBy5ZcjaXtdjrt26KqaBko8SveO3WFvZ98s50cIaYRgcXZ2xuDBg7F27VqV6SOUl5er9dmzZ5t9TlxcnNp///33G7aJuVK218Tp06dx9uxZhISw5LotUFxajv9uP43F64/g1DmdSbyjh7MSKpL54+liE4Y6QixuIrg1bSs+2/+ZRcff2fdOdjkmxAao951GYkdmzJiBIUOGqNorktacl5dnyBqaPn06wsLCVGCscN9992HMmDF4/fXXcfnll+PLL7/Etm3b8MEHH6j9ubm5KoD22muvVVYXiWF55JFHEBMTo4JzSctRVFqGbxNP4911R5F8QSdU/D2d8Y+LolQtFQ8KFdJK6gEdyzpm6M+TeCYRJeWWZyawyzEhrVSwTJ06FRkZGXj66adV4OyAAQNUgTd9YO3JkydV5pCeESNGqNorTz75pAqmlcJxkiGkr8EiLqZdu3apwnEXLlxAaGioCp6V9GfWYmkZCkvK8M22U1iy/ihSKpoNSu2U/6sQKm7OLR9YSEht5Bbn6poIpuiqy6bmpVZrIijBsqtPrMaFIl315apIUG2QexAGBQ7ixSbEBmiQLV/cPzW5gCRQtirXX3+9Wszh5uaGlStXNuQ0SBMIlS8TTuK9DceQlq0TKkHeLqp8vpTRd3WiUCG2a0U5dP6QwYqyI32HSkPW42zvXNlEMGyk6tcjTQRFtMxZr8s4NA6+FbEiPBr7qE1k/hBCbCRLiDR9+nFC0jmk5xQi0MsVsVUaBxYUl+ELJVSOIiNHV5AvxMdVdU6WDsoUKsQWyS7ORnxKvLKgyJJekG6yXzobS6CsiJQhwUNUz56qsMsxIa0HCpY2zoo9qZj/0z6kVrh29GJk3pReuKhbAD778wQ++P0YMnOL1b6wDm64e2w0rhvcCS6O/GVJbIdyrVyVvNeXv9+VsQtlWplhvwgSvRVF+vSEe4fXq8uxZA1l5GeomBVxA9GyQohtQcHSxsXKrM+2V6sykZZViLs+266ye3KLdGbzTr5umD02BtcM6gRnR6ZtEtvgfOF5ZUVRnY5TNuFc4TmT/VE+UQY3z+CgwXBxaFifKhEnInYIIbYLBUsbdgOJZaV6SSzx1esQsRLR0Q2zL+mKvw0Mg5MDhQpp+WJue8/u1QmU5E3YnbnbJLbE3dEdw0OGG4q3hXqGtuj5EkKaDwqWNorErBi7gWrixb/1xaiuAc1yToSYQxoOSul7ESliTamatdPNt5sSKKPDRmNAwAA4ObBAISHtEQqWNkpqRd2Uujibp4tdIaS5KC0vVZaTjac3KpEicSnGeDl5YXjocCVQJIsnyMO0FxkhpH1CwdLGOJqRi6+2nlLpyZYgWUOENNR9s+3MNuws3onAM4GIDY2tMVA1PT/dECwbnxqPnOIck/3SOFAFy4aNQr+AfnC051cTIcQUfiu0kfopv+xOxZcJp5BwvDIoUTKXy80Fsag6E0Cwjy7FmZD6subEGryU8JKhF883a79RRdbmxs5VWTclZSXYkbHDUBdFaqQY4+PigxEhIzCq0yhlRfF38+ckEEJqhYKlFbMvJRtfbj2pGhLmFJYaRMolPQIxdWgEikvLMPuLv9R2Y92ir8Aiqc3G9VgIsVSsSLG1ql2ORbw8sP4B9PHrg6TsJOSV5Bl95uzQx7+PIaNHjmHaMCGkPlCwtDIks+fHHSlKqOw6nWXYLmnJU4eE4/oh4cpyokcESdU6LLJfxMrkPmwuServBhLLSlWxYsyes3vUY0fXjqpwmwgUsaL4uvrychNCGgwFSyspO/7XqQsqLuXnXanIL9YVy3JysMPEXsGYFhuOkdH+sDdjLRFRMqFXcK2VbgmxtHDb94e/N7iBauOp4U/hum7Xwd6OqfKEEOtAwWLDXMgvxn+3J6sg2oNnKoMUowI8cOPQCFwzKAx+nnUXyhJxEhft18RnS9oiaXlpKtVYli1pW6oVbqsJTydPihVCiFWhYLFBa0r8sbNKpPy6Jw3FpeVqu4ujPS7vF6KaEA6J9FWN2wixNhJ3sjVtq06kpMYjKSvJZL+LvQuKynX9pmpDytsTQog1oWCxEcRd812iWFNO4vjZfMP2XiHeuDE2HFcOCIOPGwtmEevXRJHKsnorivTnMe5yLC4dCZCNC41TS2+/3rji+ytUmrK5OBYJrpVsIenFQwgh1oSCpYXL5/9+KEMF0K7dn47Sihxk6fFz5YBQ5fbpE+ZNawqxKqdyTpm4earWROnk2UkFyYpAkf46koJsjKQuS5aQiBNj0SLrwqOxjzIDiBBidShYWoDkCwX4euspfLPtFFKMsncGRXTAtNgIXN43BB4unBpiHbKKspCQlmAQKadzT5vs93L2wrDgYQYrSrhX7V2Opc7KwosXmtRhEcSyImJF9hNCiLXhXbGZKCkrx9r9Z/CfhFP4/XAGtIofph3cnXDNwE6YOjQc3YO9mut0SBtGirbtzNipYlD+TPlTpRlLho8eRztH9A/sj7iQSjdPfWuiiCgZGz4WCSkJWB2/GhPiJtRa6ZYQQhoLBUsTk5SZp1w+3yWeRmZuZd+eEdF+SqRM6h0MVyd+yZPGBWpLcKwIFLGgSNBsfmllHJQQ5ROls6CExGFI8BB4OHk0+pKLOBkSNATpzunqkWKFENKUULA0Uan8FXvS8J+Ek9iSVJkG6u/pguuHdFIF3jr7N/6GQdovkl4s1hO9SKlaG8XXxVc1ENRbUYI9glvsXAkhxBpQsFiRA2nZqp+PlMrPKihR26Q+25huASo2RUrmOzmwkFZ7R6rFbk/fjoz8DJX+Kxk1dVknisqKsP3MdoObp2qHY2d7ZwwKGmSwonTv2J11UAghbQoKljqyeMRCkphpB7+kc4iLCaxWITavqBQ/7ZRS+aew49QFw/awDm64QZXK74TQDm5NN4OkVTcNFIybBhq7eaRhoL4eSuKZRCVajOnm202XzRMSp8SKqyM7bxNC2i4ULDWwYk+qUQ8eB3x6eBtCKnrwSNzJztNZqmaK9PXJqyiV72hvhwm9gpQ1ZVSMP8vfE4uaBkpNE9k+L24eHO0dDW6eqlVlA90CdW6e0DgMDxnODseEkHYFBUsNYmXWZ9urlcVKyyrEXZ9tR1gHVyRfqExHjvL3UAG01w7upOJUCKlP00D9tmfinzHZ7ubopoJZ9W6e6A7RrMlDCGm3ULCYcQOJZcVcL1r9NhErzg52uLxfKKYNDVfNBFkqn9SGxKxY0jSws3dnTIicoERK/4D+cHZw5oUlhBAKlupIV2OdG6h23r15MMb3CuKHiNRY8v7IhSPYkb4DOzJ2YHPyZouu1Kz+s3BZ1GW8qoQQUgVaWMz09LGEvOLKfiuESDVZ6cMj4kSKtu3O2F2tFoolsGkgIYSYh4KlCoFerlY9jrQ9JIPnePZxZT0RcSKPR7OOVjvO08kT/QL6YUDAAPQN6It5m+YhoyCDTQMJIaQBULBUQeJRJBtIAmzNxbFIUnOwj6s6jrQP8kvyVUdjg0DJ2KEsKlWJ9I5UcSeyDAgcgGifaJP6Ko8Ne4xNAwkhpIFQsFRB6qxI6rJkCYk4MRYt+gossr9qPRbSdqwnaXlpSpTo408OnjuIMk2Xuq7HxcFF9eARYSIWFLGk+Ln51To2mwYSQkjDoWAxw+Q+IVhyyyCjOiw6xLIiYkX2k7bTKFCqxupdOyJQpC5KVQLdA5Uw0QuUHh17wMnBqd6vp28aWN9Kt4QQ0t6hYKkBESUTegUj/kg6Vm3cgomjh5mtdEuat5bJtjPbsLN4JwLPBDaoO/DZgrMGt87O9J3K1VO1gqyDnYMSJHpxIo/W7MUj5zw0eKjVxiOEkPYABUstiDgZ1qUjzu7X1CPFiu2UtP9m7TdmS9pXFTgSDGscHHsy52S143xcfAzCROJPxNXj7uTe5O+JEEKI5VCwkFZf0n7hxQuVaMkpzlHpxPr4k92Zu5FbklttvJgOMYbAWBEqEizLwn+EEGLbULCQVl/S/vE/HsfiHYtx9MLRase5O7qrlGK9BaWvf19lUSGEENK6oGAhrb6kfUFpgaoqK3Ty7IT+gf0NAkWsKdJQkBBCSOuG3+TEZhDhcTzruIo7OXbhGI5lHVOxJ5Zwa89bcXvf29nBmBBC2igULKTZyS3OVWJELReOKYEi7pyU3BSzrh9LGBsxlmKFEELaMA0SLIsXL8arr76KtLQ09O/fH2+//TZiY2NrPP6bb77BU089hePHj6Nr1654+eWXcdlll5kU65o3bx4+/PBDXLhwASNHjsSSJUvUsaT1cqHwghIlxhYTESa1uXg6uHRAlE8UojtEq8fOPp3x1KanVDqyOTFjBzuVLSS1TAghhLRd6i1YvvrqK8yZMwfvvfcehg0bhkWLFmHSpEk4ePAgAgMDqx2/efNm3HjjjViwYAGuuOIKfPHFF7j66quxfft29OnTRx3zyiuv4K233sInn3yCLl26KHEjY+7btw+uruzZY8uI2DxbeFYJEb0g0T+eKzxX4/MC3AIQ1SFKJ058otW/RaR0dK3e8uCJYU+wpD0hhLRz7DS549QDESlDhw7FO++8o9bLy8sRHh6Oe++9F3Pnzq12/NSpU5GXl4eff/7ZsG348OEYMGCAEj3y8qGhoXjwwQfx0EMPqf1ZWVkICgrCsmXLMG3atDrPKTs7Gz4+Pup53t7esCYlJSX45ZdflEXIyan+lU1tJdOmsZVVZZ7EMiJCRC9K9MIkuzi7xueFeoSiS4cuSpTorSZdfLrUO1Onah0WIdg9GI/GPlpjHRbS9LSFv4+2BufEtuB8WO/+XS8LS3FxMRITE/HYY48Zttnb22P8+PGIj483+xzZLhYZY8R68sMPP6h/JyUlKdeSjKFHTl6EkTzXnGApKipSi/Eb1n8wZLEm+vGsPW5zsfbUWrya+KpJuXkpM//w4IcxLnycWXGTkpeixEhSdhKSspIM/84vzTf7GvZ29gjzCFNiRAkS7y46d4535xoLsNX3eo4JHYNRV47C1tStWLd1HcYOHYuhIUOV8Gqtc9MWaO1/H20Rzoltwfmonfp8d9RLsGRmZqKsrExZP4yR9QMHDph9jogRc8fLdv1+/baajqmKuJfmz59fbfuqVavg7t40FUpXr16N1sbe4r34T/5/qm0X8fLwxodxmetl8LH3QXp5OjLKMpBelo7M8kyUotTsePawh7+9PwIcAhBgH4BAh0C1+Nn7wcnOCciDbkkBjlf81xT0d+6PczvPYeXOlU0yPmkffx9tHc6JbcH5ME9+vvkfwm0mS0gsPMZWG7GwiFtq4sSJVnUJibXB3C96W6ZcK0deSR7OF53HwlULaz32l8JfzG6XTsSRXpGVFhOfLspqEu4VDid7pxZX4/KHP2HCBLogbADOh+3BObEtOB+1o/eQWF2w+Pv7w8HBAWfOmGZ5yHpwsPnmcLK9tuP1j7ItJKSyC7KsS5yLOVxcXNRSFfGhW8uPXq13zYa6e9dYUyhJSfnsomwVH5JVnKUe9ev6f0speuN1eZTniWixFHHb9AvoZ4gvkViTUM9Qmxdm1pxr0ng4H7YH58S24HyYpz7f4/USLM7Ozhg8eDDWrl2rMn30QbeyPnv2bLPPiYuLU/vvv/9+wzb5hSzbBckKEtEix+gFiiiuLVu2YNasWbDl3jW1UVpeWquwMLtuJDoai7hoSrS6fYOz+s/CZVGVKeaEEEKILVJvl5C4YmbMmIEhQ4ao2iuS1ixZQLfddpvaP336dISFhak4E+G+++7DmDFj8Prrr+Pyyy/Hl19+iW3btuGDDz5Q+6XpnIiZ559/XtVd0ac1S+aQXhTZWu+apzc/jcPnD+usIDWIkJoCVOuDm6MbvJ294e3irXvULy7e8HL2MqxLxo3xPnmUCrG3r7y9zteQrCFCCCGkzQkWSVPOyMjA008/rYJixSqyYsUKQ9DsyZMnVeaQnhEjRqjaK08++SQef/xxJUokQ0hfg0V45JFHlOj5xz/+oQrHjRo1So3ZEjVYLOldIxaTd3e+a9F4Hk4e1cSE2fUqIkQWJ4eGuzwkdVlcWGIVYsE1QgghrZ0GBd2K+6cmF9D69eurbbv++uvVUhNiZXn22WfV0tJIrRJLiA2ORW+/3rWKEE9nzxZrvCcxKBJvIy4sqQZrLFpkXZAaJrYeq0IIIYS02iyhpsRSF8ld/e/C0OChsGUkzkbibaoWXBPLCwuuEUIIaU1QsLRxV4qIlrHhYxtd6ZYQQghpSShY2oErRc7V1q1BhBBCSG1URseSaq4UKWFvjFhWLElpJoQQQoh1oYWlDldKQkoCVsevxoS4CYgNjW1VlhVCCCGkrUDBUgsiToYEDUG6c7p6pFghhBBCWga6hAghhBBi81CwEEIIIcTmoWAhhBBCiM1DwUIIIYQQm4eChRBCCCE2DwULIYQQQmweChZCCCGE2DwULIQQQgixeShYCCGEEGLztIlKt5qma1CYnZ1t9bFLSkqQn5+vxnZycrL6+ITz0Zrh34ftwTmxLTgftaO/b+vv421esOTk5KjH8PDwlj4VQgghhDTgPu7j41PrMXaaJbLGxikvL0dKSgq8vLxgZ2dndfUnQujUqVPw9va26tiE89Ha4d+H7cE5sS04H7UjEkTESmhoKOzt7du+hUXeZKdOnZr0NUSsULDYDpwP24LzYXtwTmwLzkfN1GVZ0cOgW0IIIYTYPBQshBBCCLF5KFjqwMXFBfPmzVOPpOXhfNgWnA/bg3NiW3A+rEebCLolhBBCSNuGFhZCCCGE2DwULIQQQgixeShYCCGEEGLzULAQQgghxOahYKmDxYsXo3PnznB1dcWwYcOQkJDQPDNDTFiwYAGGDh2qqhkHBgbi6quvxsGDB3mVbISXXnpJVZm+//77W/pU2i3Jycm45ZZb4OfnBzc3N/Tt2xfbtm1r6dNql5SVleGpp55Cly5d1FxER0fjueees6hfDqkZCpZa+OqrrzBnzhyV1rx9+3b0798fkyZNQnp6em1PI03Ahg0bcM899+DPP//E6tWrVUOxiRMnIi8vj9e7hdm6dSvef/999OvXr6VPpd1y/vx5jBw5UjVo/fXXX7Fv3z68/vrr8PX1belTa5e8/PLLWLJkCd555x3s379frb/yyit4++23W/rUWjVMa64FsajIr3r50Ol7FklfoXvvvRdz585trjkiZsjIyFCWFhEyF110Ea9RC5Gbm4tBgwbh3XffxfPPP48BAwZg0aJFnI9mRr6PNm3ahI0bN/La2wBXXHEFgoKC8NFHHxm2XXvttcra8tlnn7XoubVmaGGpgeLiYiQmJmL8+PGVF8veXq3Hx8c31/yQGsjKylKPHTt25DVqQcTqdfnll5v8nZDm58cff8SQIUNw/fXXKyE/cOBAfPjhh5yKFmLEiBFYu3YtDh06pNZ37tyJP/74A5deeinnpBG0ieaHTUFmZqbyQ4pKNkbWDxw40GLnRXSWLomVEBN4nz59eElaiC+//FK5SsUlRFqWY8eOKReEuLAff/xxNSf//Oc/4ezsjBkzZnB6WsDiJV2ae/ToAQcHB3UveeGFF3DzzTdzLhoBBQtplb/q9+zZo36xkJbh1KlTuO+++1Q8kQSkk5YX8WJhefHFF9W6WFjkb+S9996jYGkBvv76a3z++ef44osv0Lt3b+zYsUP9yAoNDeV8NAIKlhrw9/dXyvjMmTMm22U9ODi4MdecNILZs2fj559/xu+//45OnTrxWrYQ4i6V4HOJX9EjvyJlXiTmq6ioSP39kOYhJCQEvXr1MtnWs2dPfPfdd5yCFuDhhx9WVpZp06apdcnYOnHihMp2pMWr4TCGpQbElDp48GDlhzT+FSPrcXFxjbjkpCFIOqCIle+//x6//fabShckLce4ceOwe/du9ctRv8gvfDF5y78pVpoXcY9WTfOX+InIyMhmPhMi5Ofnq5hHY+RvQu4hpOHQwlIL4g8WNSxfxLGxsSr7QdJob7vttkZcctJQN5CYV//3v/+pWixpaWlqu4+Pj4q8J82LzEHV+CEPDw9VA4RxRc3PAw88oAI9xSV0ww03qHpRH3zwgVpI8zNlyhQVsxIREaFcQn/99RcWLlyI22+/ndPRGKRbM6mZt99+W4uIiNCcnZ212NhY7c8//+TlagHko2puWbp0KefDRhgzZox23333tfRptFt++uknrU+fPpqLi4vWo0cP7YMPPmjpU2q3ZGdnq78FuXe4urpqUVFR2hNPPKEVFRW19Km1aliHhRBCCCE2D2NYCCGEEGLzULAQQgghxOahYCGEEEKIzUPBQgghhBCbh4KFEEIIITYPBQshhBBCbB4KFkIIIYTYPBQshBBCCLF5KFgIIW2G9evXw87ODhcuXGjpUyGEWBkKFkIIIYTYPBQshBBCCLF5KFgIIVajvLwcCxYsQJcuXVQX7f79++Pbb781cdcsX74c/fr1g6urK4YPH449e/aYjPHdd9+pDrcuLi7o3LkzXn/9dZP9RUVFePTRRxEeHq6OiYmJwUcffWRyTGJiouqy7u7urroYHzx40LBv586dGDt2rOo47e3tjcGDB2Pbtm38FBBi41CwEEKshoiVTz/9FO+99x727t2LBx54ALfccgs2bNhgOObhhx9WImTr1q0ICAjAlClTUFJSYhAaN9xwA6ZNm4bdu3fjmWeewVNPPYVly5YZnj99+nT85z//wVtvvYX9+/fj/fffh6enp8l5PPHEE+o1RIg4Ojri9ttvN+y7+eab0alTJ/X68npz586Fk5MTPwWE2Dot3S6aENI2KCws1Nzd3bXNmzebbL/jjju0G2+8UVu3bp0mXzlffvmlYd/Zs2c1Nzc37auvvlLrN910kzZhwgST5z/88MNar1691L8PHjyoxli9erXZc9C/xpo1awzbli9frrYVFBSodS8vL23ZsmVWfOeEkOaAFhZCiFU4cuQI8vPzMWHCBGXx0C9icTl69KjhuLi4OMO/O3bsiO7duytLiSCPI0eONBlX1g8fPoyysjLs2LEDDg4OGDNmTK3nIi4nPSEhIeoxPT1dPc6ZMwd33nknxo8fj5deesnk3AghtgsFCyHEKuTm5qpHiVERYaFf9u3bZ4hjaSwSF2MJxi4eiZvRx9cI4mYSd9Xll1+O3377Db169cL3339vlfMjhDQdFCyEEKsgN34Jgj158qQKhDVeJEBWz59//mn49/nz53Ho0CH07NlTrcvjpk2bTMaV9W7duinLSt++fZXwMI6JaQgynsTXrFq1Ctdccw2WLl3aqPEIIU2PYzO8BiGkHSBZNw899JASAiIqRo0ahaysLCU4JBsnMjJSHffss8/Cz88PQUFBKjjW398fV199tdr34IMPYujQoXjuuecwdepUxMfH45133sG7776r9kvW0IwZM1QQrQTdShbSiRMnlLtHgnXroqCgQAX9XnfddSqT6fTp0yr49tprr23iq0MIaTTNEilDCGkXlJeXa4sWLdK6d++uOTk5aQEBAdqkSZO0DRs2GAJif/rpJ613796as7OzFhsbq+3cudNkjG+//VYF2crzIyIitFdffdVkvwTPPvDAA1pISIgaIyYmRvv444/VPv1rnD9/3nD8X3/9pbYlJSVpRUVF2rRp07Tw8HD13NDQUG327NmGgFxCiO1iJ/9rvOwhhJDakTosUv9E3EAdOnTg5SKE1AvGsBBCCCHE5qFgIYQQQojNQ5cQIYQQQmweWlgIIYQQYvNQsBBCCCHE5qFgIYQQQojNQ8FCCCGEEJuHgoUQQgghNg8FCyGEEEJsHgoWQgghhNg8FCyEEEIIga3z/wmUgaQKqlsxAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_stats = pd.DataFrame(weights_stats)\n",
"df_stats.index.name = \"epochs\"\n",
"df_stats.filter(regex=\"outputs\").plot(marker=\"o\", grid=True)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "b8bf7703",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"len(train_loader_mini_batch)=69 len(test_loader)=1\n"
]
}
],
"source": [
"# Mini batch GD\n",
"batch_size = 1000\n",
"train_loader_mini_batch = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)\n",
"test_loader = DataLoader(test_dataset, batch_size=len(test_dataset), shuffle=False)\n",
"print(f\"{len(train_loader_mini_batch)=} {len(test_loader)=}\")"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "e2342923",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 0/10 - train_loss: 1.6634 train_acc: 0.5183 - test_loss: 1.0035 test_acc: 0.7630\n",
"Epoch 5/10 - train_loss: 0.3682 train_acc: 0.8969 - test_loss: 0.3561 test_acc: 0.8990\n",
"Epoch 9/10 - train_loss: 0.3177 train_acc: 0.9099 - test_loss: 0.3038 test_acc: 0.9110\n"
]
}
],
"source": [
"model = SimpleNN()\n",
"optimizer = optim.SGD(model.parameters(), lr=0.1)\n",
"weights_stats = torch_training_loop(model, optimizer, train_loader=train_loader_mini_batch, n_epochs=10, verbose=5, show_tensors=False)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "151185f5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: xlabel='epochs'>"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGwCAYAAAD16iy9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAddlJREFUeJzt3Qd4U/X+BvA36d57UCh7742Iol4Ft+BEceDC60BxoaB/GS7cggPcoOK8KG4RUBmyt2xkyCiUDrp3k/N/vr80IWnTNi1pM/p+7nNukpOTk5Mc7HnzmzpN0zQQEREROYHeGTshIiIiYrAgIiIip2KJBRERETkNgwURERE5DYMFEREROQ2DBRERETkNgwURERE5jS8amdFoxLFjxxAWFgadTtfYb09ERET1IMNe5eXlISkpCXq93n2ChYSK5OTkxn5bIiIicoIjR46gRYsW7hMspKTCfGDh4eFO229ZWRkWLVqE4cOHw8/Pz2n7JZ4Pb8H/RtwLz4d74fmoXW5urioYMF/H3SZYmKs/JFQ4O1gEBwerfTJYuB7Ph/vhOXEvPB/uhefDcbU1Y2DjTSIiInIaBgsiIiJyGgYLIiIicppGb2PhaJfU0tLSOteP+fr6ori4GAaDocGOjbz3fEjbHB8fH1cfBhGRR3O7YCGB4uDBgypc1LV/bWJiouptwvExXM9Tz0dkZKQ6bk86ZiIid+Lrbhej48ePq1+N0qWlpgE4KpMgkp+fj9DQ0Dq9jhqGp50P+bdXWFiItLQ09bhZs2auPiQiIo/kVsGivLxc/XGXUb2k62h9qk8CAwM94kLm7TzxfAQFBalbCRfx8fGsFiEiqge3+otvrov39/d39aFQE2UOtNJGhIiIPDxYmLF+m/hvj4jIM7lVVQgRERHVj2YwoHDDRpSnp8M3Lg7B/ftB54KebgwWREREHi530SKceH46ylNTLet8ExOR8MQkhA8f3qjH4pZVIafLYNSwen8mvt+Som7lcUP3KLjrrrsQHR2tqnG2bNnSoO9HRERkHSpSxj9oEypE+YkTar0835i8Llgs3J6Ks178Aze8vwbjv9yibuXxwu3HG+49Fy7E3Llz8dNPP6nust27d69x++eeew5nnnmmaigo4ya4ggSg7777rkH23bp1a8ycObNB9k1ERLbVH1JSAc3OD+iKdfK8bNdYvKoq5Pc9mXh0wW5U/npTc4pxz7xNmH1TX1zU3fnjE+zfv1+NeyBhwRHSDfPaa6/F4MGD8eGHHzr9eIiIyHto5eUoz8xEeXoGytPTVBsK81K8958qJRW2L9bU89L2ImTQwEY5Xr3bD1pUWu7QkldchhcXH6gSKtR+Km6n/rBTbefI/uS9HXHrrbfi/vvvx+HDh1UpgPxalzEcXnrpJbRv3x4BAQFo2bKlKqUwmzZtGh566CH06NGjXt/LsmXLMHDgQLVvCTQTJ05UY4CYyTHMmDHD5jW9e/fG1KlTLc+LK6+80nLM6vuZOlVt9+6776oByqRE5brrrkNOTo5lP+eeey4efPBBm32PHDlSfQ/m5w8dOoSHH34YUVFRlrEgZN3ll1+u1oWEhKBbt2745Zdfqv2Mn376Kfr374+wsDA1Eubo0aMtg1fJ99uiRQvMnj3b5jWbN29WY2bIe4ndu3fjrLPOUmNpdO3aFUuWLGnQkhoi8uBGj+vXI2zLFnXbWL/ujcXFKD1yBIWbNiF34W84+ek8pL32Oo498SQOj70LB0Zeib1DzsLuHj2x75xz8e811+DoPfcidfIUZLz5FrK//ArFmzY59F4SQhqLW5dYFJUZ0HXyb07Zl8SE1Nxi9JjqWF3TzqcvRLB/7V+PFPm3a9cO7733HtavX68upJMmTcL777+P119/XV3YpHpELnLOkJKSgksuuURdyD/55BO137Fjx6qLpzk41EaOUwaAmjNnDi666CKbgaD27duHr7/+Gj/++CNyc3Nxxx134N5778Vnn33m0L6//fZb9OrVSx3TqFGjVDAQ9913nyqpWb58uQoWO3fuVKNyVkfGkXjmmWfQqVMnFSgkqMhnljAi4eGGG27A559/jnvuucfyGjnGIUOGoFWrVmpMFAk8EurWrl2LvLw8PPLIIw59BiJqmo0epTz72BdfIu00Gj1qmgZjbq5NqYKppCG9ymLMz3d8xz4+8I2JUb09fGNj4Rsfp+4bCgqQ9fEntb5ctm0sbh0sPEFERIS6eMrFWX5ZywVMwsZbb72FMWPGqG0keEjAcIZZs2ap0gTZv/z67ty5M44dO4bHH38ckydPdmiUy7iKf2DmeTGsyaRhEliaN2+uHr/55pu49NJL8eqrr1bZ1h5pwCrfhXwnCQkJCA8PV+ulROfqq6+2lNK0bdu2xv3cfvvtlvuy7RtvvIEBAwZYhgm/8cYb1THJfiU8SCnGl19+if/7v/9Tr1m8eLGqolq6dKnluKXUaNiwYbV+BiJqWo0eK7dPMDd6xMwZlnAhpRim6oh0GDLsBIW0dJRXrNfqMImmLiDAFBbsLrGW+z5RUXa7jspx5f22SB2z3XYWOh18ExJU19PG4tbBIsjPR5UcOGLN/gzc/vHGWrebe9sADGwT7dB718euXbtQUlKC888/v16vd2T/0jbDehAx+ZUuF9yjR4+qi+zpkNebQ4WQ95KL9p49exwKFtV54IEHVOnCokWLcMEFF6iQ0bNnz2q337hxoyqB2bp1K7KysiyT0kmQkGoNqbLp0qWLKrWQqiCpHpKSDWm7IuR4JYBZH7NUHxEROdro8diEx5A+e7YKEobMk1IP6/CXpw8PrxoUpKTBfL+ixEEfGnpag0JK2JDSFRWEZD/Wn6div/J8Y45n4dbBQr5sR6ojxNkd4pAQ5o+0vFK77Szk602MCFTb+eh1DT7fhCtJqUXlNiLOGqK6vvu+8847ceGFF+Lnn39W4WL69OmqxEHap1RWUFCgtpVFqjekhEUChTyW6hQzKbUwBwu5lWqdmJgYp3xOIvLuxpBZ87+pudGjbFdSgtJdVtXYej18YqLtBwXLEg/f2BjoAwPRWFSpyswZVcexSEhwyTgWbh0s6kLCwmMXtFW9QiQ2WF/6zDFiyuVdGzRUiA4dOqhw8fvvv6uLqbPJr/RvvvlGXdzNKXflypWq6kEaNAq5EEu7DjNpKyFT0Vvz8/OzzM1iTS7gUrUiE8GJNWvWqDAhbR3s7Vv2sX37dpx33nmWdTLXi719SwnC3XffrRZzOxR7wULajWRmZuKFF15QrxEbNmyosp006JSqDyndmD9/Pt555x3Lc3K8MmX7iRMnVJWMuW0JETU9WlkZirZvR+H6DSjcsB5FGzfBWFDg0Guj77gD4ZdcbAoNMTEuGcnSERIews4/3y1G3nTrXiF1dX6nGLw9uo8qmbAmjxuqq2ll0ohS2js89thjqq2C1PPLxdm6W6lcvGUQLbmVC7Dcl0WqM2ojDSnlgikXZLkAf//995gyZYpq3GhuX/Gf//xH9apYsWIFtm3bptp6WDfQFNITRMJPamqqqmqwPn7ZXqog5PVShSE9Q8xVCrJvKXWQRd5fqjeys7Or7FsaaUpAycjIUOukJ8lvv/2mAs6mTZvw559/qpBkJm1FFixYYKmOkXAi7TsOHDiAH374QTXkrEzeR7r4SgNT+R6vuOIKy3PSlkLatshn+fvvv1X4Mre/4Fw0RN7NWFqqendkzJ6Nw7ffjj0DB+HQDaOR/tprKFi+QoUKnYOly6FDhyKoWzf4xce7bagwk+OTLqURl12qbl11vF5TYmF2UfdEXNi9GdYdPIm0vGLEhwWqNhUNXVJh7amnnoKvr69qTCkXV+kSKr/SzWT9xx9/bHncp08fdSsXW+muWRNp/yA9IyZMmKB6X0hjSbmwmi+aQkoD5AJ+2WWXqcalclGuXGIh1RASRqTUQPb577//qvXSRfaqq65SPU9Onjyp9iENRq0bVUrouOWWW9RnlG6z1qUV4umnn8Z///tf9O3bV7U3kdIVufBLzxBpByINOqXaQnrNmEmbCHO3VikVkQHHnnjiCdVoU/bzyiuv2AQH6+oQCVtyPNbVUBKkpFuplBpJo09pAPryyy+rLq8SnojIexiLilC0dSsK161XgULuV25A6RMRgaAB/REyYACCBwyAf/v22D/8Qrdq9OgtdJqjAzY4iRTLy8VOLiLmHgPWPRLkAtimTZs6//GXxn2yb9mnIz0jqCppLCkXY2cMSe6O50NKLaR3jnSpldIMe07n36C7k7YwEkolNEpVGPF8eCpDfgGKNm9WIUIFie3b5R+4zTY+MTEqQAQP6K9uA9q3h67S3yJLrxBhp9Fjc6teIYQar99eXWJBZCZVK9I1Vdq9SJgYP3686kFTXaggcsmATHFxCB80yO2L2V3JkJuLwo0bK9pIbEDxjh3SwMtmG1W6UFEaoUok2rSutdrT3Ro9egsGCzcjVSbz5s2z+9xNN91k00CRaiZjikh7F2nLEhsbq7q5ShUQkTcNyOSNyrOyVIBQJRIbNqBEemZUKlz3a97cKkj0h19ycr3aT5kbPeauXYuNixej37BhDHqniVUhbkbGYpDiJnuk6ElGzPQE7lgV4ghWhZArBmRq6kXvMrCUChIVbSRK/vmnyjb+rVrZtJHwq+i55iysKqwdq0I8lAQHTwkPROTEAZl0OvW8/Hr2lGoRVaVTj+6NZSdOWEKELKWVGpcL/3btLO0jgvsPgF8C/y56ClaFEBE1AnUBdmAWyv1XXAH/ZknwCQ+DPizcdBseDh/zfbmNCIdephJQ68Og8/d3aZWOmW81VTqlR1MsIUKWsiNHbHem0yGgY8dTVRv9+6kxI8gzMVgQETUw6XyXv2K5Q9uW7T+glrrQBQaqkKEPD1MBRN2GR6jQUWWdVWBRr5EhpX19nTrHRvmTT0IX4I+iDRtQsH49yo+dGlRP0esR2KWLKUQMHIDgvn3hExlZp2Mg98VgQUTUgCM+5i5ciMwPPkTJnj0OvSb2wfHwS0yEMTdP9YYw5uXCIPfzck+ty82FIS8Pxrw80/sUF6O8uFgaadXrOPUhIRWlIhVho+K+ZZ0qITGFEV1IKFKnPV3jHBsnnn3Wdr2vrxpkSoWI/v0RJEGiYuZj8j4MFkRETmYsLET2/G9wcu5clB07ptapkR51OmiFhfZfVDEgU+zYsQ63sZA2DjL1tgoZEjZU8MhRgUPuW0KJrFPhxLydKZiYj0VGopSl3Gq4/tPl37Ejwv5znqlUondvFV6oaWCwICJyYjfJrHmfIeuzz2CoGOpeBmqKvvlmRN1wPQrWrq1xQKa6zkIp28qIkrLUt0TFkJ8PY06OChqmEhKrUhE7JSWlx4/D4EDJSOxdd6mhpanp8c5gYTQAh1YB+SeA0ASg1ZmA3qdB609lCGuZCEvm3di8ebOa1ptca+nSpWq4cTknkay/pQZUevQoTs6Zi2yZIFCqJGSchZYtEXP7bYgYOdIy06W7Dcik8/ODb1QUIIuDCtauw+ExY2rdTnqJUNPkfcFi14/AbxOBXFPxoxKeBFz0ItC16lwTzrBw4UI1t4VcyGROChmMqSbPPfecmsRLhs6WybYqT+LVGGQgGRmZcuTIkU7ft0wOJqNc3nbbbWgIMp+KBLcZM2Y0yP6JHFW8a5dqPyHtKMwjQQZ264aYsXcibNgwu6UPnj4gk+qxkZjIOTaoaQQLv32/QvfTPZUmTZcmzMeBr28BrvukQcKFzGAqE43JTJuOKC0txbXXXovBgwfbzHpKRO5PSigL165F5vsfoGDlSsv6kCFDEHPnHQg+44xaR4CUECFtD/LS09Wtp4QKIccqpSuqSkc+pxOqdMi7uPeQiPIPtrTAsaU4F0F/Tq0aKkw7Mt0sfFxt59D+HJyb7dZbb1VTmMuw0fLHRH6ty6iTL730kpopNCAgQE0DLqUUZtOmTVOzgvbo0aNeX8uyZcswcOBAtW8JNBMnTkR5ebnleTmGyr/m5Re+TDJmfl5ceeWVlmMW8rxs9+677yI5ORnBwcFqynTzrKPm0gKZAt2alHrI92B+/tChQ2rm1KioKMt07bJOZhaVdSEhIejWrZuaEKs6MqOqzPEhE4ElJCTgmmuusXzf8vlnzpypjl0W88yssr+OHTuqWU6lCsS8nsgZpKFk7sLf8O+11+HwrbeZQoVej/BLLkGbb79Byw8/QMjgwfUaVtrTSKmLjBIqVTjW5HFTHT2UPKXEoqwQeD7JSQlJM1WPvJDs2Hs/cQzwr70Vs1zgZFKr9957D+vXr1cXUpm2XKYjl2nBZTbN48ePY/fu3XCGlJQUNTulXGA/+eQTtd+xY8eqC7A5ONRGjlNG95wzZ46avtx88RcyWdfXX3+NH3/8UQ3fKlOyy7Tkn332mUP7/vbbb9V07nJMo0aNQlhFlzKZMl1KapYvX66Cxc6dO9UEYfZs2LABDzzwAD799FNVCiTTt69YscLyfe/duxfdu3dX07Obp1k/cuSImu5d3ueuu+5S+3jkkUccOmaimhhLSpCz4DtkzvkIZYcOq3W6gABEXn01om+7Ff7JDv5N8TLmKp36jLxJ3s29g4UHkClk5eIpF+fExEQ18ZVc/N566y2MqWjgJMFDAoYzyC95KU2Q/csvo86dO+PYsWNqsq3Jkyc7NC+HXIiFNGiUY648V4YElubNm6vHb775Ji699FI1eVflbe2Jjo5W34V8J1LSYJ5aV0p0rr76akspjbRFqY5sK+HjsssuU/tp1aoV+vTpY/m+pV2KlKZYH8/s2bPV92yeZKxTp07Ytm0bXnzxxVqPmcge6QWR9cWXOPnppzBkZKh1+ogIRN84GlE33QTf6Ogm/8VJiAgZNLDJfw/kScHCL9hUcuAA48G/oP/iuto3vHG+qZeII+9dD7t27UJJSQnOP//8er3ekf0PrlTcKlOB5+fn4+jRo6ra5XTI682hQsh7SdXOnj17HAoW1ZESiHvuuQeLFi1Ss4xKyOjZs6fdbYcNG6bChIQPKVGRRaptJEzU9L0MGjTIZp0cO1FdyTwWJ+d+jOyvvlLjUQjfZs0Qc9utqpSC4zEQeXIbC7l4SnWEI0u7/8AY2gwaqqvf1AHhzdV2Du2vnvWkUr/valJqIQ3MKs/c58p933nnnThw4ABuvvlmVZLQv39/VRpij5RSbNq0CV988YVqQyIlMVK94oreM9R0lOzfj2OTnsC+C4bh5Jw5KlQEdOiApBdfQPtFvyH6llsYKog8PljUhd4HRedOqXhQORRUPL7ohQYdz0JIg0MJF7///nuD7L9Lly5YvXq1zcV95cqV6mLcokULS1WHtOswk7YSByvNHujn5wdDRfe4ytUQUrVitmbNGhUmpGrB3r5lH9u3b7fZh1RV2Nu3VOHcfffdqh2GtH+QdijV8fX1VSUb0gj277//Vg0x//jjj2r3L9/LunXrbNbJsRPVpnDTZhy59z4cuPQy5CxYIElZDTud/O47aPPD94gYMUKN90BETS1YyC/n9hdDu/ZjILyZ7RMyjkUDdTWtTBpRSnuHxx57TLVVkK6ocoGz7lYqF28Zw0Ju5QIp92WR6ozaSENKaagoPVGk4eb333+PKVOmqF4Y5vYV//nPf1TDR2nwKKUD0tbDuoGmkJ4gEn5SU1PVAFLWxy/bb926Vb1eqjCkZ4i5GkT2LWNwyCLvL9UblUsSZN/SSFMCSkZF3bT0JPntt99UwJHSiD///FOFATNpKyLjaoiffvoJb7zxhvpOpDeJfI9SHWMON7L/tWvXqrAh+5fnJLD8888/mDBhgqq2+fzzz9XYIkT2aEYj8v74E/+OvhGHRo9GvoRWnQ5hwy5A6y+/QKt5nyL0nHOaRA8PIqfTGllOTo781Fa3lRUVFWk7d+5Ut3VlMBi0rKwsdasZyjXtwHJN+/t/plt53IBef/11rVWrVjbH8uyzz6p1fn5+WsuWLbXnn3/e8vyYMWPUd1B5+fPPPx16v6VLl2oDBgzQ/P39tcTERO3xxx/XysrKLM/Ldztq1CgtPDxcS05O1ubOnav16tVLmzJlimWbH374QWvfvr3m6+trOXZ5XrabNWuWlpSUpAUGBmrXXHONdvLkScvrSktLtXvuuUeLjo7W4uPjtenTp2sjRoxQn8ls9erVWs+ePbWAgAD1ucS4ceO0du3aqXVxcXHazTffrGVkZFheI9vNmTNH3V+xYoV2zjnnaFFRUVpQUJDa11dffWXZds+ePdoZZ5yhnpPXHTx4UK3/8ccf1WeS9zj77LO1jz76SD0v/y4cdTr/Bt2dnLvvvvtO3TZVxpISLevbBdq+Sy/VdnbqrJZd3XtoKU8+qRXvP9Cox8Lz4V54Pk7v+m1NJ/+HRiTF8tKyX8ZGMPcYsO6RIL9o27Rpo34514X8apV9yz4d6RlBVUl31e+++06VFJwuTz0fp/Nv0N1JWxgZ60O6K0tVWFNiyC9A9v/+h5Mff2wZSlumC4+6fhSibr4FfgnxjX5MTfl8uCOej9O7fntOrxAiotNQnpGBk5/OQ9YXX6gJtIRPXKxqiBl1/fWcupuoATBYuBlpKzBv3jy7z91000145513Gv2YiDxN6eHDyPzoI+R8uwBaaala59+6NaLvuF01xtT7+7v6EIm8FoOFm5HRJB999FG7z9VU9OSsqhBHR+8kctWw2jWN9Fi0fQcyP/gAeYsWSX2cWhfYqydi7rwTYf/5D0eFJGoEDBZuRobaloWIbOUuWlR1uvHERCRMmgR9aIgKFIWrT3UxDhl6tgoUapIv9u4gajQMFkTkEaFCzaZZqa25hIyU8eNPrfDxQfillyDmjjsQWNE9mYga12k113/hhRfUL4HKs10SETmz+kNKKmqbcTjyxhvVCJnNX3qJoYLIE4OFzJAp02tXN98DEZEzFKxZY1P9UdNsm35W89wQkQdVhcgIkTfeeKMakvnZZ5+tcVuZkEsW636w5j7DleeYkMcyrIaMgSBLXZiH4zC/nlzLU8+HHKscs/xbrDxaqacz//fmrHljGoohKwvFW7agaMtWFG/ZjOKtfzv0upLU4/B388/mieejqeD5qJ2j/1brNUCWDPks02O//vrrOPfcc9G7d2/MmDHD7rbSy2DatGlV1suQy5Vnq5T5IWToaJlTQuaDIGpspaWlash0Geq8vLycJ6ChaRr809IReOgQgg79i6B/D8G/Yhj4ujpy11gUtWvn9EMkIpPCwkKMHj3a+QNkffnll2quB6kKccSkSZPUPBbWJRYSHIYPH2535E35ox4aGlrnUQ8lH+Xl5anJuIyaEZvSNiGjKAOxQbHoG98XPg04+Zi8t4w/8c0336h5NzZu3KjCVlNmfT48qUW+/BuUSeSGDh3qlSNvLl68WE1L76qRHo1FRSjZsQNFW7aoUoniLVthzMmpsp1f27YI6t0Lgb37IKBnDxz7790wpKXZb2eh08E3IQHn3nuvR3UndYfzQTwfdWGucahNnYKFXPTHjx+v/mNw9I9uQECAWiqT/5Aq/8ckE3LJRUiGgK7rMNDm4vbfj/yOl9a/hBOFJyzPJQQnYOLAibig1QVoCL/++is+/vhjLF26FG3btkVsbGy1xy8TZz3zzDNqpk75VZyUlKQGvnryyScbrZRGjkGGrN68eXODBCA5hxKyZMIy8/n0FHKscsz2/n16i8b8bGVpaSjatBlFmzehcPMWFO/cCVQqCdIFBCCoRw8E9e2LoL59ENSrF3yjomy2SXzyCVOvEAmp1uGiIrQmPDEJ/h4aBL3535on4vmonqP/TusULOSXeFpaGvr27WsTBmQmy7feeku1pXBlvfSyY8vw1PqnoKk5vU5JK0zDw0sfxmvnvtYg4UJmMG3WrBnOPPPMWreVGUElBEnD1/bt26spx8eOHYuCggK88sorTj82osbsvVHyzz8o2rxZTUVetGkTylJSqmwnA1tJiAiWENGnDwI7d4aullAtDTMxc0bVcSwSElSoUM8TkVuo00/J888/X03DbZ7mW5b+/furhpxy39mhQorTC8sKHVrySvIwY9uMKqFC7afify+se0Ft58j+HG16cuutt6opzGUKdPmlK1N6S3B46aWXVHCQ0pqWLVviueeeU9tfdNFFmDNnjqoKktKNK664Qo20+e233zr8vUhpQLdu3dS+5f1effVVm+flOGQyMWuRkZGWacSltEL06dNHbSvtZMyfZeTIkapNTFxcnKqqkioeaXdgJu9XuT2NlHqYR+yU58XVV1+NqKgo9RmFTMN+3nnnqaoR2W+/fv2wYcOGaj/ja6+9hh49eiAkJERVncl08eZp5aU4TqorpKTImky7LvuXekCxatUqdWxSuib/TuU7kc/rjEnWyDSxV8GqVUh/620cvv0O7B04CAdHXonUaU8j98cfTaFCp0NA586IvOF6JL38EtotWYL2y5ehxcwZiB4zBkE9e9YaKswkPLT/fQlafvwxkl55Rd3KY4YKIvdSpxIL+aPdvXt3m3Xyhz8mJqbKemcoKi/CoM8HOW1/Uj1y5pe1lyqItaPXItjPtnGpPTNnzkS7du3w3nvvqXYnEq6kXYn0mJHGrWeddRaOHz+uSiqqIw1hpDGso6VG1113nbqQjxo1Sl085aIr50CCgSPWrVuHgQMHYsmSJSqgWFfB/P777+pCLNU6UmVy2223qX2bg1Ft5DuQkUM//PBDDBkyRAUaIeFTgszs2bPVdyQX95qK1aRK4o033lAh6MCBA+ozPvbYY5g1a5YKJpdddplqAHzxxRdbXvPZZ5+pYCSNgiV8XH755WrmSNnu0KFDHG/lNEjQLj92zFQSUVGtUbJnj2XYbMt5Cw5WbSOC+pyq1vAJDYWzSBuKkEEDnbY/InI+jrx5mmQKWQlccrGUHi3SYFHChlQNSe8ZIcFDAoY9+/btw5tvvulwNYj8kpeSo6eeeko97tixI3bu3ImXX37Z4WAhpRFCAoMcszUJGR999JG6OEvokLlLJkyYoNqFONJWwrxvCRQJCQmWBrpSoiP76dy5s3rcoUOHGvdjPeialIJIt2YpPZFgYQ4qN998syqdMAeJn3/+WZVaCAkTUjohAU+CUteuXZGSkqKqnZrsHBvr1yNsyxYUSmnUoEE1NnTUyspQvHu3TbVGuTSerMQvKcnUNqJPbwT37YuAjh09qgElEblhsJBftg0lyDdIlRw4YsPxDbjvz/tq3W7W+bPQL6GfQ+9dH7t27VJtTeTiXxu50EnVyLXXXuvwBU/2P2LECJt1UjIg1RPS3uV0q6N69epl0w148ODBqgpCGu62atWq3vuVnkF33nknPv30U1xwwQXqM0vgqo6UpkyfPl2V9EhokK6f0mPDHCSkJEJKPH744Qdcf/31qnpIQozsW+zZs0cN3mbdyFhKaZr6HBvNABz74kukyRwbVm0TDDk5qqeGOUQUbdsGrbjYdke+vgjs0sUSIqR9hF9Cgms+FBG5LbcusZBfnI5UR4jBSYMRFxiHjOIMu+0sdNCp3iFnJp3ZoF1Ppe7fEceOHVNtDqTBp1SjOPt7q9xGxFmD8EipRX32LVU30v9ZShWkbcSUKVNU1+Urr7yyyrZSBSNVHffcc4+qgpFqor/++gt33HGHau8hwUJKVq655hpVMiHBQm6lakjGQiEH59h4YDyyBg9GeXoaSvftr3quw8NNIcJcrdGjB/QO/vsmoqbLa/4KS1gY32O86hUiIcI6XMhj8fjAxxs0VJiL+CVcSFsF+YVeXUmFhAppwCgNOevSHbNLly5YuXKlzTp5LFUi5tIKqY6Qdh1m//zzj6VBozC3qZASjsqkkWVRUZElIK1Zs0aNKyINKO3tW0oTDh48aLMPKUmwt285Rlkeeugh3HDDDeqz2wsW0o5EGsBKo1Tzd/P1119X2U6qQ2QMgB07dqjuu9ajwHbq1Anz5s1TpUfm7s6Ojr3SlObYKFy92nLfv1Urm2oN/7ZtofOgrsJE5B686q/GOUnn4JVzXkF8sO2041JS0VBdTSuTovfHH39cNTT85JNPVFdUuThLY0ZzqJBeGNJTRNpVpKenq/EsZHHEI488okKLtHnYu3evGj9D2nNIzxIzGT9C1sk4FdLzQtomWDeUlMaVEhwWLlyIEydOqMajZlIiICUD0m7jl19+USUL48aNs1zgZd9SnbFixQrVQ0jakVSufpE2EXKhl33LgGESVGQfUm0mjSglCMlFXkKS+TuRthfSqFRIbxopBZG2J9JwU97vnXfeqfJdyCBW0kZEAoY08hw06FRDXykdkXBy1113qeqj3377zdKOxZMG7KoPrbwcRdu2I/Xppx2aYyN2/APosGol2v22EEnTn0fUddchoH17hgoiqh+tkeXk5MjPJ3VbWVFRkbZz5051W1cGg0HLyspSt+WGcm3d8XXaz/t/VrfyuCG9/vrrWqtWrWyO5dlnn1Xr/Pz8tJYtW2rPP/+8em7OnDnq89tbHDV//nyta9euln2//PLLNs+npKRow4cP10JCQrQOHTpov/zyixYREaHe2+z999/XkpOTNb1er51zzjlq3ZgxY7QRI0ZokydP1mJiYrTQ0FBt7NixWnFxseV1ct5GjRqlhYeHq9fPnTtX69WrlzZlyhTLNj/88IPWvn17zdfXV30HJSUl2vXXX6+29/f315KSkrRx48ZZzvPBgwfV5//zzz8t+3jttde0Zs2aaUFBQdqFF16offLJJ2obOcfWHnvsMbVejrmylStXaj179lTv2a9fP+3zzz9X2+7evbva7/Z0/g26irG8XCvctl3L+PAj7fBd/9V29+uv7ezU2eEl+8efXP0RmqTS0lLtu+++U7fkejwfp3f9tlavuUJOhxSdS08Ke2ONS+M8KVaXX591HU5Zfp3KvmWfnjTSozuRXiXZ2dlVxsCoD3c8H9IdVbrPyr+96trCnM6/wUYdiGrPHhSsXYfCdetQuGEDjHl5Ntvow8Lg366dGja7NjIeBLtwNj4plZNSQXNDZHItno/Tu357ZRsLosqkKkoG6GrevLlqOyJVVDIGiKMNbN2FZjSqICEhomDdetVt1FhpzH59aCiC+/dH8MCBCB40UI1mKfadfwHKT5yocY6N4P6195IiInIUg4WbkQGfpP2CPU888YRayDHSbmXy5MnqVoZcly6ujg705fIgIQ1u165FgZRIrN9QZaIufUgIgvr3Q8jAQSpMBHbpDJ2dHjHSpbS2OTY47gQRORODhZv54IMPVGNHexwdnbO+zEN+ewtp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SkpK1H8/1DiaNWuGrl272qzr0qULvvnmG54CF5kwYYIqtbj++uvVY+mlc+jQIdXDjcGiibaxkCLEfv36qToy618F8njw4MEuPbamSNoCS6hYsGAB/vjjD9WFi1zn/PPPx7Zt29SvMPMiv5ilmFfuM1Q0LqkWrNz9Wur2W7Vq1chHQmaFhYWqXZ41+e9CriPUREsshNRXSrKUP5gDBw5Urd2le+Ntt93m6kNrktUfUqT4/fffq7EsUlNT1fqIiAjVypoal5yDyu1bQkJC1BgKbPfS+B566CHVWFCqQq677jo13s57772nFnKNyy+/XLWpaNmypaoK2bx5M1577TXcfvvtPCX1pXmJN998U2vZsqXm7++vDRw4UFuzZo2rD6lJkn9S9pY5c+a4+tCowjnnnKONHz+e34eL/Pjjj1r37t21gIAArXPnztp7773Hc+FCubm56r8HuX4EBgZqbdu21Z588kmtpKSE56WevGIcCyIiInIPHt/GgoiIiNwHgwURERE5DYMFEREROQ2DBRERETkNgwURERE5DYMFEREROQ2DBRERETkNgwURERE5DYMFETW6pUuXQqfTITs7m98+kZdhsCAiIiKnYbAgIiIip2GwIGqCZEro6dOnq2ntZdbZXr16Yf78+TbVFD///DN69uyJwMBAnHHGGdi+fbvNPr755hs1G2RAQABat26NV1991eb5kpISPP7440hOTlbbtG/fHh9++KHNNhs3blSzEgcHB6tZP62nFN+6dSvOO+88NUNreHg4+vXrhw0bNjTo90JEp4/BgqgJklDxySef4J133sGOHTvUdN433XQTli1bZtlmwoQJKiysX78ecXFxanrpsrIySyCQab+vv/56bNu2DVOnTsVTTz2FuXPnWl5/yy234IsvvsAbb7yBXbt24d1330VoaKjNcTz55JPqPSQw+Pr62kxVfeONN6JFixbq/eX9Jk6cCD8/v0b5fojoNNR3WlQi8kzFxcVacHCwtmrVKpv1d9xxh3bDDTdof/75p5rq/ssvv7Q8l5mZqQUFBWlfffWVejx69Ght2LBhNq+fMGGC1rVrV3V/z549ah+LFy+2ewzm91iyZIll3c8//6zWFRUVqcdhYWHa3LlznfjJiagxsMSCqInZt28fCgsLMWzYMFWCYF6kBGP//v2W7QYPHmy5Hx0djU6dOqmSByG3Q4YMsdmvPP7nn39gMBiwZcsW+Pj44JxzzqnxWKSqxaxZs2bqNi0tTd0+/PDDuPPOO3HBBRfghRdesDk2InJfDBZETUx+fr66lTYUEgDMy86dOy3tLE6XtNtwhHXVhrTrMLf/EFK9ItU0l156Kf744w907doVCxYscMrxEVHDYbAgamLkAi2NKQ8fPqwaVFov0tDSbM2aNZb7WVlZ2Lt3L7p06aIey+3KlStt9iuPO3bsqEoqevTooQKCdZuN+pD9SfuPRYsW4aqrrsKcOXNOa39E1PB8G+E9iMiNSC+LRx99VF2w5eJ/1llnIScnRwUD6X3RqlUrtd3TTz+NmJgYJCQkqEaWsbGxGDlypHrukUcewYABA/DMM89g1KhRWL16Nd566y3MmjVLPS+9RMaMGaMaY0rjTel1cujQIVXNIY0+a1NUVKQaj15zzTWq58rRo0dVI86rr766gb8dIjptjdKSg4jcitFo1GbMmKF16tRJ8/Pz0+Li4rQLL7xQW7ZsmaVh5Y8//qh169ZN8/f31wYOHKht3brVZh/z589XjTXl9S1bttRefvllm+elEeZDDz2kNWvWTO2jffv22kcffaSeM79HVlaWZfvNmzerdQcPHtRKSkq066+/XktOTlavTUpK0saNG2dp2ElE7ksn/3f68YSIvIWMYyHjR0j1R2RkpKsPh4g8DNtYEBERkdMwWBAREZHTsCqEiIiInIYlFkREROQ0DBZERETkNAwWRERE5DQMFkREROQ0DBZERETkNAwWRERE5DQMFkREROQ0DBZEREQEZ/l/AC0NT30HeRkAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_stats = pd.DataFrame(weights_stats)\n",
"df_stats.index.name = \"epochs\"\n",
"df_stats.filter(regex=\"outputs\").plot(marker=\"o\", grid=True)"
]
},
{
"cell_type": "markdown",
"id": "00b1c343",
"metadata": {},
"source": [
"## 2.5. Batch Normalization (2015)"
]
},
{
"cell_type": "markdown",
"id": "3d09dd81",
"metadata": {},
"source": [
"https://arxiv.org/abs/1502.03167"
]
},
{
"attachments": {
"image.png": {
"image/png": "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GuqIpRu+gCKgjqGSzmq8ppKI6AzIXV43btyI2267DX/84x+Rnp4OSeHxBiM6PYGmQAQHhiIwIBQGvZ+ovPIjioiIqDvgJzYREXUJ4zKuwfTx92PGhAcxvPdFCDTyekoiIqLugKGSiIi6BIX8n0IJpVjkLnZERETUPTBUEhERERERUacxVBIREREREVGnMVQSERERERFRpzFUEhGdAaVSiYiICEycOBFjxoxBU4sFSoUK4DWBREREdI5gqCQiOgNqtRrJycm46aabMH36dFRXVQOSd8gZ3xbUUVVNhSip2+ddappKYHdafSVERETUlTFUEhGdAZVKheDgYPTr1w+9evVCS3MDJA/nqOyM7JIt2J6zVCxLUFCRBau9xVdCREREXRlDJRERdQl1dfU4fPgwysvLRThv9q0lIiKiro6hkoiIiIiIiDqNoZKIiIiIiIg6jaGSiIiIiIiIOo2hkojoDFmtVhQUFKL4UDFMahUUnE6EiIiIziEMlUREZ8But2PHjh3461//in//59+I7ZECSeGGJEm+LaijIiLCER4RgZDQMBgMfr61RERE1NUxVBIRnQGPx4Pm5mbk5+ehqKgIOoMBrXGSofJ09YkfjTF9r8C4/lejV8JQGPWBvhIiIiLqyhgqiYioSwjyi0JUUA/EhKQg2D8SGrXWV0JERERdGUMlERERERERdRpDJREREREREXUaQyURERERERF1GkMlEdEZUCqVMPn7IyUlBUmJibBbLGidUITTihAREdG5gaGSiOgMaDUa9O/XDw8//DDuu+8+lBUWQCFxrsrOsDqa0WypF0sdbA4zPB63r4SIiIi6MoZKIqIzoFAqERAUhIyMDPTu0wfNLs5R2VnrshZgwbpX8cWaV7A1ewmaRLgkIiKiro+hkoiIugSLxSIWs/en0+n0rSUiIqKujqGSziqSpQQ75j6F3188Cn2GXYGb//09yjy+QvoJEuyNRdiz+A08cuulOG9IX6Sn98egMdMw877nMHdjIaosPJj0y5EbeFsbednSS0RE1J0wVNJZw1ayGp+/9Bgee+5NzF21HTmFJSivboHLV06nZi/dhlXvP4mHHnwWH3y3Hgeq3NBolKjP24ylc1/Bo/c+gTe/24V8Myv8RERERHQMQyWdBZwoXTcLzz72JJ77cDOq3SFIiImCP/91d5yjGPs3LMS82YuwtzEYA6//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"
}
},
"cell_type": "markdown",
"id": "be65df4a",
"metadata": {},
"source": [
"![image.png](attachment:image.png)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"id": "3f513558",
"metadata": {},
"outputs": [],
"source": [
"import torch\n",
"import torch.nn as nn\n",
"\n",
"class CustomBatchNorm1d(nn.Module):\n",
" def __init__(self, num_features, eps=1e-5, momentum=0.1):\n",
" super(CustomBatchNorm1d, self).__init__()\n",
" self.num_features = num_features\n",
" self.eps = eps\n",
" self.momentum = momentum\n",
" \n",
" # Parâmetros Treináveis\n",
" self.gamma = nn.Parameter(torch.ones(num_features))\n",
" self.beta = nn.Parameter(torch.zeros(num_features))\n",
" \n",
" # Estatísticas para serem utilizadas apenas fora do treinamento\n",
" # Não passam pelo backprop\n",
" self.register_buffer('running_mean', torch.zeros(num_features))\n",
" self.register_buffer('running_var', torch.ones(num_features))\n",
" \n",
" def forward(self, x):\n",
" # x: (batch_size, num_features)\n",
" \n",
" if self.training:\n",
" # Calculate the mean and variance of the current mini-batch along the batch dimension (dim=0)\n",
" batch_mean = x.mean(dim=0)\n",
" batch_var = x.var(dim=0)\n",
" \n",
" # Update running statistics using Exponential Moving Average (EMA)\n",
" # We wrap this in torch.no_grad() because these updates shouldn't be part of the computational graph\n",
" with torch.no_grad():\n",
" self.running_mean = (1 - self.momentum) * self.running_mean + self.momentum * batch_mean\n",
" self.running_var = (1 - self.momentum) * self.running_var + self.momentum * batch_var\n",
" \n",
" # Normalize the input using the current batch statistics\n",
" x_hat = (x - batch_mean) / torch.sqrt(batch_var + self.eps)\n",
" \n",
" else:\n",
" # During evaluation (model.eval()), normalize using the historical running statistics\n",
" x_hat = (x - self.running_mean) / torch.sqrt(self.running_var + self.eps)\n",
" \n",
" # Apply the learnable scale and shift\n",
" out = self.gamma * x_hat + self.beta\n",
" \n",
" return out"
]
},
{
"cell_type": "code",
"execution_count": 71,
"id": "ef263a03",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Modelo com Batch Normalization:\n",
"SimpleNN_BatchNorm(\n",
" (fc1): Linear(in_features=784, out_features=12, bias=True)\n",
" (bn1): CustomBatchNorm1d()\n",
" (fc2): Linear(in_features=12, out_features=10, bias=True)\n",
")\n"
]
}
],
"source": [
"class SimpleNN_BatchNorm(nn.Module):\n",
" def __init__(self, input_dim=784, hidden_dim=12, output_dim=10):\n",
" super(SimpleNN_BatchNorm, self).__init__()\n",
" self.fc1 = nn.Linear(input_dim, hidden_dim)\n",
" # self.bn1 = nn.BatchNorm1d(hidden_dim)\n",
" self.bn1 = CustomBatchNorm1d(hidden_dim)\n",
" self.fc2 = nn.Linear(hidden_dim, output_dim)\n",
"\n",
" def forward(self, x):\n",
" x = self.fc1(x)\n",
" x = self.bn1(x) # BatchNorm após a primeira camada linear\n",
" x = F.relu(x)\n",
" x = self.fc2(x)\n",
" return x\n",
"\n",
"model_bn = SimpleNN_BatchNorm(input_dim=784, hidden_dim=12, output_dim=10).to(device)\n",
"print(\"Modelo com Batch Normalization:\")\n",
"print(model_bn)"
]
},
{
"cell_type": "code",
"execution_count": 72,
"id": "3c216f3a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1000, 784)"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 70,
"id": "21328b7a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 0/10 - train_loss: 1.2822 train_acc: 0.6540 - test_loss: 0.8310 test_acc: 0.7930\n",
"Epoch 9/10 - train_loss: 0.2529 train_acc: 0.9281 - test_loss: 0.2672 test_acc: 0.9190\n"
]
}
],
"source": [
"model_bn = SimpleNN_BatchNorm(input_dim=784, hidden_dim=12, output_dim=10)\n",
"optimizer = optim.SGD(model_bn.parameters(), lr=0.1)\n",
"weights_stats = torch_training_loop(model_bn, optimizer, train_loader=train_loader_mini_batch, n_epochs=10)"
]
},
{
"cell_type": "code",
"execution_count": 73,
"id": "e2bd4f65",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 0/10 - train_loss: 1.1992 train_acc: 0.7494 - test_loss: 0.6937 test_acc: 0.8700\n",
"Epoch 9/10 - train_loss: 0.2415 train_acc: 0.9330 - test_loss: 0.2556 test_acc: 0.9210\n"
]
}
],
"source": [
"model_bn = SimpleNN_BatchNorm(input_dim=784, hidden_dim=12, output_dim=10)\n",
"optimizer = optim.SGD(model_bn.parameters(), lr=0.1)\n",
"weights_stats = torch_training_loop(model_bn, optimizer, train_loader=train_loader_mini_batch, n_epochs=10)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"id": "e823f65f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"running_mean tensor([ 0.2044, -0.3692, -0.1635, -0.0545, -0.1219, -0.1469, -0.1589, -0.0195,\n",
" -0.2924, 0.2722, 0.0017, -0.1957])\n",
"running_var tensor([0.1115, 0.2171, 0.1624, 0.1721, 0.2141, 0.1598, 0.2815, 0.1296, 0.1138,\n",
" 0.2314, 0.1312, 0.1692])\n"
]
}
],
"source": [
"for n, b in model_bn.bn1.named_buffers():\n",
" print(n, b)"
]
},
{
"cell_type": "code",
"execution_count": 75,
"id": "58fb2d92",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"gamma Parameter containing:\n",
"tensor([1.6021, 2.0182, 1.9669, 1.9156, 2.0711, 1.9291, 2.2084, 1.8917, 1.7432,\n",
" 1.9146, 1.6519, 1.8905], requires_grad=True)\n",
"beta Parameter containing:\n",
"tensor([0.4459, 0.5081, 0.2808, 0.3648, 0.3598, 0.6231, 0.6022, 0.4931, 0.1802,\n",
" 0.7599, 0.3721, 0.3514], requires_grad=True)\n"
]
}
],
"source": [
"for n, b in model_bn.bn1.named_parameters():\n",
" print(n, b)"
]
},
{
"cell_type": "code",
"execution_count": 76,
"id": "c3c7cee9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['fc1.weight.avg', 'fc1.weight.std', 'fc1.weight.grad.avg',\n",
" 'fc1.weight.grad.std', 'fc1.bias.avg', 'fc1.bias.std',\n",
" 'fc1.bias.grad.avg', 'fc1.bias.grad.std', 'bn1.gamma.avg',\n",
" 'bn1.gamma.std', 'bn1.gamma.grad.avg', 'bn1.gamma.grad.std',\n",
" 'bn1.beta.avg', 'bn1.beta.std', 'bn1.beta.grad.avg',\n",
" 'bn1.beta.grad.std', 'fc2.weight.avg', 'fc2.weight.std',\n",
" 'fc2.weight.grad.avg', 'fc2.weight.grad.std', 'fc2.bias.avg',\n",
" 'fc2.bias.std', 'fc2.bias.grad.avg', 'fc2.bias.grad.std',\n",
" 'fc1_outputs.avg', 'fc1_outputs.std', 'fc2_outputs.avg',\n",
" 'fc2_outputs.std', 'bn1_outputs.avg', 'bn1_outputs.std',\n",
" 'bn1_running_mean.avg', 'bn1_running_var.avg', 'bn1_running_mean',\n",
" 'bn1_running_var'],\n",
" dtype='object')"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_stats = pd.DataFrame(weights_stats)\n",
"df_stats.index.name = \"epochs\"\n",
"df_stats.columns"
]
},
{
"cell_type": "code",
"execution_count": 77,
"id": "df0b707d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Axes: xlabel='epochs'>"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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CIIgCIIQ84hgEQRBEAQh5hHBEsOwnDy7Czc07APEDsctlYa67i39OguCINQEESw1gDVAWI106dKl6jVSw7tYg40C2fMmMTER6ekNV6X33nvvbZGdh1kMriGvsyAIQktBCsdFCbv9zpo1SxUt02DxMjb469+/P2IVp9OJ0047TTXYe+WVV9CS+ndIbxtBEITmg1hYooBN9j766KMQsUI4/+GHH2LFihX1dX/gdrtx7bXXquZQLEs/efJkVcpdcylMnToVF198MVJSUtClSxe8+OKLId+/7777VO+dgQMH1rgcPrsJJyUloWPHjnjmmWdCPi8oKMCll16qOjFTuB122GH477//glYG7pfz7OzMicu0Tsc8Fm6X1V6vvvpq1Ym5KlatWqW6KLN5JUvYz5kzJ9jFmWzatEnt44MPPlC9ebgeO0GzUzLPgcdPCxP3y67RekpLS1UVXfYqat++PR5//PFqrw3Pi12oec157uzuzM7WPC52r2YTL+28aWki2dnZqrNzQkKCasTJ4xMEQRCip0UKFg74tDxEM7Er7ezZs6vc3vfff6/Wi2Z7NW2O/cYbb8BsNmPBggWqfw4H/Jdffjn4OQfYYcOGYfHixWrwv+qqq7B69WrsLY8++igGDx6stjtp0iRMnDgRP/74Y/BzWm04CH/33XdYuHAhhg4disMPPxx5eXk444wzcPPNN2PffffFzp071cRlWg+dGTNmYPny5erc2On3tttuq/Q4PB4PTjzxRCU45s+fj+effx4PPvhgxHW146Q1bPz48eqeUEx88803WLZsGS6//HKcd9556lpq3Hrrrfj111/xxRdfqGaEFB2LFi2q8tqcc845qkvx33//rc6d+6U1h643xqRQxGjnzV5B5MILL8TWrVvV39LHH3+MZ599Vl0/QRAEITpapEuI7gJaJuoKWloefvjhqNa98847YbVao942rRBPPPGEelrv06ePip/h/GWXXaY+Zwt5ChXCBoH8jIMi190b2A2ZAzHp3bu36nvDbR9xxBH4448/1KDPATcuLk6t89hjjymLBwdjCgNaLCi02rVrF7JdfTArLUQUH1deeaUawCNBkbR+/XolJLgtxg3dfffdOOmkkyqsy22ffPLJIcs0wUCuu+465dajVWzEiBHKskM32dtvv63EFqGIohipCjZhpNDp27evmmcXaQ1awniv9OfNDtMUdrxmw4cPV8u4X2l0KAiCED0t0sLSlBg1apQaADUYi7J27VpleSCDBg0KfqYNlHXx5M79hM/TcqG5RDjYt2rVSgkTbWIgMsVFVbAjMcUB3TR0qdDiQddNWVlZxPVpLaJo0wsAWnMiQUuTHl6jBx54QLmCMjMz1TFSsFBwEB4rrV4jR44MfofrVSf2brrpJuUOGzdunBKq1Z0zrxvFG609GhQ7EpwrCIIQPS3SwkLzPS0d0cBBODzuoTI3QdeuXaPad10Svj2KlvrOXqJYYbwHrR7hVDUIM9ZkwoQJym3F7CWKA1prLrnkEiUc6PbZGxgXE+7WohuNbhotboZWGO5rb2Bcytlnn61cTbScTJkyBe+//35Eq48gCILQSBaW3377TQUPdujQQQ2OWuBjVXBg41Mx3Qc9e/YMBmDqYVAnXQQMmOQTrz7OoK7hcdMtE83Uo0cP9WReFYxZ4HrRbE9vLYkGxm3omTdvnnJBMOi0PuF+wuc1Fwbv5a5du5TVgPdTPzEwmPBcNSuQBuM9KKYYd0PLEV1NO3bsqPI4aO1g7Mfu3buDyxhXEw10Y51wwgk499xzVTxO9+7dlXtGg/eMgk9/jfPz80PWqQweO4OZGfdCN9Rrr71W6XnTmsLgaZ6/3nLEwGVBEAShngQLsyr4j3941khVFopjjz1WZVX8+++/6gmX5nSa5jWY3UEzO59UGfDI7TNoMhaCEhkkykJiVcHUZq5XH9B9wWvDAY6WnpkzZ6rA0pp8n9edrxxI+Z6TPjOHA+pnn31WYbB/5JFH1ODNe80sKW2/dIXQRcRgWA7YtJzMnTsXd911l8qWIRSfvPfcV05ODhwOhxI0jB/iOWzYsAFvvfWWCqLVs337dnU8mmBlzAyFxQUXXIAlS5ao46J1hlQn/ijsGAPDY6Nb5oorrggRPhSitO4wHoXBvwzMZXBs+L284447VCYRsdlsKmuLInzz5s3qeBh8q4k5njev7c8//6zOm64uii7+jXD/FEcULvwNMGNIEARBiI4aj7JHH320CpSM1vzNAYlpnHyq5j/q/Mf+1FNPVQGcGsx8YRApU0JZ04TfoXvg1VdfRSzAgZZZMbSk6OH86aefXq91WDhQcpBkkOg111yjRAODWqPlnnvuwZAhQ5QY5EDK95w0YUEohpiKq4dZPlyH6/J+8x5RRGpC4dtvv8XYsWPVPaO14cwzz1QDeNu2bdU6p5xyihqkKVSZ+kyxRSHK7UyfPl2lJzO1d9q0aSH7paDh8WgxLVr6Mo+dAas8dwo4QmtcVTA4l9YgHjdFJ+NgKLLC3UYHHXSQshpSiDF9Wh9rQpjto8W98HgYc8P7wvPm/edvgmnchJlCDCJmVhTPm6KP0AJDqyTTrmmR4XlkZWVFfR8FQRBaPL69gBnCn332WZXrHHTQQb6JEyeGLHv11Vd9qamp6r3D4fCZTKYK2zn//PN9xx9/fFTHUVhYqI6Fr+HYbDbfihUr1Gtt8Hg8vvz8fPXKacOGDb4lS5aoV84LDQuv+Xfffafu97p16+TyNxLa76qoqMj3+eef+5xOp9yLGIH3Qu5J7CD3o/bjdzj1HnTLWAftqVuD80wFpuWAMQN0VURahwXDIkH3AicNraAbn8456eE8tRVjJ2oTjKrVTeErLQvhgbVNoTx/U4fuKrpv6OJhhhRjR2jJoOVOrn/jwOvO3wRjc0j4705oPLR7IfckNpD7UTU1+TttkllCdCNoJng9jKcIzzTRaoHQpbA32SGs/Co0Dnv27FE1ZrZt26ZSqelWoZsqvPKw0HDwt8QHDsYHEX1RQSE2kHsSW8j9iExlJS0aRbBQLOgDHQnnGf/BoEPGBHCKtE540TF9EKQWx0A4cLFWx5FHHlkhzoTVTpllwif06mIeIsGnSIoV1gypaYaPUDcw3kOL25H7ERvwd8XfLy1dzBxkcLT0boqdJ1YOjnJPYgO5H1VTkwfPehcszCZhgKYe/pi0wmRMA2WQI7MqtIBImps5zwDdSDA9Wquwqof/YIb/o0l3E4UGMz9qk8mjuRy0bQiNi9yP2IC/Bf4maMGs7LcnNC5yT2ILuR+Rqcm/GzUegela0VJjiZa6qmVR6FNACTMmmMLKfjGMSWEJdpZGZxyCBq0lL730kiqLzvRTFhZj+jQzUARBEARBEGpsYWGqK1NVNTTXDOtksCCcPgWUMDCSFUEpUFh1lH1a2LxPS5ElTAFlnAJTcBmku99++6mGguGBuIIgCIIgtExqLFhYz6KqjsORqtjyO9VVJ6X7pzIXkCAIgiAILRsJyhAEQRAEIeYRwSIIgiAIQswjgiWGoSuNvZcEQRAEoaUjgqUG+Hwe5OfPw65dX6pXzsc6bBTIWhksqJeent4oxxBtV+/awGaDTz75ZL1sWxAEQYgdmmSl28Zgz55ZWLvuQTgcu4LL4uLaoXeve5CVVZ7xFIsVSdm4kXVvXnnllcY+HEEQBEGoFWJhiYL8/F+wbPl1IWKFOBy7sXTZNcjOnoX6gr1amD2VlpaG1q1bY/LkycEsLVoXpk6diosvvlhV4u3SpQtefPHFkO+zhQFTygcOHFir/f/666+qUzQL9bVv3x6TJk0K9o+pzMLBtPR77703+Dlhd29aWrR5fs71XnjhBVWlmBYgdj7Wd42O5BLjdq6++urg5+wQzfPjtrVKxFzG7ssZGRlISkrCvvvuW6F4oZ633noLw4YNU9eQ1ZXPPvtsZGdnBwvVMRX/ueeeC/kOs95YPI37IqwxxE7PrKbM7t0//fRTvVqWBEEQWhotUrBwwPd4yqKa3O5ibN32CL8VaUvq/2vW3q/Wi2Z7VaWER4LF9FhNdMGCBaqOzf/+9z9Vx0bj8ccfV4MtB1AO5Cy6t3r1atQF27dvxzHHHIPhw4fjv//+U4M2rTTs4xMtf//9t3p97bXXVI0ebZ6sW7dOFRH86quvVN0d7Ryi5dNPP1Vi4v7771fb5kSuueYa1RyTJeOXLl2K6dOnq9YMVZXOfuCBB9Q5UmBs2rQJF154ofqMouSss87Cu+++G/Kdd955B2PGjFHNMFlNmVWaKbrmz5+vRONdd90V9XkIgiAI1dMiXUJerw1zfq2dxaEiPmV5+fW3/aJa+5CDl8JkCm3QWBW0PjzxxBPqab1Pnz5qAOb8ZZddpj6noNAGeTYI5GezZ89W6+4trErM/T/99NNq/3379sWOHTvUfljkL5pWBW3atFGvjJ8J7w3FfjRvvvkmOnbsqOZnzpyJY489VomwyvpI6cnMzFR9qDTLiAYLF55yyilBq1L37t2r3A4tVBpcd8aMGUqksaozhc4555yjjonbpRWLVpf3338fd999d7DVxPr16zFnzpzgcTB2iL1cBEEQhLqhRVpYmhKjRo0KabrIWJS1a9eqp3oyaNCg4GdcjwOm5s7YW9gmgfvT759WBQ7k7Jy8t3Dw18QK4b4oBvbWQnT99dcrKxCPdcqUKViyZEmV6y9cuFC5kHg8FD/sBk20is10XfXr1y9oZaGbjNeYsUGEx0thpxdNdKMJgiAIdUeLtLAYjQnK0hENeXnzsWTppdWuN3jwq8hIHx7VvuuzcRTFhdYgsCGglSXczUUXS2Nu+9JLL1WtH9gS4ocffsC0adOUheS6666rsC57VnFdTnTz0CJEocJ5Bixr0MpCwcIYHr4eddRRaNWqVZ2cpyAIglA9LdLCwkGdbplopszMA2GxZPFblW0NcXHt0SrzwKi2p7dWRANjIvTMmzcPvXr1Uq6Q+oZWhb/++itENPz555/KCsHYEcIBXosd0VqFsyFmuKjSLEJ6KAzoYtKfG0WK5s4K3za3sXz58pBtsNt3pG3T4sHGm4xzufnmm1VzzUgwWDY3NxcPP/wwDjroIOX2imShYiDusmXLlDXm448/VgJGg8e7detW7N69O7hMH6sjCIIg7D0tUrDUBIPBhM6dbtXmwj9V/+/da7Jarz7goM4Gk3Q7vPfeeyrOY+LEiTX6vtZNmwO71mmbbp3qYGwMB2JaJjiwf/HFF8rFwuPR4lcOO+wwlWXz+++/q/gaNsEMF1PMDPr5559VY8v8/PzgcmbUcH0Gu/L7dOUwU0hzrXDbtJJw4v4ZUFxQUFBh2wyuZYBwTk6OWsbMolmzZinhtGjRIhXTQ/GlQVHy2Wefqfd0A1H08Lqyq/iXX36pAnDD4X5Yz+aSSy5R1/H4448PfsZYlR49eqhzofuJok6Lb6mpQBUEQRAiI4IlCjIyDsOAfWciLi60ezTrsAwc8Ey91mE5//zzYbPZVEwEs18oVi6//PKov8/g2CFDhiihQZHC95zYdbs6GF/CdGBmKA0ePFhZLDhga4MxueOOO1TMx4QJE1TALLNlOHjroTuGgam0enDfGj179sTJJ5+sAoePPPJIFY/DQF99MCxFAK8B98GAWKYy62GGELN6uE8twJeCgteKIoWum969e4dsl+JPS5/md9iw86OPPlLpyLS0PPbYYxGvB60qFFdMrU5IKHftUaAxu4jXl8G6dElpWUIUZYIgCMLeY/DVNM82BqEbgnVKOAilpqZWyEThk3a3bt1qNXgwHoTb53YNBh8KCv6Gw5GNuLgspKcPrzfLSnOHdVg4yNPaU9v7EU2WUmNBKwvrsjB1O1zANQe03xVdg7/88osSneHxVELjwDgvPmjIPYkN5H7UfvwOp0UG3dYWipOMjFGNfRhCDEIXE1OgGV9EkUJLGLOUmqNYEQRBaAxi9xFVqHfo4uEgG2niZ0L0FBcXKzcU42NYdI6uIcb8CIIgCHWDWFhaMIz/uOWWWyJ+Vp1pri5cQlr5/uYA42w4CYIgCPWDCJYWTFZWlpoEQRAEIdYRl5AgCIIgCDGPCBZBEARBEGIeESyCIAiCIMQ8IlgEQRAEQYh5RLAIgiAIghDziGCJYViGnn1xhNhnzpw5qm9QeK8jQRAEoW4QwVIDPD4f/swvxme789Ur52Odhx56SDXtS0xMRHp6eqMcAwdyluGvD9iU8Mknn0R9IaJREAQhNpA6LFHy7Z5CTF6/AzsdruCy9nEWPNirI45t0zhCIBqcTidOO+00HHDAAXjllVca+3AEQRAEoVaIhSUKfigoxWUrNoeIFbLL4cKlyzbhmz315wZwu9249tprVXOo1q1bY/LkydD6VdK6MHXqVNXVOCUlBV26dMGLL74Y8v377rsPN954IwYOHFir/f/666+qU3RcXBzat2+PSZMmqWOqysKx3377BavY8nPCDse0tGjz/JzrvfDCC6qLMy1Ap59+erCLcmXWDW7n6quvDn6+efNmdX7cNifCZccddxwyMjKQlJSEfffdVzWDqwx2cmYPIDbHbNu2LU499VS1nCX2ef5PPfVUcPvsDE24PXaBZtfmQw89NLhcEARBqB9apGDhgF/q8UQ1Fbs9eHBbHiI5f7Rld6/djiK3O6rt1bQ59htvvAGz2YwFCxaogfN///sfXn755eDnjz/+OIYNG4bFixergfyqq67C6tWrURds375ddXxlX5z//vsPzz33nLLSPPjgg1Fv4++//1avr732Gnbu3BmcJ2wS+OGHH+Krr77C999/HzyHaPn0009Vt2C2GOC2ORH29HE4HPjtt9+wdOlSTJ8+XfVHisQ///yD66+/Xm2D143HMXbsWPUZrzctU5dddllw+xRXW7duxcknn6xEEbtNX3rppUrICYIgCPVHi3QJlXm96PHb0jrZFuUHLS+9f18W1frrxw5EkskU9fY5QD7xxBPq6b5Pnz5qAOY8B1FCQaEN8rfffrv6bPbs2WrdvYWWB+7/6aefVvtnY78dO3ao/dxzzz0wGqvXu23atFGvjJ9p165dyGd2ux1vvvkmOnbsqOZnzpyJY489Vomw8HUjkZmZCZPJpKxL+vW3bNmCU045JWhV6t69e6Xb4Lq0wkyYMEFtp2vXrhgyZIj6jFYtq9WqrD/67VO4sQszj5No94XCSBAEQagfWqSFpSkxatSooKuD8Il/7dq18Hg8an7QoEHBz7geB9bs7Ow62ffKlSvV/vT7HzNmDEpKSrBt27a93j5dWJpYIdyX1+vdawsRLSa0AvFYp0yZgiVLllS67hFHHKFECkXNeeedh3feeQdlZWXVXpeRI0eGLOOxC4IgCPVHi7SwJBqNytIRDX/lFePcZdXHJ7wzqBtGpSdHte+6xGKxhMxTXHDQbyhoZQl3c7lcrkbdNl0048ePxzfffIMffvgB06ZNU9aQ6667rsK6tKosWrRIpSVzXVqOGF9D11VjZVUJgiAIFanV6PnMM8+o4EkGKfJJk/EVlcHASC1gUT/R9K/B4Mbwz4866ijUF9w+3TLRTAdnpqCdxQRDZdsC0CHOgkMyU6Pant5aEQ3z588PmZ83b54KEKUrpL7p168f/vrrrxDR8Oeff6pBnrEjmstHix0hRUVF2LhxYwVRpVmEwt0xdDHpz40iRXNnhW+b21i+fHnINuiyibRturKuvPJKFedy880346WXXqr0PBkjNG7cODzyyCPKGsMA2l9++aXS7fO6hP/N89gFQRCEGBIsH3zwAW666SZlaueT6eDBg9XTbGVuCA4YWsAip2XLlqnBlqm2eihQ9Ou99957iAVMBgPu7JSp3odLDW3+gV4d1Xr1AQd1Xm+6SXhNGOcxceLEGn2fgaF85cDL95zo1qkOxsYwwJSWiVWrVuGLL75Q953Ho8WvHHbYYXjrrbfw+++/qziOCy64oIKYorj9+eefsWvXLuTn5weXU/ByfQb08vt05TBTSIsX4bZpJeHE/TOgOLwwG7fN4FoGCOfk5KhlzCyaNWuWEk78G2VMD0WGBmNxPvvsM/X+66+/xowZM9Q1YXYRY2poodJEE7dP0UgRw+3zMwohuuVuvfVWdV/effddvP7661HfE0EQBKEW+GrIiBEjfNdcc01w3uPx+Dp06OCbNm1aVN9/4oknfCkpKb6SkpLgsgsuuMB3wgkn+GpLYWEhTQDqNRybzeZbsWKFeq0NPL/8/HzfV7vyfPv9uczX9pfFwWnIn8t8X2fn++qLgw8+2Hf11Vf7rrzySl9qaqovIyPDd+edd/q8Xq/6vGvXrup66hk8eLBvypQpIdc2EBscMs2ePTuqY5gzZ45v+PDhPqvV6mvXrp3v9ttv97lcruDnvOZnnHGGOr7OnTv7Xn/99QrH8OWXX/p69uzpM5vN6pgJP+d6zz77rPr7iY+P95166qm+vLy84PecTqfvqquu8mVmZvqysrLU39jxxx/vO+uss9R9IX/99Zdv0KBBvri4OHVe5Nprr/X16NFDLWvTpo3vvPPO8+Xk5AS3y/Vee+019f73339X15nXNiEhQW3rgw8+CK67evVq36hRo9Rn/N7GjRvV8q+++kqdE/dx0EEH+V599VX1Of9WWgLa76qoqMj3+eefq3slxAa8F3JPYge5H7Ufv8Mx8H81KULGjImPP/4YJ554YnA5n5L55Msn8Opg5gYDFPX1QugSYiVUmt9ZO4NP1gyabNWqVVTHRTcEMzpYwyM1NbVCJgqftLt166ae6GsKn6i5fW7XZzBgXkEJsp1uZFnNKmalviwrzR3GifCe07JR2/sRTZaSUD9ovyu6Buk+Y7ZaeDyV0Dgwzot1guSexAZyP2o/fu9V0C1N4nQrsLiWHs7TZF8d9PvTJRRecZXuINa1oKhYv3497rzzThx99NEqfiJSrAZrbHDSn7D2hxEelMl5ajIOdLUJRtX0HF8pTQ5IS9J/CG8TKM8fi2jXtab3RH8/GjK4WAiF1573QCsiWFeB1sLeo90LuSexgdyPqqnJ32mDZglRqNDCwsqpes4888zge37OVF3WuWDmxuGHH15hO8z6YAXXcJjlQQtQeEAlYyIYs0ELUW0pLi5Gc4MVYj/66KOInzHGiDVd6gsKTopfTWzWlOZ4P5oS/C3ZbDbMnTtXzf/444+NfUhCGHJPYgu5H5GproyEngZzCZWWlqJDhw6qomg0QaPMEKFb6IorrojKwsKsEFqAIrmEGDiqZTXVFF4eDo7MjKlphk+sw0DpygQDr2NWVhZijeZ8P5oS/F0xEJntGhj0zHo24hKKnSdWDo5yT2IDuR9VwzGIbWfq3CXEGJP9999fZXxogoWmYc6z301V8EmeIuPcc8+tdj8sSpabm6v+MYwE+9pwCof/YIb/o8mneA5sjHeoTcyD5nbQttGcoOUpmoqysURzvh9NCV573gNaMCv77QmNi9yT2ELuR2Rq8u9Gjf/FZ0ora1qwxw0rfjLVlNaTiy66SH1+/vnn44477ojoDqLICQ+kpauG6aGsY8EnNoqfE044AT179lTp0oIgCIIgCDWOYTnjjDOwZ88eVRGUdTXYcZcN47RAXNb7CH/yZa2KP/74Q8WYhMOgWhbrogCiW4luoyOPPBIPPPBARCuKIAiCIAgtj1oF3dL9U5kLiIGy4bAIV2WhMgkJCarIlyAIgiAIQmVIEIAgCIIgCDGPCBZBEARBEGIeESyCIAiCIMQ8IlhqgMfrw1/rc/HFv9vVK+frE3a6ZiO/lgrjoZg6G97wUBAEQWh5NGil26bM98t24YFvVmJnoT24rH1aPKYc1x9HDYhcLyYWeOihh1S3Y/bsYR2dpjT4jx49WnXuZp8JQRAEoWUjFpYo+Hl1Lq55d3GIWCG7Cu246u1F+H7ZTsQqrE7MMvusl7O36HvHNAQUWCxsJxVtBUEQhBYpWDjwljndUU3Fdhem/7gBkZw/2rJ7v1yh1otmezXohKCgQGAKOa0MLF88efLk4DbYbmDq1Km4+OKLVan6Ll26hHTBJuy5xJ5B7NFUW5fMd999pyocsy4O6+mwu7a+NQOh64ouLA2+v/7663HbbbchMzNTCQ92aNbDbb/88ss46aSTVMuHXr164csvv6ywf80q9Prrr6ttsbjgvvvui+TkZNU4k1YY/fXiftPT01WRwttvv121jgg/3srgcV933XXqfNg5nPWFWChRK47I68yihrwmetjUkw07eUz8znnnnadaRWiwVtGBBx4YPK4JEyaoRp8aLJrIc/30009x6KGHqusxePBg1QC0Kv73v/+pe5uUlKTaU1x99dWqGKNW8pplA8KP9bPPPlPnofXwYD8g1lNi64phw4apLto8lpp20hYEQahPWqRgsbk86H/PrKimwff/hOySypsmUjrsKrJj4L0/RLU97rsmsKAey5+z0/VTTz2lBigO8hqPP/64GmQWL16sBitaUliory6ZNGkSHn74YVXZmI0pa3LsHEjnz5+PRx55RPWRCm8ARkF1+umnq+KBxxxzDM455xzk5eVVuk0Osk8//bTaNnvYsFDhLbfcEvx8+vTpeOedd/Daa6/hzz//VIM2B+CawG1THPKaU7zwmtJKRRfVokWLVGFDChJtwKegOuywwzBkyBD8888/Spzs3r1bnZcGBQ+rRPNzCi4WV6RQC+84fdddd6nzoVjo3bs3zjrrrCqtWtzOjBkzsHz5cnXcv/zyixKJhH05KIzefffdkO/w+lDAURTx+hx33HFK9PDcWLCRIk8QBCHWaJGCpSnBp2Z2TWbxPQ7mHED1XZQ5yFOo8KmfAw0H2tmzZ9fpMVBosJEaO2jTwhEtFDdTpkxRlhO2bKCw4mCth9YaDso8flqLaB2gUKiqkRhFG7c1dOhQZX3Sb3PmzJmqNQTFQN++fZW4oVWjJtCycffdd6vj5rZoeeB1veyyy9QyVnlmryuKLMJ9UKzw+LlPvn/11VfVfVizZo1a55RTTsHJJ5+szpPWDH6+dOlSrFixImTfFCvHHnusEisUc5s3b8a6desqPVZagmiRobWNookNQz/88MPg5/yboWDTxBUFCmOauJxQzNCaQitS//79lZWIrTIEQRBijRYZdJtgMWHF/dH1KZq3PgcXv7Gw2vVev2g4RnTLjGrfNWHUqFEhMRwHHHCAsqqwqSPRWzy4Hl0v7MJcl1Ac1IZwawybWYYfm34dWmNoFajq+GkV6NatW8RtstsnLRsjRowIaf1Ad1a4JSPa4+b36cLRu9S0NhTafv/77z8lTugOCoduH4qPtWvXKqFDaxNdRdrx0EI0YMCAiPvWmn9yPxRCkfjpp58wbdo0rFq1SokRWmPYSZkChdeKgpbNxehqO/PMM/HJJ5+oazxu3Dj1fVrjuE99J3P99RMEQYgVWqRg4cCeaI3u1A/q1QZtU6zILnZGjGOhlGiXFq/WMxnLhUVjdbrkudVkcI4GColwN0R4LA4tH7U5tpoef6T1axoXVB2R9qFfpglI7ThpFaJbhe6ocDTRwc+7du2qLBnsl8XvUqgwKLqyfYfvJxzGvdDlQ5cVs8Fo/WKM0SWXXKK2S8HCwOVTTz1VWVIoWPjKfmBal2VBEISmgriEqoEi5LZx3dX7cDmizTO1ub7ECp/I9bCrNd0SfPJvLNq0aRMS6EpiIUCTgcm0fvz999/BZbREMTajPqFrijEkdMvQ5aOfKPboPqIlg26mww8/HP369UN+fv5e73fhwoVKzNDiRkscLTk7duyosB7dP4yr4TEyxkVzBxG6GumacjgcwWX66ycIghAriGCJgsP7tMIzZw9RlhQ9nH/u3KH1WoeFLgMGa3LAe++991SMxsSJE2v0fYoJvnLw5ntOWiZJbWCsBINH33zzTeXqYJwKs2RiAcb40EXyxRdfqGvGa0VxUJ+p0ddcc40KFGYsDgd7uoHY0JNZRbzmzDaiW4kZXIxHoWjgPa0p27dvV64hLcaHgoiWLf5NbNiwAW+99Raef/75Ct8bO3aschVSqNCdNnLkyOBnZ599thI9l19+uQqq5nE/9thj6jNJJxcEIZYQu3CUHDWgHcYPaI8FG/OQXWxHVkq8ilmpbzcQg1VtNpuKK6BVhQMwB5doYdwEs0c0GBBKGHOhT0OuCePHj1fp1cxGYbwE06p5nHxSb2wYeLxr1y51PLxevFY83vq0SNHFw4wk7psZRLRW0P3DlGu6zzjwv//++yrdmm4gWjWY2VPT609xQhGmBdAyOJgByHRFMTiYwoRijeeuh/unmGKmFv8e9DCe5auvvlJuJQYDM1aH61DI6ONaBEEQGhuDr64DABoBBhvSHcCgS/4DrIcD6saNG9WTZW3+AebTJ7fP7XLwERqXmt4Prk8XDFOMmbIrVA/Tnmkd4u+JdVwiof2uOnXqpCxGWnCv0PhQ2H777bdyT2IEuR+1H7/DEQuL0KxgGvAPP/yAgw8+WFk6mHLMgZUWAyEydO11794dHTt2VBlPtBRR4FUmVgRBEBoDMRm0YK688kqVihtp4mdNEVpdWBF3+PDhGDNmjHJTMfWXVhbG8VR2vpz4eUuELrRzzz1XXSNWRWaRvPCKyYIgCI2NWFhaMCwIp68Sq6c601wsF9pjPEllsSZVZTPx85YIY5G06riCIAixigiWFkxWVpaaWgqsPcLMGkEQBKHpIS4hQRAEQRBiHhEsgiAIgiDEPCJYBEEQBEGIeUSwCIIgCIIQ84hgEQRBEAQh5hHBEsOwdPsNN9yAlsqcOXNUWfmCgoLGPhRBEAShkRHBUhO8HmDj78DSj/2vnI9xHnroIYwePRqJiYlIT09HU4LHza7QLNssCIIgtGykDku0rPwKmDUJKNpRviy1A3DUdKD/8YhVnE6nqlx6wAEH4JVXXtmrbbHtFLsPs55JQ2C1WlWX4aYO7wHPRRAEQag9YmGJAsu672D46IJQsUKKdgIfng+s+BL1hdvtxrXXXqusDK1bt1ZdkrV+lfvssw+mTp2quiWnpKSgS5cuFUqq33fffarcOrvw1tYl891332H//fdHXFwc/vjjD1x44YU48cQTQ9al60rffZjv2Z2YFVQzMzOV8Lj33ntDvsNtv/zyyzjppJOUBahXr1748ssvK3UJseQ+t/Xzzz9j3333VeX02RGZVhj99eJ+aU1q1aqV6otzwQUXVDjeSPDasdotGybqOeGEE9Q1JuvXr1fzbdu2VftnCwCW/tfD+8JGi+yazIrBkbprs8sy70lSUpKqznv11VejpKQk2AyMfXx43fV89tln6j5r3Zrnzp2rOiyzqeewYcPw+eefq+tVVTVfQRCEpkrLFCwc8J2l0U32IiTM5kAbqal1YNn3t6v1otpeDZtjv/HGG8qisWDBAjz11FNqoOMgr/H444+rwWrx4sVq0LvqqquwevVq1CWTJk3Cww8/jJUrV2LQoEE1OnYOyPPnz8cjjzyiWgH8+OOPFQQVG+0tWbJEdZc955xzkJeXV+k2OVizoSG3/dtvv6n+P/r2AtOnT1fdhl977TVVop+DPwfyaKAlKjc3F7Nnzw4u47F8//336rgIRQWPk6KJ15yC6bjjjqvQh+ixxx7D4MGD1ToUmZF6Hs2YMQPLly9X58KOx1p5fIqcCRMm4N133w35Ds+LwovijufF/VL0LFq0SAkkijNBEITmSst0CbnKgKkd6kjR+fyWl4c7R7fvO3cA1qQa9cZ54okn1JNznz59VDM/zl922WXqcw6eFCqEAxY/44DLdesKCo0jjjiixt+juJkyZYp6T+sJhQYHev22aK0566yz1HtaiziIU5xRCFTWqp2ijWKAgz6tTzw+jZkzZ+KOO+5QVhvCfX777bdRHW9GRgaOPvpoJRQOP/xwtezjjz9Wlq1DDz1UzXO/nDQoFGj5oGWIx6Jx2GGH4eabb650X/pgalpkHnzwQdVw8tlnn1XLKJDOO+88JdA0gfLNN9+ofREeI/8mXnrpJWVh6d+/P7Zv3x78uxAEQWhutEwLSxNi1KhRamDSYCzK2rVrVSwJ0Vs8uB5dL9nZ2XV6DLTg1IZwa0z79u0rHJt+HVpjaF2o6vg5eHfr1i3iNgsLC7F7926MGDEi+LnJZFLurGihUPjkk0/gcDiCVo0zzzxTiSPNwkKLDjsb0+1EtxAtT+EWluquGd1IFEUdO3ZUbh6KE1p3NHcPhajFYgm6yHhMvDbjxo1T87Si8dpRrGjoz1sQBKG5USsLyzPPPINHH31UtaXn0yafaiv7x5JxBxdddFHIMsZC2O324DxjMvgkzqdFxiuMGTMGzz33nHoqrxcsiX5LRxR4N/4B43unV7/iOR8DXUdHt+86hIOaHoqW8BiMvYVCQg8Hby2ORm/5qM2x1fT4I60ffix7A90s3B6tGYxP+f3335XVSoNihW4tunzYSJGxJqeeeqoKrK3qmunZtGmTcvnQfccsLsblMDbokksuUduhKGOQLrdLSwoFE1/POOOMBgt4FgRBaPIWlg8++AA33XSTEhj0nVOwjB8/vsqnYj4ZMjBSmzZv3hzyOeMb6Ap4/vnnVbwD/7HnNvWipk6hxYJumWimHofBm9wePhgq2xiQ2lGtF9X2dNaSaOD10DNv3jwl5Gg5aCzatGkTEuhKYiHQk4HJDIb9+++/g8toieLfabTQYnHyyScry8p7772nXGtDhw4Nfs64GLqx6HJi/AgtWhQgNWHhwoVKlDH+iBa03r17Y8eOHRGtPYyfYZwLY1y0OBqiuQc1SxDRn7cgCAJaumBh/AD95LSa0G9OkcEnwldffbXS72iuCm3ioKLBp9knn3wSd999t8q+oJn7zTffVP+ARxssWa8YTbAdMqVcnIQQmD/qYbVefUBXAwUiXQAcQGnNmjhxYo2+TzHBVw7efM9Jy0ipDYzP+Oeff9R9onuK4nXZsmWIBa677jpMmzYNX3zxhbpmvFb5+fkhbrXqoDCghYV/03qRQCgWP/30U3UN//vvP5x99tnVWrQYW9K3b18Vm0NomaFFivdyw4YNeOutt9TvKJyxY8eq3wuPgW6wkSNHBj/T9ssMJLqkZs2apaw+pCbnKghC/eHzeVBQMB9m8yL1ynmh9tTIvkxzNZ8OGdSodw/Qr/7XX39V+j0Ojl27dlX/wPJplcGVTEslGzduVK4lzTevPSnzH2duk+bwcPhUqX+yZEAi4SAQ7prgPEUR910bVwm/6+p5NLynvg7jD3fAoEtt9qV2gG/8NKDvBKCO3TAaWuAlXW60qjBl99JLLw2ei3Zu4cesLWOGCoWFxpAhQ9Qrg1/1aciR0LYRfu0YNEuByawWWsEoXnmcFC369cKPjfPhyyLdF21Z+P4jbVu/Drn11luV9YcpxbxeFNdHHnmkeh/t/ed1oZuGgod/f/rvURTw+rOoHYNxeQ349xfpXLV5/q1yW/wdcBktM7SuMKOJv6WDDjpIuYZouQk/T+6f7lfeR/1yxs5QlF1zzTUqtZnb5D0599xzlTuprt2C4XD7PEemkVfmEhQaB+1eyD1pXHJyfsC69VPhdO5CfAKwZOnbsFrboWePO9G69ZGNfHSxQ03+Tg2+GgQA0OrBIEHWf2Dwpwb/0f71118ruC8IRQefwmk5YVAk/8FnOirN3J06dVLbYswKt80ASg2muvJJkS6ocFjPg+mw4dDPT2uPHvr8+ZTKbJu9Lt7l9cC8fQEMpdnwJWXB3XFEvVlWhLobWCl+mQ581113NevL+uGHH6pMJbpcGVtTn/DhZevWrephQxMtgiD4MZmXID7+dfVeb/DURlu7/UJ43NGXiGjOlJWVKYsx9QHDR6qi3iP4KGz04oZPpsyweOGFF1RKaG3gUyndJBp8wqUg4ZN0+AnTAsB/WPlEqs+oiBbqueLiYpXJoUzt6eNrdcxC3VDhfoTBwfqHH37AwQcfrCwbDBDnMlovqvsxNDVoOevevbt6iKB7iundrCWjd7nWF/xdURTx98wHEFrdwgOihcZ7YmVguNyTxoFun/kLHkFYHL7C/0+WAenp32PE8FthMMgDb1HAQxINNRIsNIHTtM7UUT2cj7aEOv9Ro1ti3bp1al77Hreht7BwnqbuSDDLiFOkbYf/o8m4DQ5sdF1pqak1QTOta9toTrDux9tvvx3xM7oWIsVVNDbV3Q9a1DiQ0+pHcTNgwACVQkwXJON4GHdVGStWrFDVgpsKDHSntZFWDv52KFboWmqIv1Pug/dAy1qK9NsTGpemfE/8sR9/w+HIRlxcFtLTh8fc4O7zeeF2l8DtLoDLVQiXuxBuVyEKi/5VbqAqvgmHYxdKS/9FRsYotHQsNfgbrZFgoUuFNS0Y/6CVOucAwnl90ayqoIBgdgPrTBAGE1K0cBuaQKHionuJaZ9C/cEncn2VWD1N1RpBSxszeSLBsvtVZTPx86YERZlWHVcQmgvZ2bOwZu39alDXiItrh9697kFWVt1auP2xZna4XAVwu4sCr4UhAqTiKwVKkVofqH2s2Lr1j6J168OQktwPycn91DlKwDzq1iVEVwx7s7AwFgNBmeFTWloarLXCYEeaqJmpoQ2KTN1kZgRrrDCAkCZ6Bi4S3iBW/WSlT2ZgUMAwwJCDRzT9X4Tak5WVpaaWAq0B/DsUBCF2xcrSZddUaIXicOxWywcOeCaiaPF6XQGhUVTB4hHplZ9rwsTni+C7qQFGYwIsljRYzGkwW9Lg83pQWLSw2u8VFf2rJg2zOR0pyX2RnNLf/5rcD0lJPWE0Nn7jVK/Xh51rC1Ba5EBSahza90qH0WiIfcHC4lV79uzBPffco0zRtIqwVoTmN6fZXW+SZkopMzW4Lkuf00LDQFu9aZ5PiRQ9TNGkqDnwwAPVNmsTc1IZdVlcTBBaOtrvSZ4Ihbr7m/Ioy0pVfduWr7gZO3d9Dg+tIToB4vGU7tW+DQYzzOZUWCzpMJvTQgSI/tX/eWpgPh0WSyqMxrgK5/Hn3LFKZEU+F7pBMtGly6UoLVmN4pKVKCtbr4RWfsE8NZUflwVJST2QHBAwKQFrjNWaiYZi/eJs/P7BWpQWlGfmJqXH4aAzeqHHkIZ94K1RllCsQhcSU6EjRRnTBbVmzRplSWD33ppClxe3z+02txiWpojcj9iAbQQYQ0OLKGvAaK0EhNgIumX/rKZwTzi4l5VtQknJSuzJ+Rm7d5d3a68NZnOKslRQSFBQhAuOygSIyZRUp+K73FJE9EOsfx/hliKPx4HSsrUoKV6lrgVFDF/9bqeKxFnbIjnFL1781pj+SEzsWudxPhQr379QeY2to64YsNeiparxO5xmX+ebQcLs+aJV4mXac03+MDlAMoWTWREiWBofuR+NC59vmIbI3xN/V41ZcVloWtBdU1LiH5D9r6tQUrpGxZDUhPbtTkVm5hi/2AgKjzQlPGIlMJdipE3SVOzMfRTm+PLu825bBtq3vrWCW8tkikNqygA16X9rDsdOFBevCIiYVSgpWQGbbQsczt1w5O5Gbu6cENdUcnJvnSWGQqYvzObkWruBaFmpij8+XItug9s0mHuo2QsWfSZSbZoC8o/GZrOpFE4xfzc+cj9iA4oV/q6aSw2WppCV0lRg9ozNthklAXeHJlLs9u0R1/cPtH1gsWQgN3d2tdtv3/6kmM+uUW6U11oDhmlIbL0WpvgCeOzpKMvphXU+I5Ks2dVaJjjexMd3UFObNuWFVZmZxGtbVLQCxcX+61tWthperw1FRf+pSY/F1AkWU09YDL1gRg+Y0ANwZ8Hr9sHj8cLr9sLD9+qV8/73xXn2cjeQwVvhPOAzoiTfoWJbOvbJQEPQIgQLbzzTPukWqmn1R67POhMskx7r5tWWgNyPxoe/g+ZkWWnIrJT6hk/FO9YWoGyHWb127tu6Xp9+1eBZulrnyliF0tLV8Hj8XcfDiY/rEHBl+J/+aQlISOiixCFF469zDoTbmx2x5RqDF8xGv5hsaFQ2kScwqLu8cLv8r9ogH5znZ04P5ry7OvBFI8r29KmwvZ9fX4nNS3NUgXRtm8Ht6wSEVzfv9QT2EVgPvo4AOI1TgsKanI24tK2Iy9iK+LRtiEvfCktiAVyebWoCyq0xHmciHAWdYC/oDEdhJ9jzO8NZ1AE+b8UxLrnjIrQd8j4sifnBZa6yDOxefCZKtg9VgbgNRYsQLBr8R7am/9ByfT5FMgBYBEvjI/cjVvuktELr1gc0OatEbbNSYpHQ4MgEfP3f0joLjuSAbbdv07kmViqRYrNvibg+M1uSkjT3hD9glAKFrpvK92HE7sVnoNXgmUqcRKoQy8+LBjrh8/qCgiFEPGhiIvA+4ue6z4IiQyc+KgiSwHcqiZ+tFS6HByvnVlWrpaYY4bF3gMPVEe7C0bCbjTCaDDDHl8KathXWlM0wJ22BKXEzjPHbYLKWITFrjZqC+IwweDvD5OupLDHOos7Ytm4d2g9/o8LezAn56Dj6OWyfexWSUv3tXhqCFiVYBEGoe6uE1ielqVklqs9KMWDN2geUOT7WhVgwOJKm+zblpvvSnF5qeU2CI2kdKSlZoxMn/snjidww1WLOQry1F6zm3n7Xg68HDN6O8LgNcO/xIm+HF9kuD9zOXLhde+BxepQgUJPTExQIZUUOFOweBHvpVRWe6Bn74X+iH4S37668b11DYTSzaKIRJktgMhthDrw67W4U7LZVu40eQ7OQtU+K+o5/MqhXoymwTZN/nu8pPkyB9bjv8u/452lFizZkwet1oLR0fXlwb7H/PjNLyWfaDDc4/QxkAh1G+MVi+KY5z+Xthn6Adj1vQEMhgkUQhCZhlaDA4GDq8dj8r147vPr54HIbvBGW8X1wudcGpzMPTmdVcW3+oMeFi85GYkLXQAZK+WTSz5uSg++NxvgGjXdjHMLvH6yp0nQ/+20zHKUu5VrwWw88cFE4eHbDjfXwGNbDZ9oIWDfCYN0Jg6GiiPN5zHAUtfe7Ego7q1dOHmdK2JrFAFbV+nzoZijZsV/EmAliMAIWqykoFPiqiYUQ8aD/XPeZJjKq/Y72Xj+vhIQRhircbNtX5+PzJxZXe54DD+7YYLEfepiGncJaLyn90T4kwHdXiIgpKFwEp3N3RPcc4XJzQh6Kiv5psJgiESyCINStVWLNfcoF4PU5qhAOFZeFLPfqhYgdXm8ZvN69K/BVWwoL/1FTzWp6UMRowsYvZkymFBgNSTD4kmBAEuBNBLxJ8HoS4XMlwOtOgMfpn1xOCzwOr3IdKGGh3rvh4qvTo5a7A5+57B4lVmiir8x0v2OeG3O/WY/49K2IS9sWfDXF+WNNOCbpxyW3PQWOgs6wK1Hij3NwFLUDfKFDBgfzuMTyAd1sNQUHdu29mte953J+rokOs5XLTSjMLsO8LzZUGftBTpg4pFEG+mhhUTW64vR1S8JJzvAXX4sVDCrAt72aWH2X7Nr1JZavuLHa7zJQvaEQwSIIQtT4M2mq6ZPi3I2/5h1aj1fVAJMpESZTgsow4as2z1daOPTzJrVOIowm3XJjIkpKN2DdOoqvqslIPgsmQyZcrmK43cXweIrh8ZbA6+NUCh9KAUMpfAYbDAYvfD43XK58NdUKC+AzGeE1x8MblwAPxYwrQYkagysBZt2r1UWBE4e2Qz/0X5lKTPcdRr0U+UnZZ4LR1xlm9ITF2BNx5l6Is/ZGXEZrmLsExEdAUPjFhv+9Wmau2tJQm4Dhpb9ub1IDfSTonmHcUFX1Sw48vVejVIqtCcyWq8v16gIRLIIgRGVZYVO3LVtfq5GVgWLBqERCqFhQYkNbHpgPihC1TqgI0QsRmrTDXS4MwnQ6PHDa3P7J7lGxBM4iN8r084H3LpsbhTl9kDY4Q1khKstKYezEXx8dEnRHVHOVYDQ7YLSUwWixwWSxqdcK7612mOM4+d+r9c02GExlgKlMiR6D0ausH5z2NjdROzdad9LSBwUCYPuoDB1/6feKjWQbg+Yy0BPGCzFuKLxCLAUXz6GhK8TWBmZjMS6t8oq9BvV5Q2ZtiWARBCEitBDk5v6OnNzZyM39TQXlRcuQ/d6Iyq9NoUG3htNWLjYcSljoBIYSGaVw2gvLxUiYMKFbpDbYvWcql0nlWSlnIiE5DompVuXKsMT5J/17/7yxis9081aTCpKsLMbF34zPFugCXFw+eXTvA5NHLS9BaelGlJVVXeCL9On7ADq0PwGxTHMY6DV4rCyqtnVVDub+ugCjDx5R72nmdQkDzRlE749XM0Ss2Nu71+QGDUgXwSIIQnCwZNCdX6DMQWHhvyHdaFlJNCP9QOza8SuMltJKrRIeeyY2LWyLdY6NoQIjXIgExEZdposym8KaYPZP8SZY4wPvE3TvA8tLChxY9D1UamblWSlDceKNAxosZoJCRrMoRWtqz8+fh0WLz6l2vYR4f7+3pjLQx0Kzvb2Fx9yhVzoS17rVa1M7h6ys8SqIPnKdoskNnhEogkUQWmjnU8In+dzcudiT/Qvy8n+Fyx0aQGf0dAPsw+AqHILSvJ7YmuOEx9K1SqvErkVnYN32jTU6DsZCVBAV6jXSfPl6cQlmWAIChO8ZxFmT+7B63q4qs1KaQsxEuem+8tiiuLj2jVJwrbbw9xDLgbUtiSy2GWgzLiYqQYtgEYQGpD47n9JCQsuFvZSTS6Wx8jV83uHaAq91Acwpi2BNXwmDsdyd4nVbUbq7H0p3DkTJrgFwl+kbhhYGXodWa5Vo2y0VrTol+4VFuNgIvA+KjQSzCuhs6NYXITETlWSlNIWYiVDTPWLCdC80LwwGU0y0QxDBIggNRGWdTyle9MW9KDyYtuoXGX6xUS44wud1gqTMrWJCwjEYXUhoswbJ7ZeqKSEl1IriLG6Dkp2DYM8ZDJ99X8QlJCI5yYLW/SyIT7IgLsmsXjnxWJl6Wl2tjANO7NEknpCbS8xErJnuBaE+EMEiCA2Aw+bGb+/pymBHYNZLyxGftFoJD/YVqS20ViS1KkJyh+WIb/MvzClLYTDqU0XNiDfvh9TksWiVcTBSM3oiIdmqamrUKPW0EqtEU3CjNMeYCc10n5PzFxYs+BEjRhzRJNslCEJliGARhL3A7fKgrNCpBvDS4GtgKnCiTL06VIBpddA6Yisub87JbBLNsqEsHYlmxCdbEJ9oUa/6+bgkA1y+FSi2/Y78gt9UKXU9VmsWWrc6BK1aH4LMjDG1bjnfnFJPm2PMBMVJevpIuN256lXEitCcEMEiNBk8HjfWLfsZnuL/sG5ZHHoPGgeTyVxv5c6VECl0oKzA/1ouRsqFCV02dcmoE7qj98h2SqAwVbaquA6Wls/N+w25ObORu+F3uN1ajAkxIC11P7RqfagSKsnJ/essRqS5uFEEQWhaiGARmgRL5n+InbmPwhyfh7QOwI78N7BlVibat7oVg0aeHvV26NKwFVe0iJRp8wFhYitxRZ1uS1dKUroVSWlxSEyLC75nMG1SmlW9Fu6x4ZtnllS7rXbd05CSGR/xM8a2FJcsR27OHOTkzkFREdOOyw/SbE5Dq1Zj0brVocjMPAhWaybqi6ZeY0IQhKaHCBahSYiV7JI7YAoryGmKy1PLl8wHBg4/TQWeaq6YcouIX5RorpmyImcw/bY6OPgmauJDTVYkKhESKkromqnOepGWlVjeX4QddaNMoWXacV7en4HaKL9WaNbHqqXK1dPqEKSm7gejseF+0k29xoQgCE0LESxCzLuBaFmhWKmsT8qOPY/gj2sz4fNGV4OD32PlUgqIxDBLiF6M0C1TV71StNiPP75+s9KOugdOOF8dG1u/s3AbRUpBwT/w+crjWlhQLCNjtLKitGp1sGpWJgiC0BIQwSLEFKwjkr+rDPm7SpG3sxTZu/9ESp+8StfnAM/Bv92wV+EsaQezOQ6WuHhY4xMQFx8Ha0Ii4hMTEZ+UiITkRCSmJKn3XM9gsMBotOomLuOrBQb2sK9jUjouRqcx/oJretjLhsuLjSvw118bYbNvCfk8IWGfQMDsochIHx4zvV8EQRAaEhEsQqPAOBIKEiVO1CsFShlKC+wwJ+YhPmMz4jM3Ibl99XEfJG2f+RWWURcwJNThBQqLAXDaGd3x+cUMhYte0AQmgxUGoyVsPtI6uvcGMzZtfiaw7fB9+V/p8vHPW5GRPkJl9FCoJCZ2i+6gBUEQmjEiWIT67U2T7wgIkrKAQClF/s4yFW9CSUHrgl+cbEbGwM1on7EJ5viSGu8rKf4QpGW2g8/rhJeTL/AamOhWCZkPWccFn88ZduwueDw8xjI0JN273YjOnS+C2ZzUoPsVBEGIdUSwCHuN1+NFUY49RJCo111lqmJr8I8tvkCJk+R9NqF15mYkZG6BKU6fiuuH1oikpN5ITRmApOR9sWrZ4zBai6pstjf84Bf2KsWZ4oqiRS9qNOHj87rC5kM/DwqgCstcwfelpRtQVLSo2uNISOgiYkUQBCECIlhaAHXVbI9F0gp204VThjwlTPyipCC7DF53aGCGKa5IuXTSMrcgpd1WWNM2wmAuDzTVYGGrpKReSEkZqARKSupAJCf1hUmXElSww6qygSprtte+9a17XY+FWT4GQ1y9xYdE21E32g69giAILQ0RLM2c2jTbY+BrUJAErCV5u8pQlGOLWJvEFFeM1LZbkN5lh7KaGBPXw2fYE2HLRiQl9QwKk9SUgSot12SKXHdEg3VWmLqs1WHRoGWFYqUmdVgav6Pu7rDmdBoG9XlT6qgrCILQkIhgacHN9g49ry/SWicEBYlfoJSq2iWVkZBmR6tuu5DcdiusqRvhNa2F2xva1t4/HBuQmNgDqakDkJIyQImTlJT+Ki23NlCU7Os5GWuW/ISVyxeg374j0Pvg+qt0W78ddWkmko66giAINaFp/Gsv1MoNRMuKopJCZbPfCu03o4d1STI6+ZDWYYcKiDXGrYPTuxoO57bgOkrWeP3vExO7lwuT1IFISe5X6341lUFx0nPA4VizxaFem4pY0ZCOuoIgCLWnaf2LL0TN9jX5ypKS3HFRpYXKSrYPRWKqBW26piKjHZCUtRXm5I3wGNegtGwZbLYtYMhsKY0B9vJtJyR0DQgTzXKyL8zmFLk7NeioW1DwNxyObBWzQjeQNKkTBEGoGhEszQg27Nu+Oh/rF+/B2r93K7HScfRzFdZjKjGXF246AB16JQPWdSgr2wg7s3jD4mIT4rsEhAldOxQnA2CxpDbcSTVDKE4yMkY19mEIgiA0f8HyzDPP4NFHH8WuXbswePBgzJw5EyNGjIi47ksvvYQ333wTy5b5Yyn2339/TJ06NWT9Cy+8EG+88UbI98aPH4/vv/++NofXomDmztaV+diwKBsbl+TAURboHmzwosuQ96ssVJbe7S+o1QNfiY/vGJKtk5qyLyyWjAY9H0EQBEGoE8HywQcf4KabbsLzzz+PkSNH4sknn1TiYvXq1cjKqph1MmfOHJx11lkYPXo04uPjMX36dBx55JFYvnw5OnbsGFzvqKOOwmuvvRacj4uT8uOVwdomm5flYsPibGxalguXvbzWSUKKBd32S0VGz1+QW1oxjTicdu1OQ7u2xyjLSX129xUEQRCEBhUs//vf/3DZZZfhoosuUvMULt988w1effVVTJo0qcL677zzTsj8yy+/jE8++QQ///wzzj///BCB0q5du9qdRQvAYXNj05IcbFi8B1uW58Lt8pZ37M2wotv+dmR0XwWX4W8UFi5AbmnlmT56WmWORqtWY+vxyAVBEAShgQWL0+nEwoULcccddwSXGY1GjBs3Dn/99VdU2ygrK4PL5UJmZmYFSwwtNBkZGTjssMPw4IMPolWrVmjJ2Etc2Lhkj4pJ2boyL6Q4W1pbL7rsvx3J7ZehzDkPDscOZBeUf9diyYTLVXnTQA0pVCYIgiA0O8GSk5MDj8eDtm3bhizn/KpVlafI6rn99tvRoUMHJXL07qCTTz4Z3bp1w/r163HnnXfi6KOPViLIZDJV2IbD4VCTRlFRkXqlEOJUl2jbq+vtVkZZkRObluRi47852LG2AL6gIcWL1j2y0W7f9bCm/YcyxxK44EE+G/oFGualpQ1DZsZByMg4SHX4XfD3ODidVRUqa4ukpP0a7Nya4v0QqkbuR+wh9yS2kPtRNTX5t7xBs4QefvhhvP/++8qawngWjTPPPDP4fuDAgRg0aBB69Oih1jv88MMrbGfatGm47777Kiz/4YcfkJhYu8Jk1fHjjz+ivnDbDLDtNsO2ywxnPgWaobyCbNdlSOmyDPFpK2A0laj4WHdAq3m9beB294WHk6cHious2LaVn6xRk8l8FOLjX1frVixp70NBwVH47rtZaIrU5/0Qao7cj9hD7klsIfejcq9LvQiW1q1bK4vH7t18ai+H89XFnzz22GNKsPz0009KkFRF9+7d1b7WrVsXUbDQJcXAX72FpXPnziqYNzU1tc7VH//QjjjiCFgsljrbLsvcb/w3Fxv+zcGezZqZxIOEVuvRpu8aJLdfDq9xbYh1xGhMREb6KGVBycg4EAkJnavZyzHIyRmKdeunwuksr0YbH98OPbrfidatj0RTo77uhyD3o7kgv5HYQu5H1WgekjoXLFarVaUlM2D2xBNPVMu8Xq+av/baayv93iOPPIKHHnoIs2bNwrBhw6rdz7Zt25Cbm4v27dtH/JwBupGyiDiA1dcgVhfbZjdjZvYwJiVna4laZk7IQ1q35Wjdcw2s6UvhM5Sq5ZoniL12WmWOVYGxaWlDYTRaa7TP9u2PRbt2RzW7QmX1ea+FmiP3I/aQexJbyP2ITE3+Ha+xS4iWjQsuuEAJD9ZSYVpzaWlpMGuImT9MV6bbhjCN+Z577sG7776LffbZR9VuIcnJyWoqKSlR7p1TTjlFWWkYw3LbbbehZ8+eKl26KePz+ZCzrURl9qxflK06GxuMLiS0Xous/ZYjrctKmOK3lq/PG2JOQ2bmgUqgtMo8SMWZ7C1SqEwQBEFo6tRYsJxxxhnYs2ePEiEUH/vtt58q8KYF4m7ZskVlDmk899xzKrvo1FNPDdnOlClTcO+99yoX05IlS1ThuIKCAhWQS9fOAw880CRrsVCk7N5UhA2LmN2TjaIcOyzJ2UhqtwydDlqOpLarYTCWBwwzXiU1db+AQBmL1NSBTd76IQiCIAh1Ta2Cbun+qcwFxEBZPZs2bapyWwkJCcpVFKsNBJmpU7bDrF47920No9EQcb1d6wuwftEebPh3D0qLC5HUZjWSuixD6xHLYU3eE7K+1dom6ObJzBwj1WQFQRAEoRqkl1Al0Dry+wer4bMsU12Of3lvCwyuATjojD7oMSRL9e3ZsYYiJRsb/tsDr2EjktotR8agZejYZi0MxvLqswaDBelp+/sFSquDkZzUB4bwevmCIAiCIFSKCJZKxMofX7+JdgdW7HL8x9dnYumcw5C3exfMyUuVSOkwdjksibqqbSoTp3PQzcNGd2ZzcuV3QRAEQRBiFa8H2DwXKNkNJLcFuo4GjA0fuiCCJfy+eH34Z/a7VXY5dhZ/ii4Ds2Ew6lOO45Uw0Vw9LNwmVhRBEAShSbPiS+D724GiHeXLUjsAR00H+h/foIcigiWMHWtykdb77Sq7HMel+uvQJCb2ROtWByOz1Vikpw2HydT0goQFQRCEesLthHH+8xi49VcY528GRl0JmGtWmqLRxcqH51VcTvHC5ae/1aCiRQRLGHn5C0LcQJWRGX8fhow6t77uiyAIQsvF7QT+fgnI3wRk7AMMv6xpDfTkh8nAX0/D5POiO+d/+gn4eQpwwLXAkQ+gSbiBvppY9Tr8vO+xDeYeEsEShiW+ELBVf+HiEyT1WBCEGKOpP9HrBnpdIzXgh7ubzkCvncPcGaoNSkhbFK8Xhrkz/DN7cy5eD+BxBiZXHb8PvOZvBmzVNNDl55v+ALofjIZABEsYWV32wY786NYTBKGZIE/0LWOgjzjwuwAvB2lX6Huvu3wAV+8DA7n2ucsGuO3+5m5qsgMeB+AsA+bOrHAOhPNqOc9lyzzA5wndL/ejnzwewMf3Hv/kC7xGbGjbSGz8XQRLY5GZOQImQxbc3uwKf2yEf2xmY5ZaTxBaNF4PDJv/QMe8v2DYnAp0H9somQN7TTN6oq8Az6k+BvqQffgCA2rYE7r2noO5GtxtTLUEXHb/qzbYc57vnSXAX89UP9AzW0UN9O7AIO8pH+C15TxvbXDnq5r3MqsicJ99ofe7HqisckVw+bYFaCh8PF111obAewO8vG1qnu85GVVLGI/PCI/PABO8aBVvr3bbXp8P5aVi6xexsITBKrP9970XS5ddXVHlB+b5uVSjFVo0DMb77jaYi3dCdQfb/ByQ0h44+pEGzxxosgN91GLA7R/QHaWAqxRwBiY1+JcC9mL1RF8lPJfcDf6ndYoEvUVBsyCEPOFrIkD3VK+JADXiBQZ+1frd17AD/fZ/ELMYjKrauSGKa1JqSIHT2gYenwkeg8n/ChPcfPUZ4faZ4ea8l+/9y11eA1zewKvHCJfXCJcHcHtpjPGp+mDu4KtXvXrcHpX9WuNTgQ+X9VyAZLOz0of3YnccCn37oLo2vHWFCJYIZGWNx8ABz2LN2vvhcOi7HLdH716T1eeC0GLdD5VlDhTvbJTMgRrDf2n59M+BnpaVqqAQSN8H8AVcAJo1IOgKCLzSFcD7yteQWACdqV+9DwgB/dO/9tTv0z/9170QwOqvETsYAgqEr0b/QO91w8DrUQ3e+HQY0zoBRgtgMgNGM2Die6t67zNa4OUEMzwGMzwww6teLX4xoMSB2S8CYIKHg74SBAZ4PAa4vQZ4vGGDfmDgV/NuT2Byw+12l793OeFxudHGswkntV9U7Xl8vWkfbCtLj/J68e+ibixCBoMRJqsFZosVZosFJjXxvRUmi9n/arWirLAAv+zOxfEdV0Z8eCezd3dH7/hOaChEsFQCRUmbNuOQk/MXFiz4ESNGHIHWrQ8Qy4rQst0PKnPg+ppnDnBQ5iCu/Px8dZTPB987dIO/5ioo01kWaFEoC3Mr6GIH1HvGGOjFgi4eQLkEaur/9wHf3oTYxRD9+ViSgKRWgMEcGOgtusFeG/AtfvHM9+o1zj9p7y0J/vd8NcUzSyGwLAGwJCqh4DZYlQhQT/1en18AaE/+nHdz0HfB7XLB43T6Xzkt/RQj7J9Xexo/ZA9ATmFvtQ2PS/f9wOTm34w2ojYCJUhEcWtrtZaJXGMnpLdLCQgFThQRFpitVpjMfiGhvTdb/aLC/z5caATWrWw7AXGirWM0Ree23bp8CT68fz2+3N4Ph7VdjxSLM/gZj59iZV1xawzNbIWGQgRLFdDtk54+Em53rnoVN1Aj09QzIBrL/cBBOjw4MPxVLx70FgRlVSgDnHy1AfkbAFt+9ZkDUzv5x1K9WGjKUHyxKamyBphYKdI/2Kv3gaf84OBvLh/8QwZ+ioF4wByne+VATyGQ6F/GwV+9TwCsyYCVr0l+saFe44OWBG009P75NIw/3lXtKezqdQnKeh0Pj9MVsAYERAMHfaezXEQ4nEFrgf9VEwV8LSn/vjtUcHAZg2NrC10Q/XpWP9Cv2E6Jtjbq7XKA9g/cVpjN5uBArwbwwIAeFAiB5UGRUIPlShiYLdizZRN+efeeai0Tx910JzrvOwixSsd++yI5szXW5QHri1uhY2Khujclbiu2l6WpOJiUVq3Veg2FCBahadDUaxo4yqJzP8Sn+y0ESiAEAhOD2QiaoHBGdkGEZxhoMQiNkVHAp9y6RhMHmnWAA7cSCAELQFAIBCYO/Bzw+coBPy4w8MelKDHg3TAHxsVvVrtb7xEPwTgmcrNXwkHarQZvl3/QV4O4M/SpP8QSUP652+aCp0hvKSiF25XvFwJ0NwSFhdMvFPQiIfDe5bTjkq7VD/TvfrIIPixGQ2E0+cWBsgAosaCzGijLgFnnirDAXlKMXzZU74IYddo5aNe9V0A0BFwYlsgCwmQ2w9jAgeBZ3Xtg7kfv4svtqNQysdvat0EH+trA63bYhZfjy/9NVeIkkvvq0Asub9DrK4KlJdDUYybq2zLBrALlZtCyGGhRKAVsBYCddXnyAXsR4CgEHCWAszgQ+BgIegxPb1SuCIoJWhYoGgJxCdXiA365H82C1E5Amz4B0RAQDHxVVgMKh4SAK0FzKWjWhvjIr/y8kmhMJRi0AZ+DuU4wuJwOnUUh8JmNry7k7OyJA1zVD/SffbYMpq9vCLVCaO+dLnh5nxuZX3b3qHagT85sg8T09KAboYLrIYKI8LsbrIHPy0WBtjw4r7ksgt+x1Hgg83o9eOmaLdUO9MedfEaDi5DaDvSVWSaOv6lhB/ra0mvkaBx/05345fUXUZKXE1xOywrFCj9vSAw+hjQ3cYqKipCWlobCwkKkpqbW6bZdLhe+/fZbHHPMMbBYLGgWMRM0azcVywTF1kNtq3EpGIAx1/utEkpMlJSLCWcgnTIoJgLplo1tgagUg99qwHukuSGC7oZwy0LAuqDcDnG6SbMwBKwMatJcDXQpaNvQtqOPWYiwXPfeu+E3GN8+sdqzKDr2VbjaD/cLBJ2AcDsdasDXlodYG/hZQFyUfxYqQvzfdQTW96/DgMfa0jMlRw306spHGOjpv6efPmoMhgjBjLqn/4A7IRibELA+hMQmBNwXmvuh3IIQHq/gf5+9aQO+nfGoOpfwgb7IVR5rcPo9U2PaBUHWzp+rBnq6hyIP9Hc2+CC5N+cSKwP93kIxuX3lcpQU5CM5PUNZh+pKcNVk/BbBUuVd8sC94Tf8+/ss7HfQeJibWp2JyiwTGqOvrx/RQgtDWS5QmgOUccoFymilKABstFJwKvZPKj2zNCwDw1FuoWCGRWMTjFvQByjqxIFeGGgWhPhUIC4ZiEsD4tOAzfOA//w9qqpk/FTggGv2+h8XWhVoXQgRBup9+TJ3jZc5YSvMw2nJX1RrlXh53XA1wDQ0BqMRZmtcUAhYgpaDckuBZk1wlpVi03+Lqh3oR59+Dtp27xkMaiwXI/pgRv/2GS/R0E1P/ZaJS9TAWNlAz4Hy0qdfaRJP9c1toN+8dAn+nPMLxhxyGLoOHNQk7kFDIoKlmXWorDfLBAfiS372uy3o8mCwJN0fmivEQTeIZrEI1H2g5SKYlaFVfayp66Me4LnQiqCyHLTMhkBWg2Zd0FwSjGFQU6pfTDBuJCHd/6rcF5r4CAQ/MsCyltCASZeBo7gQ3sf6IamKgZ4DzJpRz/tTKoMWB52AqLAsssCobxdFNFaJDbZ2sCYk+l0P2qBOIRFwHfitCZprIk6XyaD7zBr4LOh2CLgqAsvDRUhNMiCa20CvWSYqoylZJur7ib6hafJW+npGBEud1Jk4P8LgG/jX+fQ361+08F9/Vf2xtNwSoaaSsPe6ecZXKCtGHpC73l8XIxYI1Fkod23oXRhacKRmnQgICk1I7PgXWPl5nVsmgnEPDFp0cLB3BF6dcDscfuuEw+7/XL13hLzXvhPyveD7wLp873DAFxCNde5+iDLwMTigB4UAhUO5IAiKAU04hCwr/4yv+Tt34I/33mgW7ofmNtA3J8tEc0IES90JFgm6DYcxDbSsRLQUcJkB+H5SaJ0JTVyogMxwQRHpNVyEVLJuo6SCGkILManaC1q6pZZiSVHBKRVI0FkoEjKBxFZAUmsgsbV/eQ2eePVigsLAZbfDsU8BrEu+rdYysXCNGe4Vz5WLDU1YOMNFSLm4aGg4kFdX06Bdzz7I7NCxXCQELRPWSpeVWxn06/mnun4q5ZPvv7O+ialUx+YUVLg38Fh7DB8pLgih2SKCJRz2qdC7gSrgA4q2A08O8I+WjSouKkGrAcHYkOoYPREYcWm5ZYNCJUqYJeGyO+C02+CiNcLhgLPMBld+EVz2PXAFljvt/MwefE8hwvfhr+qzwHb09EypOgOCGRLr1n2F2qJlSVg44MfF+V+193EBa4P2XgmB+MB7/7x6H/hM2wY/C24vLg47163BJw9NVqKksoGejD37gpi2TMRiqmNdDfTNwQXBY+7UfwBSNm1Rr03xHAShMkSwhFOyG1FRmajRUjCVaDAFunahvCunylax1VzgUFAktQGS2wLJbYCkLCA5K7AsKzAfWB6XDK/ThrL7uyDJVLVlYqtlNNz/rAiKDroxlNCwB14Dy/yf65bZHfWfzmkwqDoK0Vgmug0djnYMjAyIjUgiwhLhs/qwQkSiy4BBqggTn+IrG+ibimWiOVklNPg3EMtCURAEESwVoQCIhg5D/FYMxowwA4ZxIxQlKoXWFt02mEESFB/ViBDGeARM8vaSEtiKi9RkLy6GbSffb4WteLkqvsTlBbt3IaMgCsvE89UUM4sCigpLXDws8QlKDFji+T4+dFlcPKz6ZfFxIZ9bQ77rf09xsW3FUnx4/53VWiaGTzipyVgmKqMpWSbE/SAIQkMjFpZwAqN5pBbnIct3VFIxknEbQbFRhQBJaqMac2kCQwkPipCSIti28nUX7MVryoUJ1ysqgr2sNOo+Gbmo3jLRqnNXpLdtrxMTcQHBoBMdIWJDL0b8rxQs9V0eWiwTsYe4HwRBaEhEsIRTloMdZclon1BSqWWCn3cYfiTQ8/CgCHFbM2D3xcNms/uFBYWHEhvFsGVTkOyBrXg9bDqB4qD4qCVxSUlISElFQnIqElJTEZ+c4p8PTCUFefjro3ertUwcftEVYploQJpTvIQgCEJDIoIlDG9iG3y1vT/aJRThsLYbIlgmumFTSSY6WpNgX/SPX5AUM8g0SjdQOAYD4pOSlciIT0mpRISEihEur67eBF1HS3/+QSwTMYjESwiCINQcESxhbLelocQdh3XFbbC+uHWllonNazdVuJgGg9EvOig0lOBIDREcfkGSpvs8BfHJyfXydC0xE4IgCEJzQgRLGCWFhcH3lWVzkEFHHI3uQ4brBEka4hITVWnwWKG5ZXNIzIQgCELLRQRLGIwpiIa+BxwU07EfGhIzIQiCIDQHRLBUkZVSGU2lXoaGxEwIgiAITZ3Y8V/ECFrsB2FSkDsxBa7UTPXqa4L1MojP40Hp/AUo/Pob9cr5pojX68XmzZuRl5enXjnfFGFjw5Xffof5b7ypXjnfFOFxr541C7bFi9VrUz0Pwr+ljRs3YunSpeq1qf5tNRfkfgiREAtLJW6UfqMPwz+798BrjQsuNzodGNa2TZOK/Sj64QfsnDoNu7we2OITkGC3oZ3RhPZ33oHUI49EU2HFihX4/rvvUFRcrOYpWFJTUnDU0Uejf//+aCosfO89/PzffyiLj/cv2LgBib/9isMHD8b+Z52Fpnoeq/75B4l//NHkziPS3xZpin9bFUSkyYR+48er1hNNieZ0P9wOJ1Z8PAu+1RuwouR77HvqeJjjrGhqeFwurPnxJxTt2YPUNm3Q+4hxjfJ3ZfD5oqxCpuOZZ57Bo48+il27dmHw4MGYOXMmRowYUen6H330ESZPnoxNmzahV69emD59umq1rcFDmDJlCl566SUUFBRgzJgxeO6559S6dd3tMdp/jL9atco/E6EQy3F9+zaJf5QpVuY/8igWDR0CW6K/Ui5JKCvD0EWLMfK2W5uEaOE/YB9++GHFan6B+dNPP71J/EPWXP6umst5NKe/rYhiGECi3d6kRGT5/fD3YQ0SmG9K92P+8+/j1x3rUWYstzwmei04uEMPjLzyTDQVFtbz31VNxu8au4Q++OAD3HTTTUpgLFq0SAmW8ePHIzs7O+L6c+fOxVlnnYVLLrkEixcvxoknnqimZcuWBdd55JFHMGPGDDz//POYP38+kpKS1DbtdjsaQ0ny5ijCS90G5n9YuhSrV67E+vXrlQjbsmULtm3bhh07digRt2fPHuTm5iI/P1/dhOLiYpSWlsJWVhZoBOjA/9s7E/AqqjTv/+tu2RcgIQskLCJICATZg4xMI4F2aB2/RhFbR0ZbnfZpbEREadRWW23UHhw+RQUcW77+bMUWRtt9RMB0i4Rdmk32EWULgZCQ7W5V87znVt1b96ZubvbUvby/PJWqs9SpOvdU1fnXe5aSXS7fQtsNDZDr6iDX1sJbQ0sNvNXV8FZVwXvhAjyVlfCcPw/PuXPwVFTAXV4O9xlazsB9+jTcJ0/CfeIEXD/Q8gNcx4/DefQotr66DBuvGo/6hISgbJCb/LcuXy7SpmMrLpf4SrIZTcOfvP++8dTD4jtNCj59/33Tm/Cbc11RuNmbVcyeD3r5CV3o2jBaPB5PTFxbehFZFxeoVAhykz+Fmx1xr695v7FYgepWgE/+KzrKg8TKp6e+RZ0UfB+Qm/wpPBrYbrLrqsUWlrFjx2L06NFYutT3DRq6ePLy8nDfffdhwYIFjeLffPPNorL+6KOP/H7jxo3D8OHDhUChw+fm5mLevHl48MEHRThV8llZWVi5ciVmzpzZqRYW6lPwzpbN6AwkWaYCgEVd67fFWlZgUQzWkcJlSkvGd336wEvT5of5xoDN48Flhw+rzwJJPBQUSYJE/XMsFihWCyBZIFkk4fYtFEZx1XDyk2gtGWyH+KluOkaQnz+eb9sfLkmo87hxUmcaDkcOzWujfSJArai07cDnFgLb/jjC6fP3BUWIr6WphYcJE346t9PrRaXuDSUcqfX1cNBvoC+qsGtfmen9GsXTpWUURwsPCtNdL6H+VFXIESYtFND1aXTdNQPDB1Ir02oP6KqiHFN+JPUtT7/W/A3D1PAgd8i+YcP0boNjaNv0orHD6YKbysXoZ1IAu9eLkXEOSFarT8gFgoIWQz81vlG4UfxQf/3+Te3bIMs414zqKMNiQbzVGvhN1GvDoj4/gsqE1mq4ti1CRFQpsI9+UcMt2r76MIslcEzan9y6eLSPrCjYfPAo3JIctjwcihXFgweI/cUjx/cv+OrXPUMCP4tiGO5bac+ekLih4U3E1T/HqG7f/sNJeEQ9YJyPRLcH8558vE3NQy2pv1vUh8XlcmH79u349a9/7fejH3zy5MnYtGmT4T7kTxYZPWQ9eZ/ebKgJ/9gxYZWgNDTo5EkY0b5GgsXpdIpFn2HC7XaLpS3QRwObQ2JNDeweD2SquC0SZLUiDl2L7TAPeIXiNLcCaG8kCR67HQcGD+6c42mVfwe9HZ1Sr4EuQRNdTdHMG7o6xBoWtajXdixA3yQX3yUPV5m2vFW9/bE18QyRALfNijLqbB+lHe71VNAzxOxWlqbaLiTAJXlReuAATI+tiYxIQJ3Dhr2fforB117b6kO0pM5ukWCpqKiA1+sV1g895P5Wa9MOgcSIUXzy18I1v3BxQlm0aBGefPLJRv6ff/45EnV9NVqD6+zZZsUbkJiE+D75/orKZxVQ33t8Etz/pup/0yXVqq4DfoAsrM/BbyGErPfTVLKB2RsGfs7yszjvFY/ZJukhORCflAZ6z6YXAnFaZO0hK416QItqiZDEQtYb30NaZJP2IX9tP0W116h+gf20tLW46luPP57vjYhcvl9REmHVNhn7Ey9EzEdhfU+kyXHqz6+VQ+A91feWpb2BaeJCC9NtG75KGL9ghIY0JVkuSDXYYW88O3IoI9390UNJaZRy4IylxmHabxvyX58Xw/1aEKZtn5WqsMGxN2I+JrkKkSU3nnSxLXaScGXTvGM09j1tuYAvHH+PmN5EVwEylVTxFiz73oXF/4BbgSIF/P1+/jiB+BQvEG6QjpaGSE8fpktD7y8B1VIdzlgCE16Go6echlQlwX9v6e6U4PsuyKW/K4LvTb2vURrGaercSrC7UqrFN824R4a7+yJdSVJ/FXp0BH4f4Q7a8tsODOMEuaVW7GNwnGpLvbi2IpdHKlKUhGY/S6RwLqX5z6lw4UZp03V10lqJSOzasgPH2iDa6+rqYnuUEFl49FYbsrBQs9SUKVPa3CTkLSnBsacXoc4e3rya6Pbinx79dZt7SQux4VGguLxQ3LJv7ZKhuNW1ti3CZIN4Or+Q/U+4KvCJfUfEcxjrLERuffMmy2sTeo3QAuihfFzZiFo4w5ZHEuIwRiqExdqMxI3uqxbea16tepFkeNWqgyoY8pUlX5js95PFAzVdzsAB5VTEfPRCGhpsPushScLQR5iie9D7fBv/sMJPtTD7KoMmBIkurUDVoYSNm62kI0mJi5iPHDkdikUVt41SCj6bUFfjXOvTNzozo1MxDrPoXn3z5Yxm5aWPnCHKVS8iNFGBRqJFExKNhYX+hUS8pOgqOp9bqzh9+/jT9lfIxueQXpeMM47IgqWXJw6VKTVqqr4MBp9r4PiBP/rJtbMJzqeRXyCmJiR0eVEvBnFPiIIJnAn5DanIbFZ51OAoynqq82SpLzrBEilwfWgvQ9p1oL8f9PEDAi6M4Pe/UIWJ539pkJBzIbVZvUPTvG6Up1cGXdNamsHupp9rUhP3knbuoXs053g9q1NxshnG/x7Z2SjRDaJpKVoLSbsLloyMDFitVpw5cybIn9zZ2dmG+5B/U/G1Nfnl5OQExaF+LkbExcWJJRS73S6WtmCz2jDeXoQvsMe4pzqA8dYiKN83wOOhzqoyZE0oCPHgDfj5RUQYP7fc4sqyuWQjHUm2yDd/d0cKauPc/oehlx7M6p+27aU/UTn7/jzq4lW0bfVP8cCtrn3xKU01NbH2Veiaf3C4r3L3H19d92roiXFVI7HOvjtseYxzD8Rrme/iUOL36kPcdyz9tiYchNhQj+U7H01e6MSGZBympWmz2GCRLLBarLBJNtEsapWCt8ViUdeSFb3OdceNh6ZGzMfqglI09PY9NOgYZBmi/cU2JJGmFqZfRJgWT93H10ZPVbQuXkvSaxQmoerAKYwrHRgxH99MOolug3IhK+qvRtZFddvIT2zTL6x1lKU/xWfyo3XodlP7RzyOtn20FlfvHhExL6uK1gP9E/2/i9bPQfttNKueFk5ov7VR/ECfCzU9fRxRZr5aQp+mvn+F/7jUt0aSUHmgHElbIt/rzn9IRF7BoMbnZXCeocdrl33CxBEiUgJ2n9yFvP88hw2Jx8KWx5i6XNTdnYH7cn11Q8DyrPUBCbaAaHFC/fz9RkLT0ERYiMWgJWntPbUbiauP+TrchnvpVeyw3pyHyTlDA31stMi6fUKFmBQaV0doWOg+RscwFHpq/KM79iBpw98jXle5o4a1qd5tyb4tEiwOhwMjR47EunXrxEgfgjrmkHv27NmG+xQXF4vw+++/3++3du1a4U/069dPiBaKowkUUlw0Wujee+9FZ+M8VoW+zixcY5Hwte0gjsoO1MOOBLjRX3JhvGcg+so9ce6NyGbxFmGzwOKwQLJbodglKHbAa5PF4rZ64LJ64bS44JRcqLc4UY8G1Ep1qEEdLqIG1QotF3FBrkal9wKyarrhltPXR3wY/6b3S9iddAgdCT1cHRYHHFZ1UbftVnvAPyQ8nsKs9MHJSnRfa8M1rkKUOQ75bh4VulnGuS5Hd8WGjIkDUNz92iCR4N/W+dG5kOAI3dbiGYWLtWTzh7eGrSe3wHbkNK5xF6LMbpAP9+VIstjwfybNxOjc8FMEdDWe3h7s++qzJvORao1D8aR/hk3rBG1StuZtQeKuUxGvrZKJ15u7TPp6sGHjW9hoPxr2Xi9y98Kkkp+ZukxyL8/Fivh7cY1riu/aknTlofiurT3xa3HPgFfEvWhWCnoU4MV35wJS97DlYVfKcVPhAlPno9eEXvB8fi7idVU4qvPujRZfvdQUM2vWLIwaNUrMvbJkyRIxCuiOO+4Q4bfffjt69eol+pkQc+bMwcSJE7F48WJMmzYNq1atwrZt27BixQq/miMx8/TTT4t5V0jA0JwtNHJIE0WdiXzRJdbH5W5Y7SrCWZ0JJBMSeiMe/ejNJi0O1jQHJIcVkt0i1rJNgcfm9QkMiwcNFhcaJCfqLA2oQ70QF7Wo9YkL+SIuKNVCYJyXK1HjrhFLrbtWWC7CQqcTqd+cFTic+j+4u3w6JrkLsdmgYhmrVpBybwd+nPZjn4Cw2BFnjfNvhwqM0G1/HH24XpCo4VTptxav7MXCI3Mw++gM5Ddk4oy1CvVwIgFxyPKmibf+l/u/i2dGLDH1zT8ieyQW5vvykefMRLklkA/qW0C2jJf7votnspfAzFCFVzcpEX3/OzVsPk6UeExdMQaVSf9mXFtRUCYpJb1xzdpElNkMKnrP5bCXdDd9mdD9e/ldM7Bl2UpMr74RFYkWf3lk1Ml4L2E1iu76V1Pf5wSd39C7rse2Fe/CYs0PGtpMlhXZexxD77nJ9PmwmfC6avGRaJgyzTPym9/8RnSKJavIZ5995u80S3OSiKFaKuPHj8dbb72FRx99FAsXLhSihEYIFRYW+uM89NBDQvTcc889YuK4CRMmiDTjmzEMtN1JtqEUbjyC+kZBJF7I/xkAh/p+jL3JR3DRdVGIDBIbHlfkTq7Nhd7kk+xJSLGnIMmRhGR7sn8ht/C3JyHZYex/+MJhLLv4//DoibuRH6ZieTrnNcwbMw+js0fDrNBNXTL1BjzzwWv4tzM3IdcT6G9z1n4ey7NW48aps0x/8zeVj3LbeayIknwQ4340CWVYj8T1dch1B/Jxzl6F+kmJIjwaiJVrS18mU9YXwulS/Pe6wyqhoSQpaspkcp/JwC+AX2x6FqP2pyCnPhWnEqqxfVwN5hc/7AuPAsR53gM8//WzGP1tNrq5UlHpqMa6wWcwf3z05GOcya6rVs10azbacx6Wsh8245dLz+JcEx2dekCBe9AjUCyNh9ZRW6BeSISKCk1Y+N2OZENhkmBLaPU8FpplYuqaqRhwOkc8jDMNKsgj2afx2fTPouKB/MV3X+C5zc8hsyIF3T1pOG+rQkVGDR4a+1DU3PyxlA+CJl77+7bN2LdrNwqKhmLYqLGmf4s3gsvEfNDza0f5DpytO4vMxEyM6DkiKp5TRvnYcnIL1m5ai5LiEozJHROV+fB4PNi7cxtqK6uR1C0VQ64c1W73ekvqbxYsISz56mMsCcxxF5bioSfxkyEDkZmcjKzkFGQmpyAtLlUIjdb2c+iIB/EDXz4ASbagd+V4OFwZcDkq8EO3r4XYeuEfX4iqStLl8eD/b/saf921C1cXFeFfRo2HIworyFh5GGtzKHzyySfiUxtt7fDelXCZMB1FrNwjHUWHTRx3KaB46AeLPMxq0+5cbNpdA4CW02Iuj+Q4G1Lj7UhLsCM1wbedmqC64w38dO4k6gvTzrN5khi5Nf/3WLG+Envdvrk9CFvl1bh7UreoEiuf7TmFJz/ch1NV9LmG/ig9dhH/uaEUj19XgB8XBkaXRQcWeGr7w30xFx6Fmj3NIXAvZUgwmrlplGEYFiyNGNN7EI0fiHht9EqPh9uroLrBjQYaqqwAFxs8YjlxoXH/l0hYLRJS421CvGjiJiB07P6wUPHjEz52xNkCwyX1lfyy//ZAQUCsEF53ivAvyjwVFZU95ePeN3c0GgF+uqpB+L9624ioyEdj4eUjJy0+KoWXV1aw+dh5bK+Q0OPYeRQP6Cmu42iE8rLl2HmUX2xAz5R4jOnXPSrzEitlEivlwbQv3CRkcKOMeuYTVNaGjuPSUNAtWcK2hf/kv4GcHq8QKlX1blTT0uBR127VzyO2yU+4Sdjowkn4tBWH1RJksUmJt2Hr/5wXYioc6Ql2PHH9EDhsNKeIBJtFUteq26q5fevANg33lRrvY9XFFd/ZaPsDhspjwnPrgyp4PXSE7LR4fPXwJNM/0MIJL+2sWXh1DbEiIjkf5oOeX5sOl+Pzv23GlH8YywLSAO7D0g43/i/epFlijQafS1jWjm/01OeZRIUmaIxEDgmcqjpfmM9PFUdquGzSbtNk8GkkgvRCxxrwJ4FjJJJqGjzYczJyE93kwT3RKz1BiCn6VlfQWvKlS8NUKV0SUvq1duzQpTlx/PFE2hbxDUf9WuxHM/AqwOQXSnG6moWXmYgVEcn5MB8sIJsHC5Z2utie+GAvTlc7Tf3WRYKn1uUNWG9UgfPlgXL8afPxiPtf3jMZ3RId8MgyyNDjlWV4vIp4M6DF41/LATeFK4EwWpj2ITPFgZQ4O+xWixBZNqsFdlXIkZ/wt2jbargq/AJ+mtsXLziO5udzO2y+tZZ+IG3Vj/axBfalZsep/1EadF9Eq8UrVqx3nA/zwQKy+bBgaSei2Zy36cg53PJaWcR4b989DsWX9WizaAoWNyEix0vToev8vQYiyL8mP1U4yQq+PVWNpRuORDyH6SN6ITc9wS+gtPS048qaW3c84ziy+BCsXsBp5+NPWwmItqB0QtKL/gkDWk+CncSPrjNx0HTjwYT2vQrtex4xfqPw8KH6MJdHFiI/EtTMSs2m/s/b6cpV29TPDhHw08XTfbw0NKLezyielo5/KvggP5pt3He9RUITrfrfQQqa0l0/ZbvOX/2eq29b9w0d/2+pfUA02D8wNXzj/f3+urgNbi/KLxoLYT0Ds5KRnkgTUho1WZN1M9iSq3drFk+taVuzvhpZefVuzYJq1EQefDz6SrmCO1duRUWNbxJSI3qmxOHP/1bsr09CnxX6sjYKJ0K9Gn9OIDQ8xMMglj4OPddue31z2Hy0l6DnUULtBBXC2H7dcW6/ItbRIlYI6qRGFiHqmKo0cbFRvLZCDyGfNQDtzrWFOViz40TEfDx/Y5HpyocqEk3UkIC8Y2Xkzty//echuCI7FW6vLBYSdySeqJ+T5narVjBfHBKAMtxCCMoBPzWOK1watFb3calpkFt/XC2OlmZLqBd9p8L3n4omqOk1FvCVf6Rpss3PwTM0MjO6IWH2j//+JaIZBRDWSeoc3daX3ubCw5pjFKq8qfmK2ud9398NoFXrFG62Sj6W8kFvXvTpOvrw99UDM5slIG8d28eUedGsaBuPVGDWHyILr/+YUYQr87uFtSD43Y2O0+jITYY3tX+kt9Rd31/Agv/ajUg8N30oivLSDT4Sp651cfVWh8Z+YSwNBvsbHUeP3m/n8Qu47+2dEfPx4szhokz0Fhu9pSbwcT9tW9szOF6oxYfcRmn69w76OKA+nYA1iTb3nKjC4x9E/kbb3MkDMaBnss8aqugttkoTbrKYBpq09ZbQRm5V7OutwqGW4IClVm5kua1x+kaLtsTi1RrLItHIpzVphNmHLJDU3SASNJKrs2DBEsNQXxvqNBg6AiLbhH1xYj0f0Sy89Fa0CQOaJ7yuH97LtHnRGJiVgv+77lDEvNw4Ms/UeclJS8DvPtkfMR/ThuWaOh/D89KxrPRIxHzMnjTA1PlobnP8H+8c22mWiY7MBw077yxYsMQ4VJmXFGRH/ZwGWj6itU8RwcLLXES7iNTgfFy6zfGXWj54HpYI8LTK5iIWyiMWJsWKlSGbsZQXzof5RgkhjBCOtuHyHZkPHiXUjsRCBRlLcHmYh2geRReLIjKWyiQWyoMFZPPgUUIMw3Q40TyKLhQ6dzP3J7jUyiQWyiMWmrHN1q2A+7AwDMMwTAfAArJ94c/EMgzDMAxjeliwMAzDMAxjeliwMAzDMAxjeliwMAzDMAxjeliwMAzDMAxjeliwMAzDMAxjeliwMAzDMAxjeliwMAzDMAxjeliwMAzDMAxjemJipltFUfzfJOiIb9fU1dWJtPlbQl0Pl4e54PIwH1wm5oLLo2m0elurx2NesFy8eFGs8/LyuvpUGIZhGIZpRT2elpbWZBxJaY6sMTmyLOPkyZNISUmBJEntrv5ICH3//fdITU1t17QZLo9oh+8P88FlYi64PJqGJAiJldzcXFgslti3sFAme/fu3aHHILHCgsU8cHmYCy4P88FlYi64PMITybKiwZ1uGYZhGIYxPSxYGIZhGIYxPSxYIhAXF4fHH39crJmuh8vDXHB5mA8uE3PB5dF+xESnW4ZhGIZhYhu2sDAMwzAMY3pYsDAMwzAMY3pYsDAMwzAMY3pYsETg5ZdfRt++fREfH4+xY8diy5YtnVMyTBCLFi3C6NGjxeSAPXv2xA033IADBw7wr2QSnn32WTFp4/3339/Vp3LJcuLECdx2223o0aMHEhISMHToUGzbtq2rT+uSxOv14rHHHkO/fv1EWVx22WV46qmnmjX9PBMeFixN8M477+CBBx4Qo4R27NiBoqIiTJ06FeXl5U3txnQApaWl+OUvf4mysjKsXbtWfJ9jypQpqK2t5d+7i9m6dSuWL1+OYcOGdfWpXLJUVlbiqquuEt87+/TTT7Fv3z4sXrwY3bp16+pTuyR57rnn8Oqrr2Lp0qXYv3+/cD///PN46aWXuvrUohoeJdQEZFGht3q66LRPANA0/ffddx8WLFjQWWXEGHD27FlhaSEhc/XVV/Nv1EXU1NRgxIgReOWVV/D0009j+PDhWLJkCZdHJ0PPo40bN+Jvf/sb//Ym4Cc/+QmysrLw+uuv+/2mT58urC1vvvlml55bNMMWljC4XC5s374dkydPDvxYFotwb9q0qbPKhwlDVVWVWHfv3p1/oy6ErF7Tpk0Luk+YzueDDz7AqFGjcNNNNwkhf+WVV+K1117jougixo8fj3Xr1uHgwYPCvWvXLnz11Ve49tpruUzaQEx8S6gjqKioEO2QpJL1kPvbb7/tsvNifJYu6itBJvDCwkL+SbqIVatWiaZSahJiupajR4+KJghqwl64cKEok1/96ldwOByYNWsWF08XWLzoo4dXXHEFrFarqEueeeYZ3HrrrVwWbYAFCxOVb/V79uwRbyxM10BfL58zZ47oT0Qd0pmuF/FkYfnd734n3GRhoXtk2bJlLFi6gD//+c/405/+hLfeegtDhgzBN998I16y6IvELCBbDwuWMGRkZAhlfObMmSB/cmdnZ7fhJ2fawuzZs/HRRx/hr3/9a4d/oZsJDzWXUudz6r+iQW+RVC7U58vpdIr7h+kccnJyUFBQEOQ3ePBgrFmzhougC5g/f76wssycOVO4acTWd999J0Y7smBpPdyHJQxkSh05cqRoh9S/xZC7uLi4DT850xpoOCCJlffeew/r168XwwWZruOaa67B7t27xZujttAbPpm8aZvFSudCzaOhw/yp/0SfPn06+UwYoq6uTvR51EP3BNUhTOthC0sTUHswqWF6EI8ZM0aMfqBhtHfccUcbfnKmtc1AZF79y1/+IuZiOX36tPBPS0sTPe+ZzoXKILT/UFJSkpgDhPsVdT5z584VHT2pSWjGjBlivqgVK1aIhel8rrvuOtFnJT8/XzQJ7dy5Ey+88ALuvPNOLo62QB8/ZMLz0ksvKfn5+YrD4VDGjBmjlJWV8c/VBdClarS88cYbXB4mYeLEicqcOXO6+jQuWT788EOlsLBQiYuLU6644gplxYoVXX1KlyzV1dXiXqC6Iz4+Xunfv7/yyCOPKE6ns6tPLarheVgYhmEYhjE93IeFYRiGYRjTw4KFYRiGYRjTw4KFYRiGYRjTw4KFYRiGYRjTw4KFYRiGYRjTw4KFYRiGYRjTw4KFYRiGYRjTw4KFYRiGYRjTw4KFYZiY4csvv4QkSbhw4UJXnwrDMO0MCxaGYRiGYUwPCxaGYRiGYUwPCxaGYdoNWZaxaNEi9OvXT3xFu6ioCKtXrw5qrvn4448xbNgwxMfHY9y4cdizZ09QGmvWrBFfuI2Li0Pfvn2xePHioHCn04mHH34YeXl5Is6AAQPw+uuvB8XZvn27+Mp6YmKi+IrxgQMH/GG7du3Cj370I/HF6dTUVIwcORLbtm3jq4BhTA4LFoZh2g0SK3/84x+xbNky7N27F3PnzsVtt92G0tJSf5z58+cLEbJ161ZkZmbiuuuug9vt9guNGTNmYObMmdi9ezeeeOIJPPbYY1i5cqV//9tvvx1vv/02XnzxRezfvx/Lly9HcnJy0Hk88sgj4hgkRGw2G+68805/2K233orevXuL49PxFixYALvdzlcBw5idrv5cNMMwsUFDQ4OSmJiofP3110H+P//5z5VbbrlF2bBhg0KPnFWrVvnDzp07pyQkJCjvvPOOcP/sZz9TSkpKgvafP3++UlBQILYPHDgg0li7dq3hOWjH+OKLL/x+H3/8sfCrr68X7pSUFGXlypXtmHOGYToDtrAwDNMuHD58GHV1dSgpKREWD20hi8uRI0f88YqLi/3b3bt3x6BBg4SlhKD1VVddFZQuuQ8dOgSv14tvvvkGVqsVEydObPJcqMlJIycnR6zLy8vF+oEHHsBdd92FyZMn49lnnw06N4ZhzAsLFoZh2oWamhqxpj4qJCy0Zd++ff5+LG2F+sU0B30TD/Wb0frXENTMRM1V06ZNw/r161FQUID33nuvXc6PYZiOgwULwzDtAlX81An2+PHjoiOsfqEOshplZWX+7crKShw8eBCDBw8Wblpv3LgxKF1yDxw4UFhWhg4dKoSHvk9Ma6D0qH/N559/jp/+9Kd444032pQewzAdj60TjsEwzCUAjbp58MEHhRAgUTFhwgRUVVUJwUGjcfr06SPi/fa3v0WPHj2QlZUlOsdmZGTghhtuEGHz5s3D6NGj8dRTT+Hmm2/Gpk2bsHTpUrzyyisinEYNzZo1S3SipU63NArpu+++E8091Fk3EvX19aLT74033ihGMv3www+i8+306dM7+NdhGKbNdEpPGYZhLglkWVaWLFmiDBo0SLHb7UpmZqYydepUpbS01N8h9sMPP1SGDBmiOBwOZcyYMcquXbuC0li9erXoZEv75+fnK7///e+Dwqnz7Ny5c5WcnByRxoABA5Q//OEPIkw7RmVlpT/+zp07hd+xY8cUp9OpzJw5U8nLyxP75ubmKrNnz/Z3yGUYxrxI9K/tsodhGKZpaB4Wmv+EmoHS09P552IYpkVwHxaGYRiGYUwPCxaGYRiGYUwPNwkxDMMwDGN62MLCMAzDMIzpYcHCMAzDMIzpYcHCMAzDMIzpYcHCMAzDMIzpYcHCMAzDMIzpYcHCMAzDMIzpYcHCMAzDMIzpYcHCMAzDMIzpYcHCMAzDMAzMzv8CA8kV9G/uOo0AAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_stats.filter(regex=\"bn1\").plot(marker=\"o\", grid=True)"
]
},
{
"cell_type": "code",
"execution_count": 78,
"id": "aea204d3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"fc1_outputs.avg 1.194995\n",
"fc1_outputs.std 1.560157\n",
"bn1_outputs.avg 1.535785\n",
"bn1_outputs.std 2.543664\n",
"dtype: float64"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_stats.filter(regex=\"fc1_outputs|bn1_outputs\").describe().mean()"
]
},
{
"cell_type": "markdown",
"id": "c7f41704",
"metadata": {},
"source": [
"## 2.6. Layer Normalization (2016)"
]
},
{
"cell_type": "markdown",
"id": "c03d66d4",
"metadata": {},
"source": [
"https://arxiv.org/abs/1607.06450"
]
},
{
"cell_type": "code",
"execution_count": 79,
"id": "eac4a088",
"metadata": {},
"outputs": [],
"source": [
"import torch\n",
"import torch.nn as nn\n",
"\n",
"class CustomLayerNorm1d(nn.Module):\n",
" def __init__(self, num_features, eps=1e-5):\n",
" super(CustomLayerNorm1d, self).__init__()\n",
" self.num_features = num_features\n",
" self.eps = eps\n",
" \n",
" # Parâmetros Treináveis\n",
" self.gamma = nn.Parameter(torch.ones(num_features))\n",
" self.beta = nn.Parameter(torch.zeros(num_features))\n",
" \n",
" def forward(self, x):\n",
" # x: (batch_size, num_features)\n",
" \n",
" # Calculate the mean and variance across the feature dimension (dim=1) for each sample\n",
" sample_mean = x.mean(dim=1, keepdim=True) # (batch_size, 1)\n",
" sample_var = x.var(dim=1, keepdim=True) # (batch_size, 1)\n",
" \n",
" # Normalize the input using the sample statistics\n",
" x_hat = (x - sample_mean) / torch.sqrt(sample_var + self.eps)\n",
" \n",
" # Apply the learnable scale and shift\n",
" out = self.gamma * x_hat + self.beta\n",
" \n",
" return out"
]
},
{
"cell_type": "code",
"execution_count": 80,
"id": "b49d5ae5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Modelo com Layer Normalization:\n",
"SimpleNN_LayerNorm(\n",
" (fc1): Linear(in_features=784, out_features=12, bias=True)\n",
" (ln1): CustomLayerNorm1d()\n",
" (fc2): Linear(in_features=12, out_features=10, bias=True)\n",
")\n"
]
}
],
"source": [
"class SimpleNN_LayerNorm(nn.Module):\n",
" def __init__(self, input_dim=784, hidden_dim=12, output_dim=10):\n",
" super(SimpleNN_LayerNorm, self).__init__()\n",
" self.fc1 = nn.Linear(input_dim, hidden_dim)\n",
" # self.ln1 = nn.LayerNorm1d(hidden_dim)\n",
" self.ln1 = CustomLayerNorm1d(hidden_dim)\n",
" self.fc2 = nn.Linear(hidden_dim, output_dim)\n",
"\n",
" def forward(self, x):\n",
" x = self.fc1(x)\n",
" x = self.ln1(x) # LayerNorm após a primeira camada linear\n",
" x = F.relu(x)\n",
" x = self.fc2(x)\n",
" return x\n",
"\n",
"model_ln = SimpleNN_LayerNorm(input_dim=784, hidden_dim=12, output_dim=10).to(device)\n",
"print(\"Modelo com Layer Normalization:\")\n",
"print(model_ln)"
]
},
{
"cell_type": "code",
"execution_count": 81,
"id": "6bbcad65",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 0/10 - train_loss: 1.3833 train_acc: 0.6486 - test_loss: 0.9027 test_acc: 0.8020\n",
"Epoch 9/10 - train_loss: 0.2797 train_acc: 0.9192 - test_loss: 0.2879 test_acc: 0.9180\n"
]
}
],
"source": [
"model_ln = SimpleNN_LayerNorm(input_dim=784, hidden_dim=12, output_dim=10)\n",
"optimizer = optim.SGD(model_ln.parameters(), lr=0.1)\n",
"weights_stats = torch_training_loop(model_ln, optimizer, train_loader=train_loader_mini_batch, n_epochs=10)"
]
},
{
"cell_type": "markdown",
"id": "d7010f0b",
"metadata": {},
"source": [
"## 2.7. Comparando com rede MAIOR e MAIS PROFUNDA"
]
},
{
"cell_type": "code",
"execution_count": 108,
"id": "b3481474",
"metadata": {},
"outputs": [],
"source": [
"import torch.nn as nn\n",
"import torch.nn.functional as F\n",
"import torch.optim as optim\n",
"\n",
"class DeepNN(nn.Module):\n",
" def __init__(self, input_dim=784, hidden_dim=12, output_dim=10, n_hidden_layers=5, normalization=None):\n",
" super(DeepNN, self).__init__()\n",
" self.fc1 = nn.Linear(input_dim, hidden_dim)\n",
" self.n1 = normalization(hidden_dim) if normalization is not None else nn.Identity()\n",
"\n",
" self.hidden_layers = nn.ModuleList()\n",
" for _ in range(n_hidden_layers):\n",
" self.hidden_layers.append(nn.Linear(hidden_dim, hidden_dim))\n",
" self.hidden_layers.append(normalization(hidden_dim) if normalization is not None else nn.Identity())\n",
" self.hidden_layers.append(nn.ReLU())\n",
"\n",
" self.fc_out = nn.Linear(hidden_dim, output_dim)\n",
"\n",
" def forward(self, x):\n",
" x = self.fc1(x)\n",
" x = self.n1(x)\n",
" x = F.relu(x)\n",
"\n",
" for layer in self.hidden_layers:\n",
" x = layer(x)\n",
"\n",
" x = self.fc_out(x)\n",
" return x"
]
},
{
"cell_type": "code",
"execution_count": 115,
"id": "22c9629d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Modelo Simples\n",
"DeepNN(\n",
" (fc1): Linear(in_features=784, out_features=100, bias=True)\n",
" (n1): Identity()\n",
" (hidden_layers): ModuleList()\n",
" (fc_out): Linear(in_features=100, out_features=10, bias=True)\n",
")\n",
"Epoch 0/10 - train_loss: 1.4703 train_acc: 0.6965 - test_loss: 0.7837 test_acc: 0.8230\n",
"Epoch 1/10 - train_loss: 0.6022 train_acc: 0.8583 - test_loss: 0.4888 test_acc: 0.8720\n",
"Epoch 2/10 - train_loss: 0.4469 train_acc: 0.8829 - test_loss: 0.4074 test_acc: 0.8840\n",
"Epoch 3/10 - train_loss: 0.3899 train_acc: 0.8928 - test_loss: 0.3674 test_acc: 0.8940\n",
"Epoch 4/10 - train_loss: 0.3590 train_acc: 0.8995 - test_loss: 0.3388 test_acc: 0.9060\n",
"Epoch 5/10 - train_loss: 0.3382 train_acc: 0.9048 - test_loss: 0.3229 test_acc: 0.9090\n",
"Epoch 6/10 - train_loss: 0.3229 train_acc: 0.9085 - test_loss: 0.3094 test_acc: 0.9130\n",
"Epoch 7/10 - train_loss: 0.3104 train_acc: 0.9120 - test_loss: 0.2972 test_acc: 0.9150\n",
"Epoch 8/10 - train_loss: 0.2997 train_acc: 0.9146 - test_loss: 0.2869 test_acc: 0.9160\n",
"Epoch 9/10 - train_loss: 0.2901 train_acc: 0.9183 - test_loss: 0.2772 test_acc: 0.9180\n"
]
}
],
"source": [
"model_deep = DeepNN(input_dim=784, hidden_dim=100, output_dim=10, n_hidden_layers=0, normalization=None).to(device)\n",
"print(\"Modelo Simples\")\n",
"print(model_deep)\n",
"optimizer = optim.SGD(model_deep.parameters(), lr=0.1)\n",
"weights_stats = torch_training_loop(model_deep, optimizer, train_loader=train_loader_mini_batch, n_epochs=10, verbose=1)"
]
},
{
"cell_type": "code",
"execution_count": 116,
"id": "a2f1eb28",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Modelo com 10 camadas ocultas\n",
"DeepNN(\n",
" (fc1): Linear(in_features=784, out_features=100, bias=True)\n",
" (n1): Identity()\n",
" (hidden_layers): ModuleList(\n",
" (0): Linear(in_features=100, out_features=100, bias=True)\n",
" (1): Identity()\n",
" (2): ReLU()\n",
" (3): Linear(in_features=100, out_features=100, bias=True)\n",
" (4): Identity()\n",
" (5): ReLU()\n",
" (6): Linear(in_features=100, out_features=100, bias=True)\n",
" (7): Identity()\n",
" (8): ReLU()\n",
" (9): Linear(in_features=100, out_features=100, bias=True)\n",
" (10): Identity()\n",
" (11): ReLU()\n",
" (12): Linear(in_features=100, out_features=100, bias=True)\n",
" (13): Identity()\n",
" (14): ReLU()\n",
" (15): Linear(in_features=100, out_features=100, bias=True)\n",
" (16): Identity()\n",
" (17): ReLU()\n",
" (18): Linear(in_features=100, out_features=100, bias=True)\n",
" (19): Identity()\n",
" (20): ReLU()\n",
" (21): Linear(in_features=100, out_features=100, bias=True)\n",
" (22): Identity()\n",
" (23): ReLU()\n",
" (24): Linear(in_features=100, out_features=100, bias=True)\n",
" (25): Identity()\n",
" (26): ReLU()\n",
" (27): Linear(in_features=100, out_features=100, bias=True)\n",
" (28): Identity()\n",
" (29): ReLU()\n",
" )\n",
" (fc_out): Linear(in_features=100, out_features=10, bias=True)\n",
")\n",
"Epoch 0/10 - train_loss: 2.3027 train_acc: 0.1084 - test_loss: 2.3026 test_acc: 0.1040\n",
"Epoch 1/10 - train_loss: 2.3014 train_acc: 0.1127 - test_loss: 2.3019 test_acc: 0.1040\n",
"Epoch 2/10 - train_loss: 2.3012 train_acc: 0.1127 - test_loss: 2.3018 test_acc: 0.1040\n",
"Epoch 3/10 - train_loss: 2.3012 train_acc: 0.1127 - test_loss: 2.3018 test_acc: 0.1040\n",
"Epoch 4/10 - train_loss: 2.3012 train_acc: 0.1127 - test_loss: 2.3017 test_acc: 0.1040\n",
"Epoch 5/10 - train_loss: 2.3012 train_acc: 0.1127 - test_loss: 2.3018 test_acc: 0.1040\n",
"Epoch 6/10 - train_loss: 2.3012 train_acc: 0.1127 - test_loss: 2.3016 test_acc: 0.1040\n",
"Epoch 7/10 - train_loss: 2.3012 train_acc: 0.1127 - test_loss: 2.3017 test_acc: 0.1040\n",
"Epoch 8/10 - train_loss: 2.3012 train_acc: 0.1127 - test_loss: 2.3018 test_acc: 0.1040\n",
"Epoch 9/10 - train_loss: 2.3012 train_acc: 0.1127 - test_loss: 2.3018 test_acc: 0.1040\n"
]
}
],
"source": [
"model_deep = DeepNN(input_dim=784, hidden_dim=100, output_dim=10, n_hidden_layers=10, normalization=None).to(device)\n",
"print(\"Modelo com 10 camadas ocultas\")\n",
"print(model_deep)\n",
"optimizer = optim.SGD(model_deep.parameters(), lr=0.1)\n",
"weights_stats = torch_training_loop(model_deep, optimizer, train_loader=train_loader_mini_batch, n_epochs=10, verbose=1)"
]
},
{
"cell_type": "code",
"execution_count": 117,
"id": "e6f6e9e7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Modelo com 10 camadas ocultas e batch normalization\n",
"DeepNN(\n",
" (fc1): Linear(in_features=784, out_features=100, bias=True)\n",
" (n1): BatchNorm1d(100, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (hidden_layers): ModuleList(\n",
" (0): Linear(in_features=100, out_features=100, bias=True)\n",
" (1): BatchNorm1d(100, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" (3): Linear(in_features=100, out_features=100, bias=True)\n",
" (4): BatchNorm1d(100, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (5): ReLU()\n",
" (6): Linear(in_features=100, out_features=100, bias=True)\n",
" (7): BatchNorm1d(100, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (8): ReLU()\n",
" (9): Linear(in_features=100, out_features=100, bias=True)\n",
" (10): BatchNorm1d(100, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (11): ReLU()\n",
" (12): Linear(in_features=100, out_features=100, bias=True)\n",
" (13): BatchNorm1d(100, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (14): ReLU()\n",
" (15): Linear(in_features=100, out_features=100, bias=True)\n",
" (16): BatchNorm1d(100, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (17): ReLU()\n",
" (18): Linear(in_features=100, out_features=100, bias=True)\n",
" (19): BatchNorm1d(100, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (20): ReLU()\n",
" (21): Linear(in_features=100, out_features=100, bias=True)\n",
" (22): BatchNorm1d(100, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (23): ReLU()\n",
" (24): Linear(in_features=100, out_features=100, bias=True)\n",
" (25): BatchNorm1d(100, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (26): ReLU()\n",
" (27): Linear(in_features=100, out_features=100, bias=True)\n",
" (28): BatchNorm1d(100, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (29): ReLU()\n",
" )\n",
" (fc_out): Linear(in_features=100, out_features=10, bias=True)\n",
")\n",
"Epoch 0/10 - train_loss: 0.6487 train_acc: 0.8255 - test_loss: 0.2099 test_acc: 0.9470\n",
"Epoch 1/10 - train_loss: 0.1583 train_acc: 0.9592 - test_loss: 0.1323 test_acc: 0.9660\n",
"Epoch 2/10 - train_loss: 0.1063 train_acc: 0.9721 - test_loss: 0.1219 test_acc: 0.9690\n",
"Epoch 3/10 - train_loss: 0.0769 train_acc: 0.9800 - test_loss: 0.1140 test_acc: 0.9690\n",
"Epoch 4/10 - train_loss: 0.0591 train_acc: 0.9846 - test_loss: 0.1084 test_acc: 0.9730\n",
"Epoch 5/10 - train_loss: 0.0466 train_acc: 0.9880 - test_loss: 0.1068 test_acc: 0.9720\n",
"Epoch 6/10 - train_loss: 0.0379 train_acc: 0.9903 - test_loss: 0.0939 test_acc: 0.9770\n",
"Epoch 7/10 - train_loss: 0.0322 train_acc: 0.9917 - test_loss: 0.0993 test_acc: 0.9750\n",
"Epoch 8/10 - train_loss: 0.0262 train_acc: 0.9932 - test_loss: 0.0978 test_acc: 0.9710\n",
"Epoch 9/10 - train_loss: 0.0203 train_acc: 0.9950 - test_loss: 0.1002 test_acc: 0.9730\n"
]
}
],
"source": [
"model_deep = DeepNN(input_dim=784, hidden_dim=100, output_dim=10, n_hidden_layers=10, normalization=nn.BatchNorm1d).to(device)\n",
"print(\"Modelo com 10 camadas ocultas e batch normalization\")\n",
"print(model_deep)\n",
"optimizer = optim.SGD(model_deep.parameters(), lr=0.1)\n",
"weights_stats = torch_training_loop(model_deep, optimizer, train_loader=train_loader_mini_batch, n_epochs=10, verbose=1)"
]
},
{
"cell_type": "code",
"execution_count": 118,
"id": "881f0cc6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Modelo com 10 camadas ocultas e layer normalization\n",
"DeepNN(\n",
" (fc1): Linear(in_features=784, out_features=100, bias=True)\n",
" (n1): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
" (hidden_layers): ModuleList(\n",
" (0): Linear(in_features=100, out_features=100, bias=True)\n",
" (1): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
" (2): ReLU()\n",
" (3): Linear(in_features=100, out_features=100, bias=True)\n",
" (4): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
" (5): ReLU()\n",
" (6): Linear(in_features=100, out_features=100, bias=True)\n",
" (7): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
" (8): ReLU()\n",
" (9): Linear(in_features=100, out_features=100, bias=True)\n",
" (10): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
" (11): ReLU()\n",
" (12): Linear(in_features=100, out_features=100, bias=True)\n",
" (13): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
" (14): ReLU()\n",
" (15): Linear(in_features=100, out_features=100, bias=True)\n",
" (16): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
" (17): ReLU()\n",
" (18): Linear(in_features=100, out_features=100, bias=True)\n",
" (19): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
" (20): ReLU()\n",
" (21): Linear(in_features=100, out_features=100, bias=True)\n",
" (22): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
" (23): ReLU()\n",
" (24): Linear(in_features=100, out_features=100, bias=True)\n",
" (25): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
" (26): ReLU()\n",
" (27): Linear(in_features=100, out_features=100, bias=True)\n",
" (28): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
" (29): ReLU()\n",
" )\n",
" (fc_out): Linear(in_features=100, out_features=10, bias=True)\n",
")\n",
"Epoch 0/10 - train_loss: 1.9022 train_acc: 0.3082 - test_loss: 1.5716 test_acc: 0.4700\n",
"Epoch 1/10 - train_loss: 0.9266 train_acc: 0.6890 - test_loss: 0.6896 test_acc: 0.8000\n",
"Epoch 2/10 - train_loss: 0.4897 train_acc: 0.8682 - test_loss: 0.2580 test_acc: 0.9350\n",
"Epoch 3/10 - train_loss: 0.2906 train_acc: 0.9240 - test_loss: 0.4048 test_acc: 0.8850\n",
"Epoch 4/10 - train_loss: 0.6176 train_acc: 0.8449 - test_loss: 0.1897 test_acc: 0.9610\n",
"Epoch 5/10 - train_loss: 0.2924 train_acc: 0.9264 - test_loss: 0.1699 test_acc: 0.9550\n",
"Epoch 6/10 - train_loss: 0.1592 train_acc: 0.9583 - test_loss: 0.1769 test_acc: 0.9480\n",
"Epoch 7/10 - train_loss: 0.1313 train_acc: 0.9651 - test_loss: 0.1177 test_acc: 0.9670\n",
"Epoch 8/10 - train_loss: 0.4315 train_acc: 0.8824 - test_loss: 0.1659 test_acc: 0.9590\n",
"Epoch 9/10 - train_loss: 0.1488 train_acc: 0.9607 - test_loss: 0.1271 test_acc: 0.9620\n"
]
}
],
"source": [
"model_deep = DeepNN(input_dim=784, hidden_dim=100, output_dim=10, n_hidden_layers=10, normalization=nn.LayerNorm).to(device)\n",
"print(\"Modelo com 10 camadas ocultas e layer normalization\")\n",
"print(model_deep)\n",
"optimizer = optim.SGD(model_deep.parameters(), lr=0.1)\n",
"weights_stats = torch_training_loop(model_deep, optimizer, train_loader=train_loader_mini_batch, n_epochs=10, verbose=1)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "cat",
"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.14"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment