{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 多层神经网络,Sequential 和 Module\n", "通过前面的章节,我们了解到了机器学习领域中最常见的两个模型,线性回归模型和 Logistic 回归模型,他们分别是处理机器学习中最常见的两类问题-回归问题和分类问题。\n", "\n", "下面我们会讲第一个深度学习的模型,多层神经网络。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 多层神经网络\n", "在前面的线性回归中,我们的公式是 $y = w x + b$,而在 Logistic 回归中,我们的公式是 $y = Sigmoid(w x + b)$,其实它们都可以看成单层神经网络,其中 Sigmoid 被称为激活函数,之后我们会详细介绍激活函数以及为什么必须使用激活函数,下面我们从理解神经网络入手。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 理解神经网络\n", "神经网络的灵感来自于人脑的神经元系统,下面我们放一张人脑的神经元和神经网络的对比图(来自 cs231n)\n", "\n", "![](https://ws4.sinaimg.cn/large/006tNc79ly1fmgiz5mqs3j30or0773zg.jpg)\n", "\n", "左边是一张神经元的图片,神经元通过突触接受输入,然后通过**神经激活**的方式传输给后面的神经元。这对比于右边的神经网络,首先接受数据输入,然后通过计算得到结果,接着经过**激活函数**,再传给第二层的神经元。\n", "\n", "所以前面讲的 logistic 回归模型和线性回归模型都可以看做是一个单层神经网络,而 logistic 回归中使用了激活函数 sigmoid。\n", "\n", "神经网络使用的激活函数都是非线性的,每个激活函数都输入一个值,然后做一种特定的数学运算得到一个结果,下面举几个例子\n", "\n", "sigmoid 激活函数\n", "\n", "$$\\sigma(x) = \\frac{1}{1 + e^{-x}}$$\n", "\n", "![](https://ws1.sinaimg.cn/large/006tNc79ly1fmgj7yto7gj308w05oa9w.jpg)\n", "\n", "tanh 激活函数\n", "\n", "$$tanh(x) = 2 \\sigma(2x) - 1$$\n", "\n", "![](https://ws3.sinaimg.cn/large/006tNc79ly1fmgj8yjdnlj308w05mt8j.jpg)\n", "\n", "ReLU 激活函数\n", "\n", "$$ReLU(x) = max(0, x)$$\n", "\n", "![](https://ws1.sinaimg.cn/large/006tNc79ly1fmgj94ky2oj308n05uq2r.jpg)\n", "\n", "我们下面重点讲一讲 ReLU 激活函数,因为现在神经网络中 90% 的情况都是使用这个激活函数。一般一个一层的神经网络的公式就是 $y = max(0, w x + b)$,一个两层的神经网络就是 $y = w_2\\ max(0, w_1 x + b_1) + b_2$,非常简单,但是却很有效,使用这个激活函数能够加快梯度下降法的收敛速度,同时对比与其他的激活函数,这个激活函数计算更加简单,所以现在变得非常流行,之后你会发现我们激活在所有的神经网络中都会使用它。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 神经网络的结构\n", "神经网络就是很多个神经元堆在一起形成一层神经网络,那么多个层堆叠在一起就是深层神经网络,我们可以通过下面的图展示一个两层的神经网络和三层的神经网络\n", "\n", "![](https://ws2.sinaimg.cn/large/006tNc79ly1fmgjiafmmjj30nu07075w.jpg)\n", "\n", "可以看到,神经网络的结构其实非常简单,主要有输入层,隐藏层,输出层构成,输入层需要根据特征数目来决定,输出层根据解决的问题来决定,那么隐藏层的网路层数以及每层的神经元数就是可以调节的参数,而不同的层数和每层的参数对模型的影响非常大,我们看看这个网站的 [demo](http://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html)\n", "\n", "神经网络向前传播也非常简单,就是一层一层不断做运算就可以了,可以看看下面这个例子\n", "\n", "![](https://ws2.sinaimg.cn/large/006tNc79ly1fmgj4q1j78g309u0cc4qq.gif)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 为什么要使用激活函数\n", "激活函数在神经网络中非常重要,使用激活函数也是非常必要的,前面我们从人脑神经元的角度理解了激活函数,因为神经元需要通过激活才能往后传播,所以神经网络中需要激活函数,下面我们从数学的角度理解一下激活函数的必要性。\n", "\n", "比如一个两层的神经网络,使用 A 表示激活函数,那么\n", "\n", "$$\n", "y = w_2 A(w_1 x)\n", "$$\n", "\n", "如果我们不使用激活函数,那么神经网络的结果就是\n", "\n", "$$\n", "y = w_2 (w_1 x) = (w_2 w_1) x = \\bar{w} x\n", "$$\n", "\n", "可以看到,我们将两层神经网络的参数合在一起,用 $\\bar{w}$ 来表示,两层的神经网络其实就变成了一层神经网络,只不过参数变成了新的 $\\bar{w}$,所以如果不使用激活函数,那么不管多少层的神经网络,$y = w_n \\cdots w_2 w_1 x = \\bar{w} x$,就都变成了单层神经网络,所以在每一层我们都必须使用激活函数。\n", "\n", "最后我们看看激活函数对神经网络的影响\n", "\n", "![](https://ws1.sinaimg.cn/large/006tNc79ly1fmgkeqjr34g306r065diu.gif)\n", "\n", "可以看到使用了激活函数之后,神经网络可以通过改变权重实现任意形状,越是复杂的神经网络能拟合的形状越复杂,这就是著名的神经网络万有逼近定理。\n", "\n", "下面我们通过例子来感受一下神经网络的强大之处" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import torch\n", "import numpy as np\n", "from torch import nn\n", "from torch.autograd import Variable\n", "import torch.nn.functional as F\n", "\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def plot_decision_boundary(model, x, y):\n", " # Set min and max values and give it some padding\n", " x_min, x_max = x[:, 0].min() - 1, x[:, 0].max() + 1\n", " y_min, y_max = x[:, 1].min() - 1, x[:, 1].max() + 1\n", " h = 0.01\n", " # Generate a grid of points with distance h between them\n", " xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))\n", " # Predict the function value for the whole grid .c_按行连接两个矩阵,左右相加。\n", " Z = model(np.c_[xx.ravel(), yy.ravel()])\n", " Z = Z.reshape(xx.shape)\n", " # Plot the contour and training examples\n", " plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral)\n", " plt.ylabel('x2')\n", " plt.xlabel('x1')\n", " plt.scatter(x[:, 0], x[:, 1], c=y.reshape(-1), s=40, cmap=plt.cm.Spectral)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "这次我们仍然处理一个二分类问题,但是比前面的 logistic 回归更加复杂" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "np.random.seed(1)\n", "m = 400 # 样本数量\n", "N = int(m/2) # 每一类的点的个数\n", "D = 2 # 维度\n", "x = np.zeros((m, D))\n", "y = np.zeros((m, 1), dtype='uint8') # label 向量,0 表示红色,1 表示蓝色\n", "a = 4\n", "\n", "for j in range(2):\n", " ix = range(N*j,N*(j+1))\n", " t = np.linspace(j*3.12,(j+1)*3.12,N) + np.random.randn(N)*0.2 # theta\n", " r = a*np.sin(4*t) + np.random.randn(N)*0.2 # radius\n", " x[ix] = np.c_[r*np.sin(t), r*np.cos(t)]\n", " y[ix] = j" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(x[:, 0], x[:, 1], c=y.reshape(-1), s=40, cmap=plt.cm.Spectral)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "我们可以先尝试用 logistic 回归来解决这个问题" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "x = torch.from_numpy(x).float()\n", "y = torch.from_numpy(y).float()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "w = nn.Parameter(torch.randn(2, 1))\n", "b = nn.Parameter(torch.zeros(1))\n", "\n", "optimizer = torch.optim.SGD([w, b], 1e-1)\n", "\n", "def logistic_regression(x):\n", " #FIXME: sigmod is included in nn.BCEWithLogitsLoss \n", " return torch.mm(x, w) + b\n", " \n", "criterion = nn.BCEWithLogitsLoss()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "epoch: 20, loss: 0.7048085927963257\n", "epoch: 40, loss: 0.6740389466285706\n", "epoch: 60, loss: 0.673165500164032\n", "epoch: 80, loss: 0.6731466054916382\n", "epoch: 100, loss: 0.6731460690498352\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/ipykernel_launcher.py:8: UserWarning: invalid index of a 0-dim tensor. This will be an error in PyTorch 0.5. Use tensor.item() to convert a 0-dim tensor to a Python number\n", " \n" ] } ], "source": [ "for e in range(100):\n", " #更新并自动计算\n", " out = logistic_regression(Variable(x))\n", " loss = criterion(out, Variable(y))\n", " optimizer.zero_grad()\n", " loss.backward()\n", " optimizer.step()\n", " if (e + 1) % 20 == 0:\n", " print('epoch: {}, loss: {}'.format(e+1, loss.data[0]))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def plot_logistic(x):\n", " x = Variable(torch.from_numpy(x).float())\n", " out = F.sigmoid(logistic_regression(x))\n", " out = (out > 0.5) * 1\n", " return out.data.numpy()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/torch/nn/functional.py:1006: UserWarning: nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.\n", " warnings.warn(\"nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.\")\n" ] }, { "data": { "text/plain": [ "Text(0.5, 1.0, 'logistic regression')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEWCAYAAABmE+CbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzsvXeQJNl52Pn70pTrcu3teO9nvQMWu4slgIUhCVIkKFKkpAsGSMaFTgryjiHydIq7C/Go0ylOlO7EkHAnihcURQuC8MBigd0FsHbWzc7suB3T3dPeVFd1+arMfPdHVvd0d1W1menu6p7JX8TEdKd5+TI7833vfVaUUnh4eHh4eGiN7oCHh4eHx9bAEwgeHh4eHoAnEDw8PDw8KngCwcPDw8MD8ASCh4eHh0cFTyB4eHh4eACeQPDYZESkX0SeXYd2/oOI/E+3cd5OEcmIiH6nfdjqiMhHReRyo/vhsX0QLw7BYzMRkX7gV5VSL9yN1/Pw2M54KwQPj9tARIyt3J6Hx+3gCQSPhiEifhH5AxEZqfz7AxHxL9j/2yIyWtn3qyKiRGR/Zd8fi8i/qPzcJiLfEJGkiCRE5EcioonInwA7ga9X1ES/LSK7K+0YlXNbROQ/V64xIyJ/W6ev/0BEXhGRfyMi08D/XNn+34jIxcq53xWRXQvO+YSIXBaRlIj8oYi8LCK/ejvticu/EZEJEZkVkXMicryy79MickFE0iIyLCL/fWX7UyIytKA/R0Tkpcpz+kBEfnLBvj8WkX8vIt+stPOGiOy707+xx/bCEwgejeR/BB4FTgOngIeBfwYgIp8CfhN4FtgPPLVMO78FDAHtQCfwu4BSSv0yMAh8TikVVkr9qxrn/gkQAo4BHcC/WeY6jwDXK9f4PRH5qcq1fqZy7R8Bf1bpfxvw18DvAK3AZeDx220P+ATwJHAQiAE/D0xX9v0n4NeUUhHgOPCDpR0XERP4OvB85T7/EfCnInJowWG/APwvQDNwFfi9ZZ6Fx12IJxA8GskvAf+rUmpCKTWJOxj9cmXfzwP/WSn1gVIqR2UGXYcy0A3sUkqVlVI/UqswjolIN/Ac8OtKqZnKuS8vc8qIUur/UkpZSqk88OvA7yulLiqlLOB/A05XZvWfBj5QSv1NZd+/A8buoL0yEAEO49r+LiqlRhfc/1ERiVbu450afX8UCAP/UilVUkr9APgG8HcXHPMVpdSblWv/Ka6g9riH8ASCRyPpAQYW/D5Q2Ta37+aCfQt/Xsr/gTujfV5ErovIP13l9XcACaXUzCqPX9qHXcC/rahgkkACEKCXJf2vCKihJeevur3KAP5/A/8emBCRL4lItHLez+IKoIGKWuqxGn3vAW4qpZwF2wYqfZ1jocDK4QoQj3sITyB4NJIR3EFwjp2VbQCjQN+CfTvqNaKUSiulfksptRf4SeA3ReTjc7uXuf5NoEVE4qvs79K2buKqauIL/gWVUq8u7b+IyJL7WWt7KKX+nVLqAeAorurof6hsP6OU+ilcVdDfAn9Zo+8jwA4RWfjN7wSGV3nvHvcAnkDwaCR/BvwzEWmv6Nz/OfBfKvv+EviHFUNoCKgbcyAinxWR/ZVBNwXYwNxMeBzYW+u8isrl28AfikiziJgi8uQa+v8fgN8RkWOVfsRE5Ocq+74JnBCRn64YsP9boOt22xORh0TkkYotIAsUAEdEfCLySyISU0qVgdkF976QN3Bn/b9duc+ngM8Bf76G+/W4y/EEgkcj+RfAW8D7wDngnco2lFLfxtW7v4irDnq9ck6xRjsHgBeADPAa8IdKqRcr+34fV+gk57xvlvDLuDr4S8AE8E9W23ml1FeA/x34cxGZBc7j2iRQSk0BPwf8K1zj79HKvdbq/4rtAVHg/wFmcFU907iqsrl76K+c8+u4tpmlbZdwBcBzwBTwh8CvKKUurfZ+Pe5+vMA0j22BiBzBHSD9FaPntqKiqhkCfmmBsPLw2FJ4KwSPLYuIfF7cWIVm3Jnz17eTMBCRT4pIXNzYit/FNRC/vsJpHh4NwxMIHluZX8NV41zDtQv8RmO7s2Yew+37FK665qcr7qUeHlsST2Xk4eHh4QF4KwQPDw8PjwrbKqFW3PCpLjPU6G54eHh4bCsuF1JTSqn2lY7bVgKhywzxR/s/0uhueHh4eGwrnjj/zYGVj/JURh4eHh4eFTyB4OHh4eEBeALBw8PDw6OCJxA8PDw8PABPIHh4eHh4VPAEgoeHh4cH4AkEDw8PD48KnkDw8PDw8AA8geDh4eHhUcETCB4eHh4egCcQPDw8PDwqeALBw8PDwwPwBIKHh4eHRwVPIHh4eHh4AJ5A8PDw8PCo4AkEDw8PDw9gmxXI8fDwWH+UUmTTDjMJC9tSNEU0mltNDEMa3TWPTcYTCB4e9zhT42VmEjZKub8XSzapGZtd+wKYpicU7iUarjISEV1E3hWRbzS6Lx4e9xrlkrNIGACgwLZheqLcsH55NIaGCwTgHwMXG90JD497kWzGqbsvk7Y3sSceW4GGqoxEpA/4DPB7wG82si8ed4ZSinJZoeuCrm+smmHKF+eNlpOMBdvwOWWOpa5yKnkJHbXyyR6LkGWmhOJpi+45Gm1D+APgt4FIvQNE5IvAFwE6zeAmdctjLcxMl5masObVDuGITlePibYBgmHaF+Orvc9giQEiWJrJO81HmfS38MnxV9b9etsJpRSOA5oGIoJSinzewSor/AENv7969A9HdMaorRqKxvWN7rLHFqNhAkFEPgtMKKXeFpGn6h2nlPoS8CWAw8G4NwXcYqRmLCbHrUU66EzaZmhQsXOPf9GxmbTNzLSFZSlCIY2WdgPTXDxIFYsOmVlXVRGJ6viWDGJvtpzAEn3R9NXWDG6Gukj4YrSUUut8h1sfpRTJhMX0pIVtu7P+WEwnk7GxLfdRKQWhJo2eHT407dazUw7UW1jVEiAedzeNXCE8AfykiHwaCABREfkvSqm/18A+eayRqcnFwgDcwaeQdygWnflBZWqyTGLBsaWizWzKZtde//ygPzlWWmTgnJ60aG41aO8059seD7TV1XOMBdruSYEwM20tWqEpB5Izt/T/c9uzGYehwSKO7RqNm8Iaun5LYCxlaqJMLuvgDwixuLEhKz6PrUXDpgBKqd9RSvUppXYDvwD8wBMG2w+rXHt6KQKlorvPstQiYTCH48DEmKuuyGXtKm+XvD/EDdVConRLIPjtUs3r2aJzNbyDsjRaC7q5KKWYrvFs65HPKooFhVVWpGZsElN23XPLZUglbSbGLK5eLlDIeUbmu5176+vxWHcMAyyrertS4PO5M8p81gGhpmoil3W9XJIztwYmSze48MDHSLZ3I47DWV1nz+wgT4y+yYnUFd5oPYWlLXl1RRjzt/Gd7o/wuZGX1u3+tjq2XXt2v94oBQP9JfYfCmy404BH49gSSkKl1EtKqc82uh8ea6e13ajpjeIPCP6A+3qtxpPFtm6Nahfv/ygz7d04uoFt+nA0nRvhHXzff4Lg2+fZlRqsOQoqTWfc30rCF7uje9pO6Jv5BStITHmxCXczW0IgeGxfYs2GKxS0Oe8WVzfdt+uWQTnUpFFrTikCkZjG2EhpfqVQ8geY6ehF6YtXAI5hMLrzIEVLY9crP0RUHf9526E/14TajGnzFkA0Idasb5qLaDbjqY3uZjyVkccdISK0tps0txqUSwrdkKocOJom9OzwMTzo6v+VclcNpgHFgqKQvzW4FwNNiONALY9HAcv0YZTyBEt5coFw1SFKBGciRSpoE2++N17vjk4Tx4b0rD1vIA6GhFCTxvRkfRvB7eA4wmzKIhzRF3kredwd3BtfjMeGo2mCP1B7gCgWHWaTFqbfFSC65todymWFKi0erYLZWZRWe+Eqjo1ZKqAUHBh4n/P7H8ZeuJJwbIK5NOGZKRJZuWcEgmhCd5+PdktRKjqYpmD63Gc4PZlf12uVS4qx4TKaVmbHbv+8WtDj7sD7a3psKJNjJfqvFplNOZQKUMwrcllFqaiopfUxrDLd/VfQrMW6as0qs/vKWTSlEIEdo1fZ8eH7aJaFXi6h2RbRmSlOvfY8wmKbxL2CYQihJn1eGMDy9hvjNuWlquQ6Gh4s3TOquXuFe2MK5dEQMmmbxPTadc77PziDYZUY3ncUW9PRLYtdl9+j74ab8koEMrMOu2ffp+/aBXKRGL5igUA+O9+GpoNtq3veIyYa00gmattbbBvCUSEze3uDumUpikVFoM7K0GP74QkEjw3jdj1SBMWey++x+/JZfFETJ1/CsQABn1+IxXWmJiwcBwzbIpqcrmrDtuD6hwV27XED3xxbMTVZZjbl6tQjEZ22DhPjLk/v3NxikkwUa+4TgZYWk1KxPB8zMkewSchnlxcUIuDY3grhbsITCB4bRr2gtdUiKKx0ie4+k0BQRwDDFDJpe8U0dkqBsmF0uMTOPX4G+4uumqpyYippk0nb7NkfQL+LC8GYPkE3XAFZC39QY/c+P9mMQz5rg8DMtL2iMAA3sDCVtBgZKiHiCuqWNsMzNm9jPBuCx4YRCN15cjSlYDZpY5oyP5sPNWl18+8spVBQJGcsiguEwRyOAzOJOiPlXYKI0NFlVrmlikBbpzt4iwjhiE68xWBmem1eSbNJB9tyhX9iyuLmjaJnV9jGeALBY8OoF7QGtwLSRHNnseFI/Vdx6fiiaUJXb/UgV/tkmBi1agoQpe4Nv/pozKBvl49gSEPTIRBw3YCbW8xFx42NlO/IRVUpKJbccpwe2xNPZeSxYfj9Gjv3+BkfKVEouCONzwedPSZW2XU79fs1miIa2YxDNlOqGpBEIBqrXmlEYwaBgEYyYVEsOeRztb2WVmKrG52VUhTyilzWplhwKBZdL6t4i0EsriOrjEgLNens3FN/xeY4aj448I7667hCNhz1UmdvRzyB4LGuOI6rOphNunr+aFSjb7efudCCegNYU1gj1KSRyzrzQkEEAkEhUkMgAPj8Gh3dPgCyaZvhm9UCZTlEoLl1634CjqMYGiiRyzlM9uzm5qljlPxB4tPj7P7wLG2zGXp3+lYtFJZlHbU8d7NN5m5n634NHtsO5SgGbyw23s4kbNJph917/cumTxYRenf6SM+6Bd6VglhcJxpb3Sy4KaKza6+fmWnLTbsd0LDLiswyJSJb2gyawlt3Jjs1Xiafd7h++H6G9x7BMVwVz3ggxFTXDu5/5Vu05HKEmu78HjTdDSwsFupnr12NsBXxCutsZzyB4LFupNP2ImEA7iBilRWppEVzq1n/ZFyhEI0ZRGO391r6Axpdvb7531MzFtkFK46FNLfqtLQaTIyWSCVdAdQU1mjvNKuK8jSKVNKm6AsytO/o4txOmoYtJlePPkTfhz9YF4EA0NXj42Z/EWeJDI1ENdKz9QXrQnnd2W3i822N5+exdjyB4LFuZGZrD75KQSbt0Ny6uf2JxHSmJq0q91ddd1VFS11RM2mHXLbI7v3+qkpujcBxINXaieY42EvHfBF337X1U88EKi6oM9MWhbzC9AstrQbFgkMm49S00fh8QrzVdR4IR/SqPFYe2wtPIHisG/oyb1MjjLeaJuza62dyrEw6bYOCcMRdBRQLilKptitqYsqis9tXu9FNQAEjwQ6une4iZ4ZQdVRmmm3XNLjfCabvll3m1jZBRstVZgYR15MsGveGkbsF7y/psW7Emo15/f9CXK+YxuiVDcNN/Na9ZHtyplTXK2k9vG1uFwV8r/Nxboa6sMSobKkWCJptsXfq6qaotzRN6NvlZ3iw6Ab8VTra3KLXNfh7bE88geCxbgQCGm0dBlMTi4O9mlsNgkGNVNIinbLdIvBxg6awtj4eMreBYWhA7RiERgZWXW/qc4WBNmdvkblOodk2jqahOTax7AwfKVzctH4FQxp79vuZTTm31EN3edqPexFPIHisKy1tJpGYQWbWHWybIhqGIQz2FykWbqlosukSkZhOV4/ZEKHQFNFgrPY+23KFQiP6dSm6d4EwWIBSRBPjNE+NEZ2ZpDMzjrk/sCl9UkoxNV5mJnGr3kJ61qZnh2/Lx3F4rI3GW8487jpMU2huNWhuNfD53JXBQmEAlUElZS8qjrOZODZ1I52Vqp/7Z6Nx6n2SIgRzGXZdPUfz9BjmJs7OZ6YsZhKuKtBx3OeTyzrzBY887h48geCx4aST9b2P0rONSR2xUvCU1iDV+IHMAIZTLY0026J9pB/Y3IA6pRRTU1bNv18h71Aqemkq7iY8geCx8WxBrYJpCoFg9esvAuFo48pD7k8PELLyi2pGa1aZlqkRWhOj8549Gx1QVyw6TE+W6b9aqGt8F3HTj3jcPXg2BI8NJxbXKeSrVwlunqLGvYI9O3wMDbixCAigIBjU6OpePoBuo1DA9zsfJWsEUHOlzpRDzMry8bHX0Ht8hJq0DU0N4TiKkZulRSlE6vZXuXEIHncPnkDw2HCicZ3ZlE0+fyu4SQRizXrNWfpmYRhunEKxoCiXFD6/NLRG8IC/k6FQF/ZCo7JopH1NTHXvZH/m5ob3YXK8vCphAG5kt+lFJd9VeALBY8MREfp2+cikHdIpG01zhUQw1PjBREQIBIVAsHF9KBQcxoZLvHe4t6aHkaWZfBjeteECQSlFMrF6m05Xb2NWUh4bhycQPDYFESES1Ylsg7TIjq1IJi1yGQfDEOItxoatZKyy4tKEn9HdR5mNt7t6mBruT7Ke6UjrsNbaEF5ltLsPTyB4NJRyyWF6yqKQczBMoaXNWLdkbbeDZSkGrhWw7VvZPWdTNu1dRlVBmfXgbXM37z/5II6I69pUQ1djOGUOpfvX/dpLSUyvXiD4fNKwoEKPjcMTCB4No1hwGLxxK7tmsajIZUu0dxorZkbdKKbGy1gLvD5nY60k27oYsUo87IwR0tYvQCGjB3l/x4M4C5NALcwzLYLhlOnLjbE7O7xu162HVVrdKkQE2rs8ddHdiCcQPBrGxGi5KtWyUjA5bhGLG8vWT9go5uIiHBE+ePBpEu3dKNEQFB8Cn5x4hZ25OiHOa6S/qa/2DhH0conemZscs4bYkR/bFM9df0DqupFqWsWryC+0d5pbuo6Ex+3jCQSPhqCUIperH9SUy9qEow14PSsj7/DuI0x39MyncFWVf9/pfIJfufG3BOrkQVoLtmh1w6XNUpFnE2c2LSJZOaquMDB9wp79fk9FdA/QeDcPj3uW5VJHTE1aDUkyN2f0Htp3tGY+byU6b+l71+VaO3MjNY3FYlvsywxuanqK5IzlxmPUoLO7MfmmPDYfTyB4NAQRWbYQe7GgSCU3P61FW4eJYQoln7/uMcPhrttuXymFctyBt7mc5vDsdQynPL9fdyyanAIP5q7c9jVuh9lkddryOXLZxqQX8dh8PJWRR8Po7DLJzNYfiJKJMvHmzX1FDcNVj/jsEkWjhuFUBHHWvnIplxzGRsvkKjWegyGNzh6TJ6bfZUd+jA+i+ynqPvZkhjiSvo5/gZDYDLwEFB7gCQSPBqIbgmig6kxAnQZNTDVNOJTu533f0Wq9luPQPT0IayioZtuKgetF7AX3k885DF4vsmd/gF25UXblRten87dJNK4zNV6dxE4EIo2w5Xg0BE9l5NFQltNM+xqYRuL+9GV85eLiuADHwV/Mc8oZWlNbs0mrypsKwFEwk9jclUA94s0Gfr8skn8irqBoZHoRj82lYX9pEdkhIi+KyAUR+UBE/nGj+uLROJYbbOLNjXNt9Dtlfm74u+xI9KNZFppVpmf8Bj/V/zzRwNpSPudz1bWbAVDuvq2Apgk79/jp7DFpCmtEojq9O310NijRn0djaORa0AJ+Syn1johEgLdF5HtKqQsN7FNNrjXt4K2WY6SNJqJWlgcT59i7CYFC9wJtHSa5bLFqwDQMtxiL46iGpUgIOwU+nXwTkm/e2rgGVdEcpk/ms6kuZTOzhVplxfRkmUzaccuYNuu0tBhI5fmKJsTiBrG4pyK6V2nYCkEpNaqUeqfycxq4CPQ2qj/1OB/dz0sdD5P0xbA1gxlfjBc7HuViZH1cD+91AkGNvl0+/P7FA6Nlw/hImauXC2vOsbPViLfoNVVjm1noxrIU/dcLJGdsLMvN7jo9YXFzsNTQGtKbjQLsFYa9suiU5d4MvNsSUwER2Q3cB7xRY98XgS8CdJqbm5LSRuPNlhNY2uLHZGkGb7Se5FD6Btpt+meMBNp5q+U4M2aUaDnDAzMfsDO/PhGw241Qk87u/TrpWYuRmxWdunJ17ADDgyX2HgxgbGAdgI1AOYrZWZvZpIVhQHmBuUDEzRa6Wem2Z6bLi4za4JpHCjmHbMYmHNkSQ8EdkdUDXAvvpKiZ9OYn6C5MzgviuW/5QmwflhhErSyPTr3LntzI/PlJM8LL7Q8yHmgDoLMwzZOTZ/A7Jd6NH6G/qQ9D2RyZvcax1FV07r5qcQ1/C0QkDHwZ+CdKqdml+5VSXwK+BHA4GN/Uqcys2VQ3esoWnYwRImpl19zu9aZeXux4dF7QFIwA3/M/weNT73AkfaPueUkzzHvxI4wHWomWsxxPXsFUFqayaSklt2JhsjWxXOrldMretNn0cpSKDumKq2w4qhOoM6A7jmLwRoFioXqfiKsqCkc2bxaaSTs1VVZKwehQmb0HdfQGpApZL6419fFixyMoBEc03ms+QsjK8/Hx1+kqTvNC56PcDHVjV765WTPMDzof49nxV9mVGyWv+fhK77OUNAMqxYnGAq18pfdZDOVQ1EycSl3VMy0nGAx185nRl7f9N7eUhn5hImLiCoM/VUr9TSP7UouAU6pb9NwRwe+svci4Al5pe6DmquP11tOEyznebjlOwhejyc5x/8xFDmQGuBTezQ87HkIhIELSjDIY6kZTNgL4nDLPjf6Q9lJyUbs5PYACmuwaI9MWw7Jqy3ulwLIaPxubmiiTWFBfODFlEY3rNSN5ZxJligX37z22Yz/9h05TDIQI5DPsvvQu3SM3SCWtDcmgWgt3sK/9fB0HElNl2jtvw0CyBchpfr7f+ditKnOAg07GaOKrPc9gOmXKuq9qcueu9E+xKzfKe/HDlDRz8TGiUdYMLFjUtqUZjAdaGQl00FuY2Ojb21QaJhDE/YL+E3BRKfV/NqofyxG0i3QVJhkNtuMs0Clqjk1ffuy2goeyepBijSIoAJbofLvnyfmXL6nHeLHjYV5tPUVBD1DlEwg44v4J86LzN32foCc/zqnUFYJWnpc6HiFlRgCIljM8PfEG7aWZNfd5swg1aZSK1asE0SAY0ud13Y1Io1DIO4uEAbiCajZpE47oVbP9ZCWV9M19x+k/dAqnEuRWaIpy5dTj2IZJYPIqzS2b0//mFoN8rv4EZjbl0N65OX25HVJGmPfih93VsZXhVPIy3YUpgPmVQRXiTp7KUi0M5khWvo9L0X21j5HaSmFLDIZCnZ5AWEeeAH4ZOCci71W2/a5S6lsN7FMVHx9/jW/2PEXKDFccRYR4aZanJ95c8dxamMpC1Xk5nRrJzpRoFIxV2E4q542EuhgPtOEgrmCpbJ/xx/h679N8YfBbW3a10NJmMpu0F/nsi4BpusVbRm6WUMr12unoMjdV5ZJKVgdtgSsUUjNWVV8cB2xNZ2CBMJjfZ5jcOPIA+xPXNrLLiwhHNQJBoZCvvUpolOqjLDo5PUjIzmPWiVCc9DXztd6nsUVHicaML8ZQsIsjs9cIWzmGgh31E2PBsvsCdpFZo4myVmcorFOwCGA00EZWD2zZ7+l2aJhAUEr9mMa9h6sm6JT42aHnmfC3kjIjxMuztBcTt91xv1OmNzfBUKgDtdCTYZkXb63YmlGzPRuND2L7eThxHkt0+pt6yOlB2osJ4qVZLkf2MOOL0l6c4UBmYNPTJ5imW+N4crxMNlNxjYzp5LLOIvtCueQWgu/d6du0NMzLRU3XCjoz/ULaiNQseAPgaBpmRxTYnMFEROjp83H9w2KNfRCJba5XjY3weutpLkb3oqFwEI7MXuOx6bNVjho/an9gcWlREWwxOB87iKaceZ3/WtEdixPJyxR1H4ayKddqp943KcKEv5W/3vFJ/s7N52my87fVh61G46102wABOovTdBan16W9pyff4Ks9z5AzgthoNVcGd0yN9hxNZ8rXzKSvmW/2fAxHNGzcXP+OaGjKwdYMrjsWb7Uc56eHXyBezqxvv1bA59fo3XkrsdzURIlijSycSsHYSIl9BzfH8ywc1UmnbdSSwV/EnX0vpaPTJD1SmDdEVqFptAQ2WeD6NNo6DKYnb612RNwVV2vb5g4Fr7Wd5nJkL7ZmzCcSPx87yEigg8+NvkSgYp+z0ZjyN9duRGSRKndNKMW+zE1Opy67K4/baULTKSrh7eajPDn19u31Y4vhxaQ3gKBd5As3v80nxl7h0cRZDGf9qnAth+bYNJdSfLv7oxR1P+WK54StGSjR5j0wLM2gqJm82PHIpvSrHkopElP1p+ZWmU3zoQ9HNAKB6tQOpk9qBnKFmnR64mXiU6PIEn9PzbHYnR3Gvw41FdZKa7vJjj1+YnGdcESjs9tk117/uhYjchDymr+uv39ZDC5F9lY5ViBCwh/ny30/MR8HILWtA3eMoWyenDyDVH5+ePpc9Xe4indLicblyB7+uu8TvBU/RkHbnob5ObwVwgZgic5IoB0BuguTGDV0owL05cfpy48zGminv6l3kSfDqlg4zau1b8l2DYf2YoKLsf0rty3uzKyg+eZna5uNZa38TRYLikBw4zWPIkLfLj/JGWs+VXQ0ptPcYtSNpG5p9/FI8QqvlCLkfE1oODii0VGc5mOTZza8z/UIBjWCvRszcH0Q2ccbrSexxEAB8XKKB2Yusic7xNw8PGME0VC1xaEIeT3Alchujs1eQ0OxMzvCQFPPyt+HUm6mRNGXXXFrjs2DifMsXBecmP2QJjvHO83HyBgh4qVZlAhTvub6q7wKjqYz7W8m4YtxPn6An735XXzKYjDUgy0afbkxwttEpeQJhHXmWlMfL3U8jFRGMiXCUxNvsi9bPyHaI4n3GQ52Uq7M1GuyZGQ0lE1XfoKyZs4H0sx9BIZTJl5KU9B9rncSrvHsmYnXKWq+Vc185i9bY36W13xcC+8kpwfoLE6zIzdWN0CvVPGYNy4WAAAgAElEQVSC8qm1r4L0LRYsqmlCS6tJyyrqPaeMMN/qfpKcEUCUQonQnZ/k4en3aS1XhdvcFVyI7OWV9vsXvcNJfzPf73yUWDnD54dfwO+UabLyOMvM+23NYDDUzbFZ1+j+0am3mPY/S6Gyqq1nbwvaBZ4b/SGzZpjzsQMkfPFbEcfirjX8TokHEuc5Pnu16vy92eFFKWkKmo9v9DzFtC8+38ZyKNEoaj7+bOdn0FCV4kfudU8mL/HwzPllz98KeAJhHZkxI7zY8ci86mWOlzoeoWUoRXM5XfO8WDnDzw49zzvNR7kR6qW01GdaKQJ2kafHX2c01IEtOnuyQ3QVphBcT42BUA9XIztx0DiQGWBv5iYailkzjKpcQ3AH89XqXWPlDEFnsRFyKNjBd7s+6qYAEB1DWcTKaX5y+MVFg37CjPJSx8NMV/S/bcUET02coXkNg6GmCZGYTjpVW7WiaW4d4M0mn7NJTFmUSopgUKOlzcDnX+gDL3y95ymyRnCRwXMk2MlYsH3bCoSsHuCD2H4m/K3EymmOpz6cf6cV8HrrqdoTGtGYNZt4rfUUT02+hU9ZHEr3czG6t+bxohxC1i1je8gu8oXBb3OjqZdJfws5I8CNpr5F35nhWHxk6m3aS0naS8mqCZjCXbkblbid1RBwSjw5eYav9TxT9U27jdYQTCIoNOwl28/FD9FVnGZng9Ocr4QnENaRD6L7XQPxEmzR+FHbA+zIj9GTn8DnlLgU2UfGCNGbH+dAZoColeWpyTN8jDO8Ez/Ku81H0JSrYmgrzvCJ8VcJ2QV2Fsar2jeVzf7sTfZnb1btiy0xCgedEieTlzgXP3RLh6scQBAUSjQ0ZaMph49NLFZrWKLxfOdHFul+LTGZMWOcaTnBE9PvApDT/Xy19+OLoj4n/K385Y5PIShCVoFHp9+r2d+ldHWblEtOlbukCPTs8G16TEJqxmJ8tDy/yCoVbWZTNjt2+wmG3Hsd8rdTELPK+8XSDM7GD8/PfLcTCV+Mr/Y8gyU6jqYzojq4EtnDT4y/ys7cKLZo7uy9Dkp0roV38dTkWwA8PvUOBd3H9aYdVYOqrhyOLnlGOs6id3wgNMg7zceYNcPESykeTHywbEyAQF231uUoan505azN2lPjnbQ0g3OxA55AuJdIm001ZzxKNMaC7YwF2+dnFQpANK6Hd/BK+/3cn/iA08nL6Dg8kLzAydQVZnxRgnaBiJVb134+NHOellKKs/HD5IwgHYVpDqZvMBjqYcYXo72Y4ETqSlVajuFgZ01HYUfTuRLZPS8QLkT2VQrIL3gWlY9EIWTNEN/vfIzMdJDTqeVLRWq6sGtvgFzOJpmwsMoQDAnxZgPTt7k+EY6jGB8rL9K45ZoiFINh1HSSQyF328isieqqLajyFRXeduPl9gcXRfIq0bBE4wcdj/Ar/V9FX+p+VQNnwUCpo/iJ8dd4LzbNmZaTiHIQAYXGw9NnVwyg3KyiQu3FBPY6Jbor6PXLsm4VPIGwjnTnJxkOdtZcXs4LiqXjhAgOOm+3HGco1M3nRl5EQ2Eqi45iYkP6KVBzRbEw0VctLDHq1lq0Fwz+E4HW2kvsRZ0QzrSe5ETqQ1bj9BcK6YRCjTUqFArOfBbrks/P+YeeIRNrRRwbR9cZyQzyxNgZfBNTcLCOobmYrLl9K1MWnUl/S21X5orzQUcxQUdhiolAWx0nB4feXPXq9nTqCocyAwyGugHYmRslaFfHSjSKgFPiZPIy5+IHF62MdcfiaOoq5+KHVuUyrjk2O7b46gA8t9N15Uj6Oj7HYpGz+ioNuEo0pv3x+Q9jK9JTmKipEkM59OVvfezNpVm0VSzPHTRmzfB6dnFD0eZWdsD5h54h3dyGYxjYPj9KN7gW2clbLccJZ5LEpsfQ7MWGdM2yeHD8veqGtwA2GpP+ZoYCHZxpPs6L7Q9xJbwLaxWeb3MOFJ8YfwVd2dXvvHLwORaPT9e+96Bd5FC6n0Pp/i0lDOZ4aOYcH5l8m3hpFp9doic3zmdHXuLxxFnXddVZcM/KAaXQFkQyinLwOWVOpD5szA2sAW+FsI74nTKfH/4er7bex2BTD4q5CfXq9NxlzaS/qZcduTFuNPUyEuygycpzKH1jS7itBe0i9yUv8F78yPxsSZSN6dg8On12/rhjs1e5ENuPs4rbruXSaonO9aYdTPljxMsZ9mUGNz1quhb+gKBrMBuMkom1opa4I9qawaXWgzyhznD8zIvcOHwfI7sP4egGTekkBy68SV/bzPoHId4hFyN7ea3t9K0gSQARrod38HbLMT4/9AJdhSnGAm1VKlHDsWirqHea7CK/OPhN3m4+yrXwDmzR8dkl9mSHOZ28tCXe4dtBgEOZfg5l+qv2HUnfoK2Y5L3mwyR8MVqLSY6nPmSwqdsNvBON3dlhHkqc35LCbimynYpjHA7G1R/t/0iju7FqEr4YX+59Fmcl9ckcyuHI7DVGg51kjCCWZqI5NhqKj4+/xu4VVDqbxUCom/djh8gZQXry45xOXqqycwwFO/hBx2OUNd1VNS0dBCueU39/4KuLNqeNEH9bSUNsaSaGU0ZTis+NvEhbqfHqlkLe4Wy6hXMPPoVtVuuERTn89Jt/QXLCrQI3NyHQRNHeadC8CpfVzeRmsJPnuz5SHSRWQXNsDqb7OZ28xFf6nsUWHUsz5t/L50Z/SE9hcpN7vfkoIGOEUAgRK7v1c+4s4Ynz33xbKfXgSsd5K4QNpKWUork067permJW6OZd9zFrNM0HwziaW4bj+52P8iv9X70tT4n1ZjUGvb78BL888FWmfXGuhHdyLn7Y3SECyvXR/vToy1XnvdT+EHndPz8TtSp+51/teYYv3Pz2mmaZtqUoFBw0XSpRxnf+GQeCGkeDed7Xa386QbtAW6tgagaJSQvLAsOEtnaTWPPW+9zebT5aVxiA+/5dC+/gY1Nv8XcHv8mlyB4m/K3Ey2k3udw2nfWvhUl/M9/veJSM4XoNhOwCz1TqLNxtbL039C6jqzDFdGAVOY6VQncsrod31hQeomAo2MWe3Pap5SxAWylJW8L1Cz/TcpyM0URnfpJHEucILYlxKInBWLC92lNLBEsz+Osdn+Tnbn6bsUAHeT1AZ3GK9mK1N4pSiqnxMjMJe07+YBhC3y7foniB2yVCkQOZAa6Gdy42nitFS36Gku6nuUU2rdbBnbAaG87c38PvlDm1glfYdsQSjYvRfVyO7MFBOJge4Njsh5jKJqcH+HrP04tcatNamG/2fIyfv/mddfcAbDSeQNhguopTXHb2LM7WWIeisbxLor0KA99WpbOY4LOjP1z2mJoG6zlEKIvBf935WfRKdkwBOgtTPDf6o0XlDFNJi5mEm15iTiNaLisG+4vsOxhYl5XCk5NvIZksl7uOuenMK/+GQ538Vd8n+Lmh5xuW8mMttBSTZPVg/RWsctiZ3Rqqyo3AQfhKz7Mk/LF5N+k3zQhXIrv4meHvcSGyt2ZUtYPG+eh+Hku8v9ld3lA8gbDB7MkMc6b5BBlDWz4nygqDlCPaIk+eu5GAUyJazpD0xWrun1ejLdg2Gmjjb/qeJa8HMJTF0dQ1wlffr+ncZVtws79ER7dZt/TlalG2Q+j6IHQcdnVCc9t1g5ym85c7PsWj02c5kBlYF32zbSsSU2VmU+7dR2MaLW3mHZe9fHDmA4ZCXbVTyCmFzynzaOJs9b67hPdjB0n444u+P6XpJH1RroZ3kfDHa7pQO5runneXsX2nnNsEHYfPD7/A/swAulPJ1rY0iGc5w75SGI7FQ4lz22LGead8bPItpOK6V0WNbY5mkPDFyRtB0maEN1pP8f2f+HucfeRZ0tFqVV0+5zB4vUgmfWe2mFzWYbqjF1XLliBC3gjyo/YH+XHb/Xd0HajUZ75eZGbaxiorrLJiZtpm8HoRx7kzp5COYoKnx1+vfubKob2Q4BcGv33XqUUWcrZOHIGbxXQXrcWk+90uQXNsWrdhTMlKeCuETSDglHh68gxPT57BQfhx2/1ciexBVzZl0SsV1KpfSsMp05cb50Tqyj3hyQGuzeVToz/kO91Prj7x8dKc1CLMdPTyTmsn9/3420RnFwf4KQVjwyX2Hbp99ZEIGFYZcRxUnSx8lmZwObKXU8nLVVHfa2E2ZVMuq6ryneWyIp2y79hYfSB7k96BCd6NH2E42EnAKXE89SF7skPbzptmJWw0LE3H55QRoFgvelgpHNE5kr7G2ebDVakrNByOb4O4grXiCYRNRkPx5NTbPJQ4x4wvhu5YfL33mSr7gOFYPDH1LofTNxrU08axMz/OM+Ov83LHw27GSOXaTxRSt/xoFSIo3eCdj32WnhuX2XfxLfQFdQlsG3JZm0BQQ9fXvlAONWm09/dz49B9y8ZZCw4jwQ6id/B3zKTtugumdPrOBQK4CeSeqBM4th0pi85AUw9FzUd3fpKIlePHbfdxLbwLJULQyvP49LuYjuUmk6zB7uwwIbvITw7/gO93PkraCAOKsJXj6Yk37koPK08gNIigUyJYmfU/M/E6P+h4FME1cmkodmeHOHQPCoM59mdvsrN/lKFQFw5CX36ct5uPcSm6oLDKSmVHKyuvsV0HyEbj3PfqdxftHhpwg90ME3bs8q/JA0nThIiVY//7r3P15KOufaOWdxhg3mFQnbHATlAIhJjs3YOlG7RMjhBVG5PeZDszEmjnO90fBXUrf5LpWJQqBaEAsmYTP+h4lN2ZIa5HdlZ5tunK5mTyMuB6yn3h5nfI6G51viY7f9etnObwBMIWYG92mJ6Br3O9qQ9LM+jNj9NaSq36/BuhXt5sPcGsGabJynPfzIX5lcXNUBcjgQ4CTpED6cFtVfvVpyz2Lkhj/Pj0u7SWkrwfP0Re89Nk50ia0RXzJjm6QTrexmyslWiq2nfcKsONq0X2HvCvOmGeUopyWdFz8yotkyNcPvU4yfbuquhlYM0ZLpVSFIsKba4iW7PBbMpmtHcfV0495kbAazo39x9nMjfOc5Ov1q1Hca9RFp3vdH+0KvOqXaNojq0ZJP1R+nJjjAQ7cERDlEJXNp8beakqx9bduCJYiicQtggBp8TR9PU1n3clvIsftT84P2tOm2FebbuftNHEcKiThC+GpZnojs1bzcd5ZuL1RUVAthMCHE7fmBd2CjcL54fhXW6Nh2XVSUImXlsgzNF/rcieA34MY20qpEAhx4kzP+D9R55ltrkdR3Pz7iPCJ8ZeWVMw4WzKYnyk7A5FCgxT6N3hI9QT4cqpx3AWGLEdw2Qs3MXF4t5tmVJ7I3g/dhCrVnbSOu9Gyozyd4a+x5QvzniglaBdYFd2dJEb81bnL/7jL3L2ayt4PJ3/5qra8gTCNmauKMnSSFNLM3iv+QiinPm0GXZl5vr9jkfpHfjalsgNdKcI8NTkW5xOXuZiZA8XYvtrp8kANHFo1paf4TkOXL9SpKvXJBpb/tMQESJRnfSsO9hrjsOp155ntrmd2fYuelts9maH1vScc1mb0aHFx5dLbvxE/qGDNcc0SzO4EN3nCQTciOJ3Wo6tqRRtyHLfibZSckukRpkj8OLPAPCb/7pr5YO/tn7X9QTCNqag+92SmDVQCKpOGu7+UA+HMgNV+6Z9cd5oOcFYsB2fXeZY6kNOpS5veXVEvJzmscT7PJw4z2utJ7kY3b845kM5mMrmRHCK6sKJi3E9kMoYhhBqWj7ddme3SaHgYFkK5YAm0Jya5GTzLIH02lYZjqMYHqztVuzYkC3pdQP3lks9cS/xRstJnHqe9DXqjxuOxf3JC5vQMzj9nOu6+mntv1vdCf96AzuzDN6btI0xHWv1XjcVFMJ4oK1KIEz7Yvxt7zPzM+yyZvJOyzGmAs38xPhr69ntDUPH4Ynp9zCVzbnYIXRl44gQtIs8N/pDdIFITCOdWl4doBRMTVjs3LO8QNANYc9+P5m0QyFvY/o0olEd7TaCxWZTNs4y3WqdHkbvOV6VjlpzbHZntqcKcI6iZnIlvJvJQDPxUprD6RuE7MLKJy5hItBapxaDQlM2sXKWWbNpvhLhqeQlDqb776jvp5+z+J2f/pWVVTbbBE8gbGMMZRMpZ5j1Rat3ziXxqVHzNWlGqg5/s+Wkq3tdcLylGQyEepgxo+R1PxejeylqPnZnhzmQGdgSifaWIsAjiXOcTF5m0t9CwCnRXkzMe4V09/ooFguUVhhvSsXV6ZDnVEdNYY30rM34aBndgHizsaLXkm0pkjNlrLIil1t+FdZlJdmdHaK/qXc+DYrm2AScEqeTl1bV161Iygzzld5bWVR1x+K95iN8euTlNSePC9jFmmU8BcUTU+9xNH2NlBkmrwdoKSYX1QBfyOPnfguAp/7pKo3I66iyaTSeQNjmnE5e4kftD1brTSt1kmshNVRAY4G2qhrAVFp4vfUkI8FOd3YqGqPBds7FD/H5oe/V/agaTdApsTM/VrVdRNizL8jURInpyfoCzfQJpaJDasbNWBoKa0SiOppW/UxtWzFwvYi1IHgsmbDp7DGJxWt/YhNjRWamVyt0IBzVeWbiDT4M7+aD2D5Kmsme7DAnkpcJbrMIdgch6YtiOmVebH+Yonar/rStGdjAC52P8UuD31iTe+eJ5BXebD25WIWmFH67xBeeuMLn9H+0uoZWKwjuQjyBsM05mB7gvfgR0kbolstjRWfuINiy+E9sOGUO1rAf+J1SnQAdxVCwa5FO3tJM0oZwNn6Ih2Y+WM/b2TTaOnxEYzYD10tVqhoRCIY0+q+5NQ2KgRCW8hGdSrNnT3X+oKmJMuXyfPEDwF2cjY+UCUf0quNHhwvMJldvl+nuM+cF0cFMPwdrFGrZLlxr6uNH7Q/iiIaDVqm9XT3sF3UfM74YLSu4X//Ff/xFAFdloxQtY1maZitZdMW1mV3f07l6YXCP4wmEbc5crqTXW09xLbwDB40d+TEem3qX11tPMRTqmlcxGI5FSynF/vRgVTvHUx9ypuVElYFS1VxPuDO5q5Fd21YgAPj8Orv3+xm5WaJYUCDuiqi1XWdqwqbgC3LhwY+RjrchFakxOfAuj9G/qJ1U0q5Za1oB2Yy9yGOpULBXLQxEINasE4lurc901mjibPwQ44E2YuUMJ5OX6FxF/e+xQBsvdTxSNYOvRUk3+bcf/QLlwAr3vlBdI0KiO0yqNYi/YOHoQiFkbrkKdVuZrfWmedwWAafEU5NneGryzKLtnxh/letNO7gU3YODxoHMAAfSAzV9rI+nPmTS38yNpj6kkkVIUw4H0ze4EN1flcsFqDkILqQkBpamE7SLWzay0zQ1du0NUC452A74fUI6baPE5r0nPkU+FAFNg8oC6fzu++mcKi+K5Viaq/DWjurxLjm9st0lGtfQRIjGDYKhrZV/csoX52u9z2CJ7tYB98UYDHXz0cm3aq4853jsj07y839wkmC2vPhdqDNYK4Gyf3mjfj1sn07Od3vn3ut4AuEuRoB92Zvsy95c8VgNxccn3iBlfsBooJ2AXWRHboycEeBC9EDV8bpjcbBOao2c7ufbXR9lyt8MCD6nxJOTb7FvQdTxVsP0acybIxUkW7ooBUKuMFiAY5i83XxsXiCsZHz2hU0+DO8kY4RoLc0gVv1BE9y6zd29dRKubQF+2P7gYsOtaFii8f3uR/nj/Z92fW9r8WXoKc2samKggERHkzezbwCeQPBYRKycIVbOzP8esXI8MHOet5uP4YiGEg3DKbuqghrVsxyEv9jxHCXNN/9Bl3Q/L3Q+jjnyMjsLy9d0mDWaGAp1YTg2u3LDDQmgC4V18kak7gLITXLmUi4rRKu9SshE4vzF/udwRMMSN3o5GDvFiZe/hVmubQju6q0dV7IZPPZHJwF4+st16pY7ip1XEnVdFfwFi2KofiGokl/HKNcqN1NNPtK453Av4wkEjxW5L3mJvvw4FyMVt9PcMHszQzVVT5cjuxcJg4X8qP0Bfunmt2peQwGvtZ7mQnQ/c5aLH/IAT0+8Mb+yKIlB3gjQZOUw6upp7hzDEHqMDPWSG8fLaQDyOZvEdLmmMFDA+Uc+7gYOVp5FWTTsQIQPTz3K0beqq8f17bqzwj0KtySmjUa8nJ4PKFxVagOAL6+wf7mRXKkVY2Jm20IEsylkofF9SbMKyIdN1G1koPW4czyB4LEq2osztBffXvG4gVBv7R0iZM2muuf1N/VyMbp3PsXGHC92PELbzQTvtBznWtNOBNed9mTyEg/OfDA/mCjgQnQfZ+OHKOgB2gsJHk68vypjZy0OBJK8V06T1GKLEtYZjsWDM+eYSZSZHLPq1jbKxlqw/IEqwehoOlNduwhFdXJp1xgdatLo6vVhmrUH1GkzSsqM0JOfwKcsBkNdlP7hc+ga/Nl7Qq7JpGm2RPNkDqkUzFG6MN0dJh/2rZ+fvAj5sEkwU66SDY4ulALL6+1LAYPJ3gitY1k020GUaytQC6RC2a8z3b1ynWePjcETCB7rStCpH/GlLTOrPxc7WKfutPB810dJmeGKsHAHnffjhzEcm/tSblDWK233czmyZ96DZSTUyTcCT/OZ0ZfpKkwtavFGqJez8UPkjCDd+Qnun7lI0hfhbOwgeS1AX36c06nL/OTYy7zU/hA3Q90oETTlsGfyKub1QSYqxuF0tIWJ3j3kmyJYlVKaLZMjhFMJlKPmjdELcUTje0/8PAErjyGKgCrzyT1XORnp57ML3CP1okX3QAqt1mP7Ttb1iALaFj2tCraibTjN2K7Yyp46ayDRGaarkESzFZoCp3LByd7IqnT+hbCP4X0muuWgNMHRBH/ewijblH06pUDtXFQem8Oyb4qIRIF2pdS1JdtPKqXuuLq0iHwK+Le4n83/q5T6l3fapkdjuS/xAZcie6t3KMW+TLW76xz1cjLZojHji1YF3s0l8DuVvEhOD3IpUr26sDSDV1tP8zPDL8xvO9N8jPfjh+cFR8YIcTW8y62QVckkmjIjXI7s5jMffofQhzdQJ7tQuK6211v2MXK8g/t+/C0GD5xgaO8xnCUV05LtPe4P9XJRiFA2/ZSNW+qkPxrv4A/TH4M+NR9l3tPvqleWGx41qtUu85dREE3kme6pjky/XWxTY3hvM03pEr6ChWVqZGN+nLWoeESwzVvPrBgyKVLf9uCxedQVCCLy88AfABMiYgL/QCk159f4x8AdFYsVER3498BPAEPAGRH5mlJqc7JNeWwIUTvPA4nzvN1y3N1QGdwiVpaPTr1T97wduVGSZmRxUjrcQiUCVTl8wM19f/GKzUx7BPpsqFGLwPV0csnrfs7GjywSHEo0FGqRd4zSdcqO8KP4aWaW1E22TZNcOMrVEw8z0bMXx1hmTqVpbma6+YDBJalEFvysKQjkygSyZQphH02p4orCYL6ZZbabRRtxHA6//S6H33kXzbG5ceQwZ594HNu8zUFYE7IxP9nY1vWG8rg9llsh/C7wgFJqVEQeBv5ERH5HKfUVVveersTDwFWl1HUAEflz4KcATyBscx5MXmBf9ibnYgfJ6372pwfZkxteNmvqieQlLob3UELmXT11x6K5mGLGX9sgqtsWulXGLBbrtmtYt7yURgPtaMrBXqrHqaWi0DQS7b1oNdQ+SjeY6N1bJbyqEAElRGYmScfbVlSFaApC6RKFsA9f4c5TgiigFND57P/3JzRPTs1/tMfffIuDZ8/xV7/xRWyf583jcYvlBIKulBoFUEq9KSJPA98QkR2sGJK0KnqBhQ7yQ8AjSw8SkS8CXwToNIPrcFmPzaC5nObJqWojdLHgkJi2KBZsdEMjFteJRHVSgxkeuPo1bhw8zXTXDjTbpnvwCk9YH/Lq7scZDHUvqoymWWV2fHgeAWKJcXSrjG0sjkrVbIvuwct8+fc/z9s/7iaQKdE+kq6tk6+Bppy6njP1SmYuRZSie+AKuXAM21x+8FW4RlaAYtAgkqwv6FaDAqLTI4uEAbizOV+xyCMv/IBXP/2p+e3N4xM8/P0X6RgextF1rh07wttPfYyy31sJ3CssJxDSIrJvzn5QWSk8BfwtcGwzOle57peALwEcDsa3dmJ+D1TF7UZqDJaZtL0k579DLuMwrpVxHPCT4/DZV+HsrSMSIY1nQm/ww/YHuN60EzMA5bxD37UL7Lx6zr0WcOr17/HeY5/A0Y3KIC7Ep0bpuXqB737lBLRDocmsxGAveY1qZIUV26J96BoTO6uD8uq6FtVAlINuW3QOXWNk16GqQLdFzQrzaphc1I8ay8JStdHSvs71Ran5thXgaDDZF+WZL3+3tn0B2HXlyrxAiE4neO6//jlm2V1RaZbFvvMXaBsd4xt//5dXFH7iOOy+cJGD758jOpMk3xTi0gP3c/X4Mc9IvI1YTiD8BqCJyNE5vb5SKl0xBP/COlx7GNix4Pe+yjaPbUipYDM0WKIynqAb0NPnmy8yo5RidLhOARinvmE0XdL455/+NQDEdtAtxaf+7E9pnZhcdFxTOslj3/srZtp7KPmDRJJThNNJyqbJbHNF5STCZF+Ejpuz7q8Vt8dALoPlD7ozdN1As8oEM7O0jd/AVy4xtPeoa3Cul1J8BVrHbtI8MUyytYtc5FZfFgoWJZCOBykFzfn9w3vjdPen0O254xTBzCylYBOOrqPZFs2TI3TcvMrl+x+l5Itg60K6OeAKFhHEtZDUMTrfuv7J115HtxarqQzbJjqTpKd/gJE9u+veXziZ5Lk//TOC2ZzbLhDKZnn4+Rfo6h/gx5/7zJqel0fjqCsQlFJnAUTkvIj8CfCvgEDl/weBP7nDa58BDojIHlxB8AvAL95hmx4NwCo73Li2eLC3Lbg5UOLQy5/hd79xmJaxcT559S/w2WuLPC4FbqkrlK5h6XDhoQd59PkX5mezc2hK0Tpxa05RNgzee+KxRYbfYshkaL/rJaNbDsWgAY6fJ77zPRw9RMEfJJqc5PrRfXz7l36BZ/7ma4Rmk/9/e28eHV3/xd8AACAASURBVNd133l+7nuv9iqgsAPEwn0VKWohJUoWJVtyJFmWLdmOYiu2Y8fpxJ5On0mfyZxMJznzx8yZf3KS05nMdM/0uNt90ontdrwl8iJZmyVa1EJS4iqu4oaN2IFC7ct7784fr1BEsapAkACqAPJ+fCgDVa9e3XqFd3/3/pbvj3hDPrlzvsZASqSAhrGLRFqaSPt83P3WL4m0dDDUs4m01483lQBshtb0MNnR4KRczsJ26QxubETLWRimTdajc/dbp7n3rcPoloUmJTmXi4m2Vnq3dpZkOwGc27mD5qFSGXAJXFm9uvB76+AVtDI7HyOXo3loeE6D8OhP/wVfIllidFyWxbrTZxju6eb8zjvnuFiK5cJ8EpTvB/4KeAcIAd8DPrbQN5ZSmkKIfwO8jBO2+69SypUrnXkLkc04bSE9Xq1IurlSG8D7X36VzRwvmRCkhN986Qh8ZQu2rhVVqJbj2pWsaRicvufukuMubttK/cQE2w6+j5ASTcqiAjWARF2IIw99jIvbS72bUteIh72zHnHz+nOfwxeP40mniTY0YOs6646e46MdDztG4EbdHsJxTR1+5AHQHuTZ//wdXJZJy3A/LcNXQ2eWrnNqzzdLjMFsbJdONp+meeSRvfRv3MCGEx9i5HL0bt7IwPr1yAquqPM7drDjvYOEItNF18jSdd57/JOF4xKhIKHpUqlp0+UiGaxcUFg/MVF07pLLAOx59XWmm5ro6Ouj43IvyWCQM/fezVhnhSJGRc2Yj0HIASnAh7NDuCTl4ugGSClfBMprGSiWHCklsWmLi94gDGWYaGkhkIgTikxj6xq6mWO4q5Ph1T0MrlvLlNZa9jwdfX0V/dSNY6MARJqbyXi9Jav6GSxDJ2e40G0bISVCSvo2buDkfbvLnFhw5OG9nNq9i5bBK7RcGWLVpUu4Mxl6N27kxIN7bioQmgoGSQWDICXtlyJYnsb5GYIKbiTNttFtiZQ2dZHSyXaquZ2+9XfQ2hdjukkSb/DOK59/fFUH46s65vWZEIJ/+YPf5679b7Pp2Ak022Jw7VoOPvoJ0sGrFcEn79tN08gIrlyx20gKweXNmyue3p1OY88RFwEnvvD4P/0IBBimhQ30fHSeeH0d7kyWWDjM8Qf3zLkLUVSH+RiEQ8ALwG6cosj/JIT4gpTyuSUdmWJBlGsD6E0kuWv/flaf+wgQxOvqCE9M4jOnAOjsdZQ4BUB+XljV20dHbx8733mPy5s38fZTT5ZMfqlggLqpSFmjkJvJrBGCfc98hsd/8EMM0yzeCeg6I11dvP7bn6ejtw9vMsnYqg5iDQ1lzniVjM/HwIb1DGxYz5GHKwiy3ShS0tobxZ2x5mcMbKtspzlwJkJLdwLclq5jzPLRX954J30bd2DrBpoU1E+kqJtM4UkPY7l0BtatxVyk7B6p6xx55GGOPPJwxWMGNqzn+J497Hz33UI6ra3rvP6FZzE9lbOjplpa0eZqBo1TPCcsq/Cda4BmWdRPThXiDZ/45xc4+Ngn+Ei5lmrKfAzCH0gp38//PAQ8I4T46hKOSVGGSu6ailzTBtCVyfD0P/wj3kQSPX8De1KpknTEaxH5f5ppsvrcR1xZs4ZLd2wtOubww3v51Pd+UPJaCZy8/+oKf3xVBz/51h+yc/+7rDl7Fm8qRc7t5txdOzny0INITavpKtHIWrT0T+PKyYoukAL5GIE7G6FpZIKRzrVIw1X0fN3EMIh2AM7duYNNx45jWBYZj4/eTTuRs3z+mgQsm6ahqJNpBaT8Pg499iiXt25Z3A9agQ8fuJ9zd91J6+AVcm43o12dFV1RM5huF0ceepC79r+Nyyzf66FiUHvWz4ZpsuuNfVy4Y9vcxX6KJeW6V36WMZj92EIDyoo8D574U/7knSGA+SlS3gR6Lse9b7yJZ5YxgBuvLnTlcmw5cqTEIIx1dnLi/vvYceBg0eODa1dzate9RY9l/H4OPv4YBx9/7AbffWkxMhYdlyPzqw6WkkTIzVRbkL0/f5vuCxeYallFRp+lwyMEkdZOPMkcGb+LDz7+MHVTU7T3DzDW0YOQNvLaijdNY6K9B5E3CP5kiod//ks2HT3Ga899oSoTZTa/67oRTt23m0R9PTv2v03jhCMmeLOJpuHxCSbb20oed6qtD7PlyFFcmSxDq1dzdO+D191FKm4MZYqXgOvqys/m36WApTEEAD1nzvLQSy+jm2bZLJIbpVJV8JFH9nJy973ccegDdNPk3M4dRJubyx67HAmPJa5vDPLXb7zdT6LBD0Db4CCJUAM5d6myKUIjPJZkZHU9tmHw+nNfIDw+Tng0iq0ZZd/rWgFAAbT3D/Cl/+s/cnL3Lk48cP+yXEH3bt5E7+ZN1E9M8MgLvyAUmUIKjZzbzURrK6t6e4sWI+XQbLti7OeRF37OqkuXceXdbmvOnqXr4kV+8bWvEmtYuvvndmP5/WUtY/7i0/96fgdeT1d+CXCnUtz/ymus/ug8mm1julyc2XknW48eK/JdLwRT1+nbWKZQK0/W7+fII3sX5b0WHSkJj4/jTaaYbGsl6/UWPe1LmnMaA6fYS3BlXQO266obJevxEK9rolLxvjtT7EaJNDcTbWik8/xUSdaVyBewXYsAXKbJ9oMHae/v5+Xnv7hsi72mm5r42Te+RiAaRTdNog0NuNNpPv3d7+OLJ3DlcnkB82LjawtBtKGh7OTeMDJK56XLRX/HmpQYuRw7336H/U8/teSf63bhtjYI3jc+X/j5f/qb9hqOZGF4kkk+9+3v4M5mCzeZK5dj+/vX719Qjtnz1Mz5LE0j6/VyeteCNA1rQmB6msd+/M8Eo9NITUMzLU7tutcJROcnVlsTjm5RGSSQdWsMr6kvqTQ+de89rDv5UVGR12wsvXTitnWNifYATcNXdyW6mcObjLH67LHSk+QxLJumkVHa+gcY6emueNxyIFFXV/g56/Pxwu9/jTVnz9FxuZeM10PP+Qt4kil0y8IyDEyXizc+99my52rvHyhbHa5JSUdvZQVdxY1zyxmEG3LX/M0SD6ZK7Hj3QJExmOF6K95Kz1u6zuuff5b6yUk2Hzvh5Ltv2siH9+8m4/cvzqCrhZQ88YMfEojGilxmWw8fJhauLxRMxcIe6idSTnB39suBtE9ntLu+bL/ggfXr2PXGPkdLSTeKDIYEphu9Ja8BSNZ7yfpcBKbTeFJZdr5zgLb+C+jXcevpuRytg4PL3iBci20YXLxjGxfv2AbAB5/4OKsu91I/PkE8XE//+nVFQfbZZLweJ7XVKg1aZ+eZiaXncrT3DyCBke6um1d6vcVZUQZhMNxyfbdNDdw1S0qFHPeG0TFaBwdJ+3ysPXOm4uRebuK3NI3h7i5aBwfRTaugqQ8QbQiz/9OfYnzVKobXruHsvStvRzCb9r5+PKlUSfzElTPZceBgwSBEm3x4UibeZM6RtMgfN9kWINFQflIH2H7wEALJutMfcObua91lkkAsS6KhvCij6daZbgkAAd6t+zi7X5d0X3BcRhWNtWGQ8V1zPilpuTJEKBIh0tRUNii73JCaxuC6tQyuW3vdY/s2bmTPq6+XPJ4zDE7fW1q4KGybtv4BvIkEmm3TfGWITceOF/4GbE1j/6eeoG/LZnTTJOcu3/L1dmRFGYTbiXUfnuTut94mGIuR8XiwdB13Ok2yLkTW7SE8MQE47gdXdm45CBsn9xscX23W6+E3z3wGbyLB9gMHaR4eIdrQwMn7djPWuWppP1iVCcRiFSukfYnE1V+EYKy7DnfKxJPKYesayaAbWcblM5vVZ8+h2zaDa7eWCuThdANzZUxynrlvtXi4nje+8CzYNnteeY0NH55Es4sb0me8frIuF5c3XY3jeONxPv2P38cfjwNOIdlUawuvfPG5W0al1PS4+fXnn+HRn76AZCbwLujfuIFzd+0sOrZpaJjHfvJTXJks+qwdxezrqNs2D//yJeyXXgYgGQxy6LFP0L9xw9J/mGWOMgjLkE1HjrLrzX2FqlHPrMyeush08ao//0dfyQUkgb5NG+m+cBGQDKxbx6HHPkHW6yXr9fLOU59aug+yDJhsba2oThppKs2CyvoMsr753RY9Z8/hSTn1Hom6yumP7rR1XYNQQNN478nHOfDJR7nvtV+z4cOTJOobObvzY6QCddi6RutgmmgDRBt9PP0P38UfT1z97qWkaXiEh37xIvue+QxdFy/hTTiFflNt5SvNVwLDq1fzwz/+Ft3nL+DOZBju7ma6uanoGD2X47d++OOi+2UuZrKeQtEoD//8l7z+hWcZnqXvdDuiDMIyQ9g297z1domEQNExZR67NhA88/ubz36W/k2VM4NudaZaWxjrXEXrwCDGrBWjaRgcXmBG1N1vvV3YebkyKTL+0laVhmliGjfQXjKPNAwOPPk4J/fcT9NQFikEzv9AtyTh8RTh8SRZT4hAPFH0WgF0X7jIV/793wHOrlBqGsOre3jjc8+UFcFbCZhuN5e2ba34fM+589etmp7h2nvIME3u+c1+Xvzq7W0QbvwvVbGkeBPJEhni+WAZBmd33slkSwvxYIDLmzbywz/+1m1tDAA0y+bAJ5/i6MceY7y1E0sIphvCvPnMZxhe3bOgc88Wg+v56EM08xrXnW3jyqQJRCdv+j2E7cbWtLwpmPU4jkvqw/sfwzRKA6Ri1j9dSgzLor2vnzvfefemx7Lc8SfiaGUCz/OlfuLmv6dbBbVDWGZkvZ4basAyg0ByavcuYo2qcnMGbyJHy4DT+yAWXsXxB1aR8+iM9NQjy2QM3SjJ4FWF0FW9Z0kFQlxZuwVhW0ih4Ukl2PrBPo7t3cNkx80Fel0ZqyTzaTYSGFu1ho6+j657LsM02Xz0OEf3LpLu0zJjvL0dW9evWwBXidQcqq63C8ogLDMsl4tLW7ew9vSZIhfHbGbmh5kpLecy6N20SRmD2diSlsFo0WQqpDPB1o8nibQu/OY/8uADbDp2xpGbQNLef4Ge8yeI1zfhyqQJRicxXS6iC/hech4dW1DRKNiaTtZdOQvqWlzZ8k2KbgVGuruYammmcXgE4xqjcO3lkxS7R3KGwfE9JR18bzuUQagBRjZH4+gIWY+HaDiMJiXmrGbnB37rMbzJJB19/diahiuXQ0qJaRgIIUgFA0w3hGkZGibj9XL63ns5e/fOOd7x9sOXKJ95pUkITmcWbhCkJFHfxZl7Wx21UykZb++hZaiXLUf2I3DSe6MNDYy333zRY6LeQ/14CikrCO4JCEbGyhYTlmNsvrLZKxEhePV3nuPu37zFhhMncOVMpBDYus6V1T1MtrWR8XmZaG/j/ldfp35yClvT0GybE3vuK9RIAIXgvD8eY7K1jUR9XeX3vYUQchH0bapFqGOjvPdrf1frYSyIrYc+4J639mNrAiNnIqR0UgVbmnnvid9ivOPqDRuailA/MUGsIYxmWoTHJ4g11DvHqLzpOQlMZ2gcjpddWdsC+jc3lT5xA4QmUzSMlnYJ00yTrR+8ScP4ECPdXbz19FMLLuZzpU1aBmMYOWfVO/OetoCs1yBeD+tOn8adSuOPx+k5f6FErkTiSI+8/LtfYqLDMVD14xPcvX8/bf2DZLxeTu26x0njvE3+tuomJvGkUky1tBRJfAeiUT75w58QiMWQQqBZFn2bNrL/qScrFs8td/b91ac/kFLuut5xyiBUke6PzrP3F7+smEGUc7n4+de/elsqOLb1D7Dx2HFc2Sy9mzZyecvmGxNxk9IpKMvHBvScxaqLkbKVx8mgi/Guha34us5NoJdzVUuJnotzZX0r6cDiVnV7ElnqJ1J4kiZSF8TrPUw3+4viIZpl8fDPf0HnxUsgQbcspBCMdHXy/qMfZ7LNiWWEx8Z56rvfR8/lCq6TnGFweetm3vnUk0WfZ/XZc2w9fAR3Ks3A+rWc2r2LdGDl+9s9ySTd5y8gbMng+rUkQyGQkmf+699TNzlVVMxoGgYnd9/L0b0Poedy9Jw7TzAaZbK1hStr15SVCQ+PjbHx+Am8yRQD69bRu3ljzYQJ52sQlMuoiux478Cc6aS6aXLHwUO898TjVRxV7bnnzd+w5cgR9JyJBnT09rHt/cO89OUvXVdiQDNtGofj+OOOiyjn0ZlsC5Dxu4iFvYQi6YJRkDgGY6HuIt2087pH5VfSgWgcf7SZpqEpbF0QndX0fiFkAm5GA5Wb1YDT1ObNZ58hNDlF08gIqWCQka7Okve+Z99viowBOAJ6a0+f5cSePQWRuZlaiJlOd3VTU2w4cZJffP2rzgS6Qtl47Dj3vfZrZyKXkvte/zUn9tzPwPp1JTIn4ATktxw+yuWtW3ji+/+EZlsYORPTMEiFgrz0u18q2gluPnyEXW/+Bi3f+7r7/AV2HDjIi19+fs6GQ7VGpZ1WkUA0NufzmpS0XCltiH4rUz8xwdbDR3DljQE4wnz1k5NsOXx0ztdqOZNVF6bwx3OFFEt3xqK1P4orbRJp9TPRESTjNci5NOL1HobW1GO6F7jtt+Wc/aHj4RZCUykM08adsWgeitE4HF/Ye94gscYGLm/dwkh3V1lD1DYwWPbml0LQOjAAQGhyio0nPixqe6rbNu5MekWnr9ZPTHDf629gWBauXA6XaWJYFtsPHqTjci+yguF2ZzJ84qf/giedxp3NoUmJO5cjGJlmzyuvFY7zxhPsemMfxizJeVcuR2hqiu3X9AxZbqgdwhKi53Ks//Ak3ecvkPF5ideF8CUSFYN+No6W0K1E/fgEm44ewx+Pc2XNai7esa1o1d/90XlEmTRBwzRZf/JUUce12eg5i84LTspniaifhPqJFOOdIZJ1HpJ1iyvhYLk0J/On3JNSOkJss10IQiMUSRNt8i/cGC0SObcbd5mMIylEQRp8VW8v5WS9ddtZ8b73xFKPcmnYcPzDsvUKRs6kbWCwSPJiNvG6OnyJ0riRbtt0n7+AZprYhkH3+QtljYphWaw/eYqji9XudQlQBmEJ8MdidFy6zN3738GdSePKmcwnM9o2jPJN5Vco6098yJ5XXy9smzsvXWbHewf55e99ecGB1qZhpzq3UmtGd3pxekCUQ7PzgoMluYwSzbbL+ok1yyYYSRBpXR7ZKmfu3snOdw+UBp+FYHDtGsDxm0uhAaUTpDWrGM4bT7Du1Cn88QSjXZ30b1h/3dabtcSbTJZtFiUAI5flwratrDt9pujamIbB2bt3cue7B8qeU+B8x7YBolJGGFSUSV8uLN9vbSUiJbtf+zWf+/Z3eODlV/HH44WYgZb/NyMrMfPPFoKsy0XW7eadJx9nfKWkBUqJN57AnU6XfdqVTrPn1ddLts3+eJx7frO/cFzfxg1lJw/TMDi/fVvJ4zN4E7k50ytN19KtxP2xbPl+OEJUdDc4yqfRJRvTjXLyvt1cWbMa0zAwDYOs20XW4+b13/58waD1b9xQdgIzDYNzd+4AYNWly3zh2/+Fu996mzve/4C9v3iRZ77z9xU76y0HBtetJVcmNmUaBgPr13Fx65aSe/Tk7l2cuefuihP6dENDITYwuH5t2eJSS9e5vGXzIn6SxUftEBaR9SdPsfH48YoFZTMInIyifU8/RbKuDsM0mWhvWzYaM8KyEFJWzIho7+3lwV85Bg8pGetcxQd79+JLJUgFgox3tLPqci92mWpg3bZZffYc7z7pBM6jTU2c2nUPW98/7LT5xLk2042NnL37rrLv743PXVwlceSslwrNtCuvAG274rWzxdLtWm4Uqeu88flnaRgdpXXwCmmfj4H164rceVmvl/1PPclDL/7KyZ6yLEyXi4n2Nk7tvhfNNHnkhZ8XraQN06Ruaoqn/vH7/OwbX1uWO4W+TRvZ8e4B6qamCveqpWnONVi3jqf/8XuFVp3grOrvOPQ+l7ds5v2PP8yuN/YVnrdxZGOO7H2Ie978Dd0fncebTJL1eBCZDMJy5OVzhkE64Of4A8u7+E0ZhAVSPzHB1vcPUz8xQXh8HJc5Py0VVy5H94WLnLtrJ50XLtJ58SK9mzcz1dqypOPVLIvVZ8/Rc+4jcm4X53fsYLS7C3BcXQ+89DKdvX0gJabL4OSuezn+sQcLN3bD6BiP/uRfim6Ytv4Bnvr+fyfnciFwJB1O31OqUz+DuGZ5feThvQysW8fGEydwpzOF/rzlDGR4OE5dJDNn/4dYnZt0YOkaoFTqrAZObUB4coRoY6ujQWQ7Us1dF07ROniB9554jMH165ZsbDfKVGsrU62VVVB7t2xmtLOTtWfO4EmlGVrdzXBPDwhB54WLZV8jgPrJSXa8d4BTu3bR3teHkDbDPT2OJLeUtPf10zg6Rry+joH166q6GLJ1nZe+/DzbDxxgw8lTCFtyefMmjj+4h81HjpWNaWmWxdYPDvPuk48TD4fZ/t5BgtPTTLa1MtbRziM//0UhLjHzt2lqGtPNTaQDAfo3rOf8ju1FBajLEWUQFkDnhYt8/IWfF3zkN+IdtIWg+coQ60+dRjNNEII7Dn3A6Xvu5vDHH16S8eq5HE/89x8Snpgo9LZdc/YcZ+6+m2Mfe4BP/8P3ioLerpzJzncP0DZ4hVe++BwIwY73DpQE3WaOd+ezUUKRCNs+OIxmld5YlqbRW6Yv81hXJ2NdnXOO353KVTQGM9c+49GY6gjOeZ6FUtktBKbXTfPwR6w5e5SxjtWM9GzEFhqD67bSv+EOVl3sZbi7C2uZTwyzSYWCnNpdmsJumCZClo+OCWD7ewfZfuCQc73yO4zBtatpHB3Hm0ig2za2ppFzu3npK88TbWxc4k9yFdPj5ujDezn6cLHibd3kRNkdviYldZOO+N2VtWu4snYNAL54nM9/+ztlA9GGbVM3FeHl3/1SSQ/v5cry28+tEIRt89CLLxX5yG8ky1xqGnWRiPN68k3DTZMth4/QMji4JGPeeOw4DePjhTRCDWfS33r4CHcceh9PKlW2DWdr/wDtff2As0MoF5CbjSYlvkSCU7vuwTQM7PwEmjMM0n4/hx++Odnp8GhyzucnOgKMrAkveaVt1mcgy7yFBNJ+F6//zhfwxyKMda7FdLmwXS4slxupG4x3rKbj8uiSjq8itiQ4laK1b5qW/ii+WPamhBRnGO7pLmv0ZzBME1cuhzubxZ3LOdk4Fy4RiMUw8s1/dNvGk07z5Pd+sKCxLAbCsmgeHi27sDN1vWzzqDVnzs05blvXaR5aOankaodwkzSMjs1bavfaPxdb04iG62koI7ermyYbTpxkrLPCallKQpFpXJk0nZcu44snGOnppm/D+uuW1W/88GRJVgk42+F1J09VVInUpKTzwkWGV/cQbWygbnLyuisJKQTjq1bx0ubNbDlyFH88zuDaNZzfsX3+nbykJDCdITyeRDevY3QFJOqrswpLBVyYLh1X1ioajxRXYxfRpjYnE0cUXynbMNDs6ktDCFvS1juNK3tVPdWbzJEMeZjoCNyUEc34fJzcvYsdBw7OezFUKSvMm0rR3tvH8JqF9yPQTJPuCxfxx2JMtLUxWqYwrxwbj59wOuxd87jEuWcvbdmCJ5UqamHqymbn7MEgpCSzQnYHoAzCTSM1bc7ipGspnjhExUlRA8Lj4zzw0sskQ0HO79hOor4egK7zF3jg5Vdxp1KFyVsAGz48yc66Ol76yvNzT7YVxiukJDgVmbPrmul2fPIn9tzPqsu9jptrDjTLYqK9jWQoxDufurmE9bqJVNnG92XHd51Wl4uKEIx2BwmPpQjkM46yXqdCeqYz2khn1xyvr37yQDCSLjIG4Aj9+WMZYg0esr6bi7kceWQvzUNDtPcPFO0cbSGuu5O8lq6LFxdsEMJj4zzxgx+iWRa6ZWFrGpHmJl754nPX9d9vPH6i7IIJHIPw6e9+H5BMtrSy/9NPEm1qYmh1D9sPHETLlYopShyjObECelzPoFxGN8lUSzPZMpOvjZNelnMZWLpedpLVLQsjmyub+iaBxpFRNp34kB0HDvHsd/6enrPnaBoa5pGf/QJ/IlHYbl/19eeom5rirrfennPM57dvwyyT/SIAvcw4C59J17m01elUNb6qg/1PPUnG6yXnchU+42xMw+Dyls0LkjYQtpyXMZgZf3qebS8XhJRsPfQBv/N//z98+W//jkf/+Xt4UgP0bWpgeE24aFI9d9c2p0CtDJn5ttNcRALRTNlrKWQ+jXYBvPbcF/jw/t1k3W4nwytcz7k7t5O7Qd2eBUthSMljP/4pnlQKd9bpqezK5WgYHWPXG/uu+/K5VvreTAbdstAtm6bhYZ763g9wpdOMrepgaHV30X01k66a8Xp57bc/v6LEAtUO4WYRgn3PPM1v/fAnCGljmBY5w8AyDF788vOEx8e5d99b1EUipS/FKYCJhesJj40XrPLM/ToT1JoJVD304ksM9fTMuSrXbZv1p05z/ME9NA+PkJ5Zmcz6Yzx3107WnTpD/eSkI6k9azzXMvOcLQSHH95LtOlqwK93y2b6Nm2kfmICy3ARmppi15v7CE9MkvF6OH3vPZxYgLa8K23SMJqY9w7MBtKhpW8ov/Ptd7nj4KFChpU/kWD3r9/Elc1x6r7ioGu0uQFfYgpvwiyqWrYFRFoXV/RuPlQulaJsPOSGzq3rHHl4L0f2PuSo92oaRjZL98VLaPE4+jy+R1sIejdvWtA4moeGcWfSpe0x8xXC7z3+yTkn50tbt1A3+e5108Y1HLfUhg9PcnrXvbz57DNsOnqczUeP4kmlmG5o5OL2bVy8Y9uySSWfL8ogLICxzk5++od/wMbjx6mfnGS8o4ML2++gva+fh3/5Erpplr0NbZxevw2j40WPV0ylFBrNQ8PX3c4Z2Sy//f9+G1vXEVKSCgR47bnPF9RTLZeLl77yPGvOnGX12XOEpqbKxjEAsm43J+/bxeWtWwtCZ0Vj0jQiLU6KbKwhzM/Wrb3O6OaHJ5GjdSCKkPML0tuA6dZJhpY2a0fP5dh+8FCJS8FlXUnukwAAG69JREFUmux8911O33t3SQxnpCdM3XiKukgazZJkvTpTrY7wXrVJhD24R8xS9VcBycUyprMK80y3m1/83lfY9cY+Vp89i24VS3fP7JwlTubZ8Qf3kKhbWBW3UyRZ/q9GN69KzVfizD13s+nYCfyxWMElW8n15TJNmoZHnM+iaZy95y7O3lO+bmYloQzCAkkHA5x48IHC78K2efBXr1T0RYITWBzqWU1Hb/+8fXbJUMgpua/wvMSJBei2DTM7jEiEx3/wI376zX9VqCOwdZ2Ldzirl55zH/HQL18qEi8DsDTBpW1biz5XtWgaKd/D4FqcClInkBxp8S35tjw8Pg4VXArCtvHHE6VNVIQg2uIn2lL9HcG1xOs9+KMZPCnHKEjyQfBGHznv0kwD6UCA/U8/xf6nn6JxeISd77xL4+gosfp6JlpbqZ+aIuPzce6uOysnUdwA46s60Ozyq/vJttbrFsltO/Q+vngcYdv56yNIe714U6mS+840dCLNzQse83JDGYRFpn5yEr2CMZBAIhTknU89Qf3E5LyzlDTL4vAjD/HoT18ochvNrLIsXUfYdslKRgPcmTTtff0MlQnW9W9YTzIUJBiZLqyIJI5OzYcVROWWEs2yMbLXV32SQNajM7y2OkKArnSaR372y4pZWMKWZHzLPJNECEa76/AmcvhjWaQQJOo9ZKsRewEm29t44/PPLul7ZL1eTtx/H9sPHipIxtg4C7ADjz0652vDY2PsOHCoyF0kpHRcq7peWGTNYGs653dsX/TPUGuUQVhkTMOoqHdiaxo//9pXyeaF3aSmlfyhwdWJfnZZ/NCaNez77NM88PKrTqpbXkYgEQoxsH4dWz/4AK1MlbSQOBITZZCaxotffp5db+xj7ZmzaJbFcE83hx79RCGzqZrMtZ2f7WKQGoyvqp4W/473DjgrxzLPmZpG7+bNy74CFQAhSAfdpIMrYKw3yfGPPch0UxM73juIPx5nvL2Now99jMnrZPqsPX2m7ALNZZpMtDTjS6by/aglaX+AfZ99etEbIC0HamIQhBB/DXwGyAIXgN+XUpZGX1cg8XCYeH0ddRPFufq2EIx3tBeMwdDq1SSDAYLT0+izpBBMXefy5k3URSKOBMSuexjtclIYBzas50fr1xGKRDBdLlLBqxW57f39tF4ZKhmPkJKJtso3Q9bn452nnuSdp56seEy1kJogFXDhu0a4bsa9kXFrZAJuYg0+LFf1EuTWnT5TNtAogWhjI+8+8cmbO/HMwmEFZaGsBHq3bKb3BkXkdNOqWGBmGwY/+tffJDwxgS00oo0Nt+x3VqsdwqvAn0spTSHEXwF/DvwvNRrLorPvmc/w5Pf/CS2f9pZzuci5XOz/9FNXDxKCXz3/Jfb+8kXaBgaxNQ3LMDjw2Ce4vG1r5ZMLUbbF5uFHHuaTP/rJNZK9OsPdXURaVoivU8pCxsvsW1MCw6vryHmrH4x1KH/zW4bB2Xvuum5Xt2sJj41z3+u/pq1/AKlpXN68mUOPfbyo4KnaGFmLwHQGzZakAy5SAdctO+mVo3/jBjYdO15ST2AaBhe3bQUhbsmYwbXUxCBIKV+Z9et7wG/XYhxLRaS5mR9/8w9Ze+YMdROTRFpbuLx5U8nEkQ4GePWLz+FJJnFlsyTq6m5aHXKku4tff/5Zdv/6DcLjE5guF+fu3MHhR25OJqIWeJO5kt0BOAbBMCWlpT/V4eK2LWx9/3DpLkFK+tevv6FzBaYi3HHgQy5vup+LWx6gZaiP7o+O86mh7/PCN75ekybugUiaxpFEIbMrGEmT9RiM9NRBGcXaW5GRrk4G162l8+KlQpKFaRhEG8J8lJf6vh1YDjGEbwD/VOlJIcQfAX8E4KlbWiXQxcT0uPlo553zOjbj9y+4YQzA0JrV/OwbX1+xrojAdKZs7YGWfy5VI9/3iT330/3RBQKxmCMKKAS2rnN470OkQjcgpCcl7f1RBtduRerOrTe0eiPjHT3ctf+X9Jy/sOBc/BtFM20aRxIlFczujEndZIpo863nJy+LEOz77NOsOXOWjcdOoFsml7Zs4fyd2294B7iSWTKDIIR4DWgv89RfSilfyB/zl4AJfK/SeaSU3wa+DRDq2Li82w0tF1aYIZhhztqDGgqf5Twefv71r7Lu9Bk6L1wk7ffx0Z13XjdQeS2+eA5b9xSMAYDUdHIuN6Od62kevFJ1g1CpSlmTEJzO3D4GAUAILm/dwuWtW2o9kpqxZAZBSjlnpE0I8XXgaeAxKZd5XzlFVUjUefDFsyV1CLZg0fsi3yi2YXB+x/YFpRp6E1lsvfSWk7rBeHs3liuxkCHeFHO1dFzu7R4Vi09NtIyEEE8CfwZ8Vko5t6ax4rYhFXSR9ruYLQZqC8j4XEteiVwNbF2jUtcMVy7DpTsqtwxdKlJBd1nRQwlolqR5MIZrCftTK5YXtYoh/AfAA7wqHPfGe1LKb9VoLIrlghCMdYXwx7IEpp2evIl6j2MMqugG88Wy1E+k0HMWWa/BdLN/UQq4EvUe6iZTJXESzTQZ6W6pSZaRZWgVJalnhO98sSxjXUHSwdru0hRLT62yjDbU4n0VKwAhSNZ5auYiCk2kCI8nC24rPZHDm5xmtKuOzALbcppuRyK7ccRxDc24ZKZaAkTalrbLWyXcaROpgahQID6jqtt8Jc7AxuoaZkX1UfLXCkUeYcsiYwDOZKhJCpP4QkmEvYx0hch6dExDIxHyEA/Xrv7A1kTFPhmz0WynVkFxa7Mc0k4ViprjTuVoHK4sue3KWghbIheYl++LZ2kejBUyqoxYFn88y2hXCNvQkEJguqtXi5Dz6I7bKGdfV13WlTYxa9DLQVE91LeruO3xJnK0DETnVlkVC+8bgJQ0DcVLdiBCQlt/rHB+06Uz1hmszuQrBKNdIdr7oghLFjVeupabLZpUrBzUN6y47Wm4pjDrWmwgsQiB7ZldRjlmXFOadI5r741WPHaxMT0GA+sbmGgPzHlc1reymr0obhy1Q1DUFG88S8NYElfGwjI0oo1eYg3e6gUvbYmrgm98RlTPdOtMtc09Wc6HudRcZ+PsGiT+aIZEuEqy2pogGfaSSGQJxErFBVMBF7ahDMKtjjIIiprhi2VpvhIrrM4N0yY8lkTPWdXLupljjpbAZGuARNizKAbKdGlYLg2Rvb6/fmanUG0mO0JodgxvIlfQG8/4DcY7qyc3rqgdyiAoakbDaKmrRpMQimSINvmxjSp4NCVYukC3ZMmq2HJpi2YMAKfOYlWItr4oQspC5zIotUu2gGwNArhSE4x116FnLVw5C9OlVzXIragtyiAoaoOUGLnyye9SCNwZk7Sx9NXJdVMpNLt8C/rxjuCiu65yXoPB9WEC0xlcWQtb10qK1Wbag9ayOtty61jKENx2KIOgWFL0nE14NIE/7oioJYNuIm0BLF0gBWXTPIWUWNXYHQDBSKZsQFkKcGctsv7FV7qUuka88WrtQcbvonE4jj4r9VOT0HF5mrGukFqhK6qGyjJSLBnCsmm/HCEQyxYyaAKxLO2XIwhbEg97inSLwFkdm26dXJXcJXOKu1UpyycdcBFp9oG4Whk8E0No64vWVOlVcXuhdgiKJSOY78A1e84XOKJpwekMUy0BjJztBDDzWIbGaFf1ApjJoJtQJFPWZZQKVM9lUz+RLtmpONfKuT7V7IMsbEkwknb0pATE6zzEw97bplnO7YwyCIolw5vIlXXHaNLpjhZr9DHWVYeRsXBnTCxDI+MzqqqXM93sxx/LotmyMFZbQLzeg+mpnqvGMCuICUHFWMuSYEvaeqdxZa3C9XClk4QiabJeA2HZpANuknVulYZ6C6IMgmLJMF0aktIMGgmYs2IEpkev6uQ7G9vQGFoXJjSZxh/PYumCWIO36t3Zsh4db6q8zHTWq4OU6KbE1sWC5TPmIhDNFBkDcPzKrqyNK5tFAP6ESeNoklTAxcSqILauPM+3CsogKJaMeIOXYJm2mFI4zy0XbF1jusXPdEvtuoNFWvy09hfLZ9jC0RpypU1aB2KIvPstEXIz2R5cEsPgj5U2KAJK3H4AvkSO1r4ow2vqlQrqLYIyCIolI+cxmGwP0DicuDqLSJhoD1QtaDwXbX393Pnue9RNTTHV3MzxBx9gfFVHTcaS8bsY6wzROJJwXET5tNO0z6BxtFiB1R/LopsxRnvqFn0cUhNld3XlEIA7Y+FJmguWBlcsD2p/VypuaXJunVTAjTtjknPrTLX6q66YGZiexptMEWluKjRMX3vqNA/+6hUM03HT+KMxOvr6efOZzzC4fl1VxzdDOujmStCNsCRSA4Rg1YWpssV7nlQOI2MtuqstEXJX7LNciaahGFfWNaig8y2AMgiKJaNhKE4o3/lM4ARHvb3TDPfUk/PoFJaiS+Ru8MdifPxffkbD2Di2piGk5NiDezi1617uf+31gjEAx0+umSZ7XnmNn3zrD2vqApH61feuGFAW4Mqai24QLOPGPrcAdFMSiGVJ1KuOaisdZRAUS0JwMkloOlPqe7ahZTDmZPVYElsTRBu9RJt8izsJS8njP/ghocg02qw8/p1vvwvSSecshzeVxB+PkwwtD+0ey9DKZyBJRyZ70d/PpVcsGKzkStIAfyyjDMItgEoPUCw+UtIwlqrYq9fI2QXtIN2W1E+kCI8mF/X92/oG8MYTSE0j5Q9iac7k6TJNNh47XrEgTdiSnGv5+MOnm7xli/dyHp2cd/HXc5ZLJ+Nzca0JsvPvW+6qSfKd1xQrHrVDUCw6Rtaesy3jtVOHI2iXZrrZh1xICqOU1E2kqJtMo1s+3vutL4ImELYzvXVeOs2600fwJ5NMNzbSMDZWtHuwhWCku4ucd/lkQMXDXnTL+VwF9VHf0qqPjnUGaRmM4UmZhfdMhtxYuqBuKlNyvMyPU7HyUQZBsejYuphXlkoRAlw5m+wCDEJ4LEloKl/xKwTScP68ZX53MLh2K0ionxrkN599mie//wOMXA4jl8M0DDI+H/uf+tRNv/+SIATTzX6ijT6MvBie5Vrajb3UNUZ76jGyFnrOxvTo2Jqg66PJst+r1AWZJdB8UlQfZRAUi45taKT9LrzJ3LwNg5DFxWpFSIk/lnVW/qZN2m8w3ewvEn0TlrxqDCqOy8Xguq1c9K0h1hDmJ9/8V3Sfv0DdVIRIcyMD69cv2zaRUhNFLiIjk6X1yhVMl8HYqlVLMm7TfVX62pPMOTGeMq42zZKL0m9aUXuUQVAsCeOrgrT1RzEy1px9esHxT2c9OuGxJJotSYbcjvRzPshctPIHAtEs/liW4dX1hUnSyFkF98Zc2IbBSE9P4efeLZsX9DlrwZYPDnPvvrewNQ2QWIaLNz73DGOdq4oPlLMm6nkE7IVlOzUOliTjM4pkRGytvDEovJWyBbcEyiAolgTb0BhaU487laO9L1b2mJkgpWUIp8Ap7RgPXzxLaFJnpKcezZbUTaWLsl5E/sUNo8lCcZZlaNc1BuDECVay1EJ7by/37HurKGWWbI5P/ugn/Phbf1iIf/in0zSMJtEtiRSQqPcw2RooXysgJaHJNA1jVwP7Ujh9KYQtQXPqE2xdQ7sm40kCqaBLVSrfIqzcO0Ox/BGCrG9u3/J0kxM01eTVXYQmnQrYUCSNN5kru/oUgDd1VSXVNjTSgdLsmNnYQCzsXdGuje0HDuEySzWPhG2z9vRZAPzRDE3DCYx8JpcmITCdoeWKY5iFZROMpKkfS+KLZmjpj9Iwlizs5GZeo9nSqc+wITCdLWQTzWQ92cLRq5por1K7U8WSo3YIiqVFCBIhV9nG7TMTS7mcd02Sl8iurC9kX7MqHe8I0nV+quxOQeKIxEVaa6dXtBgEouV3Wy7TxB93nguPJctWN3sTOXzRDM3DcZDOdS/UBpY55+zHNADLZqItgAboOYus13BEANXu4JZB7RAUS85ke5CcRy/kstuArcHImnqul4+UDrgo1+DSFpCoc+OfzuCLZRxfua5hzpGBk74FJq+xzlUlhhAg53Ix0d4GVK5uFhKar8TRbAo7Mo356RZBXjIjYxEPe5luCZAKLWK/acWyQO0QFEuO1J14gjeZw522MF0ayaAbNEGyjpKewpDvSVDnTOBjXSFaB6JXV7XCSW0NRTKEIlfz4qdafCRDHozJVMkKWQqqLmm9FJzYcx9rzpxFy81qKqRpJENBBtavB5xro1ul26SFTt22AFOHQCSNP5ZFaoJ42EPar2IItwpqh6CoDkKQDriJ13uQQuDOmCAlOY/hPMZVT48tHFG8eIPTdzjjdzGwvpHJtgCRFj+RJh+aKYt83gJoGEthGU7QeHZ170zD+uwSVPZWm1hDA7/63S8y0tnpBOR1nctbNvPSl593Uk+ldALAFV6/oGlbQjCWo3EkgT+Rwx/L0jIQo2EksZCzKpYRK/8OUawMpKRhJEFoOuMEiaWTGTTRHiAQzSBxVicS5z+JkLsQ/NVzlqPTn+/WVT+WKLuSEUB4LMWVdfUEIxkCsSy2JoiFvSTrVv7uYIbJtjZ+9eUvXU0Dza/O3amc0zdByqIM3PkYgbkkr2fOk/VouGc1zxE4O7bgdIZ42LskUhqK6qK+QUVVCE6lC81yZtxDImfnJ7Crk9HMaj88kSIR9uJNZGkadlagQkLdZHrO9FLNliAE0WY/0eaVHUC+LrPcNMKyaeuPol2zNbheJu7MzmwuYzBjXDwZu3zwWTo9GqaVQVjxqG9QURXqJ8s3kUdWnoz8sSwNo4mi181kxsw1iZULut7q+GPZsrP/Qq+EuOb/Fbc2KoagqAqV5Kbnwp0u32N4VvO1IiROrOB2bNSim3bZ9F0oTvG99pDZKafzqOsrf37BLeWSu51RBkFRFbJzdEkrZypEvpiq0iRnaflqWq7+y3p0JtoDizDalUfWZ5Qt4JNAMugi2uDFFJXrDWb+yVmvux4zhibW4F0WLVEVC6em36IQ4k+BvwFapJTjtRyLYmmJtJZvIp/2uTBMCyNno8niQGglaSIJJOu9TLX68SZyGDmbnEcv0t653Uj7XeQ8Oq7M1aCvxDGakWY/TSMJ9HnM8oJ8VlbQaaVZacUocdKC4w3e61ajK1YONTMIQohu4HGgr1ZjUFSPjN/FaFcdDaMJ3BkLqQliYQ+RZj8IxwdeP5bElSsOXM4YhZnHbBy55el8h7X0LVBbsCgIwUhPPeHRBMFoBmFD2m8w1RrAnbVwp80bUp41rGmC0TTJQAj04mnCFhBp9hFrusWD9rchtdwh/C3wZ8ALNRyDoopkAi6G14addMlrVvLJOg/hvJ5OOUxDYGuCVNBNtNGHXUkq+zZGaoKp9iBT12gL1U+UFurNRc6t8ehP/xndtBjtXMvg2q2kAiFs3QBpMdkZVu0yb1FqYhCEEM8Ag1LKY+I6W3whxB8BfwTgqWupwugUS06F79zWNSgjuyAFTDf7VVeum0QKUTYrq1ydgi3AlZ0CQLctOvrP09F/vvB8IhTkx//DN5dyuIoasmQGQQjxGtBe5qm/BP4Cx110XaSU3wa+DRDq2HiziRCKFUC00UvTULzsajYRUq6hmyUe9uCPlQboHTkPF76E6fSSdutMtfnpunClYs9pVzZbhRErasWSGQQp5SfLPS6E2AGsBWZ2B13AYSHEfVLK4aUaj2L5kwy5cae91E2lndWrcP4z2hVaWK/l25yMzyAe9hCMXDUKhR4JbYGrndDyO7eR7u5CH+rZ2MBQd3cVR66oNlV3GUkpTwCtM78LIS4Du1SWkQIhiLQGiDb6nD4ImiDld92WdQWLihBMtQVJ1HvxRx0xwGTIXZwdNMuNF2sIc3HbVtaePlPovWALgelycfiRvVUduqK6qORhxbLDNjSSdSpoudhkvca8Bf7effJxxlZ1sO39w3jSaYZ7ujn2sQeINjYu8SgVtaTmBkFKuabWY1AoFNcgBOd33sn5nXfWeiSKKqIcswqFQqEAlEFQKBQKRR5lEBQKhUIBKIOgUCgUijzKICgUCoUCUAZBoVAoFHmUQVAoFAoFoAyCQqFQKPIog6BQKBQKQBkEhUKhUORRBkGhUCgUgDIICoVCocijDIJCoVAoAGUQFAqFQpFHGQSFQqFQAMogKBQKhSKPMggKhUKhAEBIKWs9hnkjhBgDems9jgo0A7d7X2h1DRzUdVDXAJbXNVgtpWy53kEryiAsZ4QQ70spd9V6HLVEXQMHdR3UNYCVeQ2Uy0ihUCgUgDIICoVCocijDMLi8e1aD2AZoK6Bg7oO6hrACrwGKoagUCgUCkDtEBQKhUKRRxkEhUKhUADKICwJQog/FUJIIURzrcdSbYQQfy2EOCOEOC6E+GchRLjWY6oWQognhRBnhRDnhRD/rtbjqTZCiG4hxBtCiFNCiJNCiD+p9ZhqhRBCF0IcEUL8otZjuRGUQVhkhBDdwONAX63HUiNeBbZLKe8EzgF/XuPxVAUhhA78R+BTwDbgeSHEttqOquqYwJ9KKbcBe4A/vg2vwQx/Apyu9SBuFGUQFp+/Bf4MuC2j9VLKV6SUZv7X94CuWo6nitwHnJdSXpRSZoEfAM/UeExVRUo5JKU8nP85hjMhdtZ2VNVHCNEFfBr4L7Uey42iDMIiIoR4BhiUUh6r9ViWCd8AXqr1IKpEJ9A/6/cBbsPJcAYhxBrgbuBAbUdSE/5PnEWhXeuB3ChGrQew0hBCvAa0l3nqL4G/wHEX3dLMdQ2klC/kj/lLHBfC96o5NkXtEUIEgZ8A/1ZKGa31eKqJEOJpYFRK+YEQ4uO1Hs+NogzCDSKl/GS5x4UQO4C1wDEhBDiuksNCiPuklMNVHOKSU+kazCCE+DrwNPCYvH0KXQaB7lm/d+Ufu60QQrhwjMH3pJQ/rfV4asDHgM8KIZ4CvECdEOK7Usqv1Hhc80IVpi0RQojLwC4p5XJRO6wKQogngX8PPCKlHKv1eKqFEMLACaI/hmMIDgG/K6U8WdOBVRHhrIT+GzAppfy3tR5PrcnvEP5nKeXTtR7LfFExBMVi8x+AEPCqEOKoEOI/1XpA1SAfSP83wMs4wdQf3k7GIM/HgK8Cj+a/+6P5lbJihaB2CAqFQqEA1A5BoVAoFHmUQVAoFAoFoAyCQqFQKPIog6BQKBQKQBkEhUKhUORRBkGhWCSEEL8SQkRWmsKlQjGDMggKxeLx1zh5+ArFikQZBIXiBhFC7M73e/AKIQJ57f/tUsrXgVitx6dQ3CxKy0ihuEGklIeEED8D/g/AB3xXSvlhjYelUCwYZRAUipvjf8fRK0oD/2ONx6JQLArKZaRQ3BxNQBBHt8lb47EoFIuCMggKxc3x/wH/K06/h7+q8VgUikVBuYwUihtECPF7QE5K+f18L+V3hBCPAv8bsAUICiEGgD+QUr5cy7EqFDeCUjtVKBQKBaBcRgqFQqHIowyCQqFQKABlEBQKhUKRRxkEhUKhUADKICgUCoUijzIICoVCoQCUQVAoFApFnv8fIqDak5LHOUYAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_decision_boundary(lambda x: plot_logistic(x), x.numpy(), y.numpy())\n", "plt.title('logistic regression')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以看到,logistic 回归并不能很好的区分开这个复杂的数据集,如果你还记得前面的内容,你就知道 logistic 回归是一个线性分类器,这个时候就该我们的神经网络登场了!" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# 定义两层神经网络的参数\n", "w1 = nn.Parameter(torch.randn(2, 4) * 0.01) # 隐藏层神经元个数 2\n", "b1 = nn.Parameter(torch.zeros(4))\n", "\n", "w2 = nn.Parameter(torch.randn(4, 1) * 0.01)\n", "b2 = nn.Parameter(torch.zeros(1))\n", "\n", "# 定义模型\n", "def two_network(x):\n", " x1 = torch.mm(x, w1) + b1\n", " x1 = F.tanh(x1) # 使用 PyTorch 自带的 tanh 激活函数\n", " x2 = torch.mm(x1, w2) + b2\n", " return x2\n", "\n", "optimizer = torch.optim.SGD([w1, w2, b1, b2], 1.)\n", "\n", "criterion = nn.BCEWithLogitsLoss()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/torch/nn/functional.py:995: UserWarning: nn.functional.tanh is deprecated. Use torch.tanh instead.\n", " warnings.warn(\"nn.functional.tanh is deprecated. Use torch.tanh instead.\")\n", "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/ipykernel_launcher.py:9: UserWarning: invalid index of a 0-dim tensor. This will be an error in PyTorch 0.5. Use tensor.item() to convert a 0-dim tensor to a Python number\n", " if __name__ == '__main__':\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "epoch: 1000, loss: 0.28478434681892395\n", "epoch: 2000, loss: 0.2721796929836273\n", "epoch: 3000, loss: 0.26508721709251404\n", "epoch: 4000, loss: 0.26026514172554016\n", "epoch: 5000, loss: 0.2568226456642151\n", "epoch: 6000, loss: 0.2542745769023895\n", "epoch: 7000, loss: 0.25232821702957153\n", "epoch: 8000, loss: 0.2508011758327484\n", "epoch: 9000, loss: 0.2495756596326828\n", "epoch: 10000, loss: 0.24857309460639954\n" ] } ], "source": [ "# 我们训练 10000 次\n", "for e in range(10000):\n", " out = two_network(Variable(x))\n", " loss = criterion(out, Variable(y))\n", " optimizer.zero_grad()\n", " loss.backward()\n", " optimizer.step()\n", " if (e + 1) % 1000 == 0:\n", " print('epoch: {}, loss: {}'.format(e+1, loss.data[0]))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def plot_network(x):\n", " x = Variable(torch.from_numpy(x).float())\n", " x1 = torch.mm(x, w1) + b1\n", " x1 = F.tanh(x1)\n", " x2 = torch.mm(x1, w2) + b2\n", " out = F.sigmoid(x2)\n", " out = (out > 0.5) * 1\n", " return out.data.numpy()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/torch/nn/functional.py:995: UserWarning: nn.functional.tanh is deprecated. Use torch.tanh instead.\n", " warnings.warn(\"nn.functional.tanh is deprecated. Use torch.tanh instead.\")\n", "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/torch/nn/functional.py:1006: UserWarning: nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.\n", " warnings.warn(\"nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.\")\n" ] }, { "data": { "text/plain": [ "Text(0.5, 1.0, '2 layer network')" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_decision_boundary(lambda x: plot_network(x), x.numpy(), y.numpy())\n", "plt.title('2 layer network')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以看到神经网络能够非常好地分类这个复杂的数据,和前面的 logistic 回归相比,神经网络因为有了激活函数的存在,成了一个非线性分类器,所以神经网络分类的边界更加复杂。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sequential 和 Module" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "我们讲了数据处理,模型构建,loss 函数设计等等内容,但是目前为止我们还没有准备好构建一个完整的机器学习系统,一个完整的机器学习系统需要我们不断地读写模型。在现实应用中,一般我们会将模型在本地进行训练,然后保存模型,接着我们会将模型部署到不同的地方进行应用,所以在这节课我们会教大家如何保存 PyTorch 的模型。\n", "\n", "首先我们会讲一下 PyTorch 中的模块,Sequential 和 Module。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "对于前面的线性回归模型、 Logistic回归模型和神经网络,我们在构建的时候定义了需要的参数。这对于比较小的模型是可行的,但是对于大的模型,比如100 层的神经网络,这个时候再去手动定义参数就显得非常麻烦,所以 PyTorch 提供了两个模块来帮助我们构建模型,一个是Sequential,一个是 Module。\n", "\n", "Sequential 允许我们构建序列化的模块,而 Module 是一种更加灵活的模型定义方式,我们下面分别用 Sequential 和 Module 来定义上面的神经网络。" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# Sequential\n", "seq_net = nn.Sequential(\n", " nn.Linear(2, 4), # PyTorch 中的线性层,wx + b\n", " nn.Tanh(),\n", " nn.Linear(4, 1)\n", ")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Linear(in_features=2, out_features=4, bias=True)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 序列模块可以通过索引访问每一层\n", "\n", "seq_net[0] # 第一层" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parameter containing:\n", "tensor([[-0.6538, 0.6585],\n", " [ 0.3440, 0.4386],\n", " [ 0.1757, 0.2476],\n", " [-0.1409, -0.2638]], requires_grad=True)\n" ] } ], "source": [ "# 打印出第一层的权重\n", "\n", "w0 = seq_net[0].weight\n", "print(w0)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "# 通过 parameters 可以取得模型的参数\n", "param = seq_net.parameters()\n", "\n", "# 定义优化器\n", "optim = torch.optim.SGD(param, 1.)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/ipykernel_launcher.py:9: UserWarning: invalid index of a 0-dim tensor. This will be an error in PyTorch 0.5. Use tensor.item() to convert a 0-dim tensor to a Python number\n", " if __name__ == '__main__':\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "epoch: 1000, loss: 0.28410840034484863\n", "epoch: 2000, loss: 0.2719648480415344\n", "epoch: 3000, loss: 0.2649618983268738\n", "epoch: 4000, loss: 0.2594653367996216\n", "epoch: 5000, loss: 0.23266130685806274\n", "epoch: 6000, loss: 0.2252696454524994\n", "epoch: 7000, loss: 0.2217651605606079\n", "epoch: 8000, loss: 0.2194037288427353\n", "epoch: 9000, loss: 0.2175876647233963\n", "epoch: 10000, loss: 0.2160961925983429\n" ] } ], "source": [ "# 我们训练 10000 次\n", "for e in range(10000):\n", " out = seq_net(Variable(x))\n", " loss = criterion(out, Variable(y))\n", " optim.zero_grad()\n", " loss.backward()\n", " optim.step()\n", " if (e + 1) % 1000 == 0:\n", " print('epoch: {}, loss: {}'.format(e+1, loss.data[0]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以看到,训练 10000 次 loss 比之前的更低,这是因为 PyTorch 自带的模块比我们写的更加稳定,同时也有一些初始化的问题在里面,关于参数初始化,我们会在后面的课程中讲到" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "def plot_seq(x):\n", " out = F.sigmoid(seq_net(Variable(torch.from_numpy(x).float()))).data.numpy()\n", " out = (out > 0.5) * 1\n", " return out" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/bushuhui/.virtualenv/dl/lib/python3.5/site-packages/torch/nn/functional.py:1006: UserWarning: nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.\n", " warnings.warn(\"nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.\")\n" ] }, { "data": { "text/plain": [ "Text(0.5, 1.0, 'sequential')" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_decision_boundary(lambda x: plot_seq(x), x.numpy(), y.numpy())\n", "plt.title('sequential')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "最后我们讲一讲如何保存模型,保存模型在 PyTorch 中有两种方式,一种是将模型结构和参数都保存在一起,一种是只将参数保存下来,下面我们一一介绍。" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "# 将参数和模型保存在一起\n", "torch.save(seq_net, 'save_seq_net.pth')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "上面就是保存模型的方式,`torch.save`里面有两个参数,第一个是要保存的模型,第二个参数是保存的路径,读取模型的方式也非常简单" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "# 读取保存的模型\n", "seq_net1 = torch.load('save_seq_net.pth')" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Sequential(\n", " (0): Linear(in_features=2, out_features=4, bias=True)\n", " (1): Tanh()\n", " (2): Linear(in_features=4, out_features=1, bias=True)\n", ")" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "seq_net1" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parameter containing:\n", "tensor([[-8.8738, 9.7847],\n", " [10.4652, 12.2881],\n", " [-9.4986, 2.9617],\n", " [ 0.1037, -9.5129]], requires_grad=True)\n" ] } ], "source": [ "print(seq_net1[0].weight)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "我们可以看到我们重新读入了模型,并且将其命名为 seq_net1,并且打印了第一层的参数\n", "\n", "下面我们看看第二种保存模型的方式,只保存参数而不保存模型结构" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# 保存模型参数\n", "torch.save(seq_net.state_dict(), 'save_seq_net_params.pth')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "通过上面的方式,我们保存了模型的参数,如果要重新读入模型的参数,首先我们需要重新定义一次模型,接着重新读入参数" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "seq_net2 = nn.Sequential(\n", " nn.Linear(2, 4),\n", " nn.Tanh(),\n", " nn.Linear(4, 1)\n", ")\n", "\n", "seq_net2.load_state_dict(torch.load('save_seq_net_params.pth'))" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Sequential(\n", " (0): Linear(in_features=2, out_features=4)\n", " (1): Tanh()\n", " (2): Linear(in_features=4, out_features=1)\n", ")" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "seq_net2" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parameter containing:\n", " -0.5532 -1.9916\n", " 0.0446 7.9446\n", " 10.3188 -12.9290\n", " 10.0688 11.7754\n", "[torch.FloatTensor of size 4x2]\n", "\n" ] } ], "source": [ "print(seq_net2[0].weight)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "通过这种方式我们也重新读入了相同的模型,打印第一层的参数对比,发现和前面的办法是一样" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "有这两种保存和读取模型的方法,我们推荐使用**第二种**,因为第二种可移植性更强" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "下面我们再用 Module 定义这个模型,下面是使用 Module 的模板\n", "\n", "```\n", "class 网络名字(nn.Module):\n", " def __init__(self, 一些定义的参数):\n", " super(网络名字, self).__init__()\n", " self.layer1 = nn.Linear(num_input, num_hidden)\n", " self.layer2 = nn.Sequential(...)\n", " ...\n", " \n", " 定义需要用的网络层\n", " \n", " def forward(self, x): # 定义前向传播\n", " x1 = self.layer1(x)\n", " x2 = self.layer2(x)\n", " x = x1 + x2\n", " ...\n", " return x\n", "```\n", "\n", "注意的是,Module 里面也可以使用 Sequential,同时 Module 非常灵活,具体体现在 forward 中,如何复杂的操作都能直观的在 forward 里面执行\n", "\n", "下面我们照着模板实现一下上面的神经网络" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class module_net(nn.Module):\n", " def __init__(self, num_input, num_hidden, num_output):\n", " super(module_net, self).__init__()\n", " self.layer1 = nn.Linear(num_input, num_hidden)\n", " \n", " self.layer2 = nn.Tanh()\n", " \n", " self.layer3 = nn.Linear(num_hidden, num_output)\n", " \n", " def forward(self, x):\n", " x = self.layer1(x)\n", " x = self.layer2(x)\n", " x = self.layer3(x)\n", " return x" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "mo_net = module_net(2, 4, 1)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Linear(in_features=2, out_features=4)\n" ] } ], "source": [ "# 访问模型中的某层可以直接通过名字\n", "\n", "# 第一层\n", "l1 = mo_net.layer1\n", "print(l1)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parameter containing:\n", " 0.1492 0.4150\n", " 0.3403 -0.4084\n", "-0.3114 -0.0584\n", " 0.5668 0.2063\n", "[torch.FloatTensor of size 4x2]\n", "\n" ] } ], "source": [ "# 打印出第一层的权重\n", "print(l1.weight)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# 定义优化器\n", "optim = torch.optim.SGD(mo_net.parameters(), 1.)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "epoch: 1000, loss: 0.2618132531642914\n", "epoch: 2000, loss: 0.2421271800994873\n", "epoch: 3000, loss: 0.23346386849880219\n", "epoch: 4000, loss: 0.22809192538261414\n", "epoch: 5000, loss: 0.224302738904953\n", "epoch: 6000, loss: 0.2214415818452835\n", "epoch: 7000, loss: 0.21918588876724243\n", "epoch: 8000, loss: 0.21736061573028564\n", "epoch: 9000, loss: 0.21585838496685028\n", "epoch: 10000, loss: 0.21460506319999695\n" ] } ], "source": [ "# 我们训练 10000 次\n", "for e in range(10000):\n", " out = mo_net(Variable(x))\n", " loss = criterion(out, Variable(y))\n", " optim.zero_grad()\n", " loss.backward()\n", " optim.step()\n", " if (e + 1) % 1000 == 0:\n", " print('epoch: {}, loss: {}'.format(e+1, loss.data[0]))" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# 保存模型\n", "torch.save(mo_net.state_dict(), 'module_net.pth')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以看到我们得到了相同的结果,而且使用 Sequential 和 Module 来定义模型更加方便\n", "\n", "在这一节中我们还是使用梯度下降法来优化参数,在神经网络中,这种优化方法有一个特别的名字,反向传播算法,下一次课我们会讲一讲什么是反向传播算法" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**小练习:改变网络的隐藏层神经元数目,或者试试定义一个 5 层甚至更深的模型,增加训练次数,改变学习率,看看结果会怎么样**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "下面举个例子" ] }, { "cell_type": "code", "execution_count": 103, "metadata": { "collapsed": true }, "outputs": [], "source": [ "net = nn.Sequential(\n", " nn.Linear(2, 10),\n", " nn.Tanh(),\n", " nn.Linear(10, 10),\n", " nn.Tanh(),\n", " nn.Linear(10, 10),\n", " nn.Tanh(),\n", " nn.Linear(10, 1)\n", ")\n", "\n", "optim = torch.optim.SGD(net.parameters(), 0.1)" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "epoch: 1000, loss: 0.3165791928768158\n", "epoch: 2000, loss: 0.25367119908332825\n", "epoch: 3000, loss: 0.22129501402378082\n", "epoch: 4000, loss: 0.20364265143871307\n", "epoch: 5000, loss: 0.19186729192733765\n", "epoch: 6000, loss: 0.18199527263641357\n", "epoch: 7000, loss: 0.173702672123909\n", "epoch: 8000, loss: 0.16727975010871887\n", "epoch: 9000, loss: 0.16238373517990112\n", "epoch: 10000, loss: 0.15855807065963745\n", "epoch: 11000, loss: 0.15542374551296234\n", "epoch: 12000, loss: 0.1527201235294342\n", "epoch: 13000, loss: 0.15030623972415924\n", "epoch: 14000, loss: 0.14812862873077393\n", "epoch: 15000, loss: 0.1461697667837143\n", "epoch: 16000, loss: 0.14440736174583435\n", "epoch: 17000, loss: 0.14280635118484497\n", "epoch: 18000, loss: 0.1413293182849884\n", "epoch: 19000, loss: 0.13908402621746063\n", "epoch: 20000, loss: 0.13768813014030457\n" ] } ], "source": [ "# 我们训练 20000 次\n", "for e in range(20000):\n", " out = net(Variable(x))\n", " loss = criterion(out, Variable(y))\n", " optim.zero_grad()\n", " loss.backward()\n", " optim.step()\n", " if (e + 1) % 1000 == 0:\n", " print('epoch: {}, loss: {}'.format(e+1, loss.data[0]))" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\noVAoGvz/dG9A+o7Owg0AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def plot_net(x):\n", " out = F.sigmoid(net(Variable(torch.from_numpy(x).float()))).data.numpy()\n", " out = (out > 0.5) * 1\n", " return out\n", "\n", "plot_decision_boundary(lambda x: plot_net(x), x.numpy(), y.numpy())\n", "plt.title('sequential')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.9" } }, "nbformat": 4, "nbformat_minor": 2 }