{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 深层神经网络\n", "\n", "前一节简要介绍了PyTorch的神经网络实现,同时示范了如何用神经网络构建一个复杂的非线性二分类器。针对图像分类的问题,下面用深度学习的入门级数据集 MNIST 手写体分类来说明深层神经网络的优良表现。\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. MNIST 数据集\n", "\n", "MNIS数据集是一个非常出名的数据集,基本上很多网络都将其作为一个测试的标准,其来自美国国家标准与技术研究所, National Institute of Standards and Technology (NIST)。 训练集 (training set) 由来自 250 个不同人手写的数字构成, 其中 50% 是高中学生, 50% 来自人口普查局 (the Census Bureau) 的工作人员,一共有 60000 张图片。 测试集(test set) 也是同样比例的手写数字数据,一共有 10000 张图片。\n", "\n", "每张图片大小是 28 x 28 的灰度图,如下\n", "\n", "![MNIS](imgs/MNIST.jpeg)\n", "\n", "任务就是给出一张图片,希望区别出其到底属于 0 到 9 这 10 个数字中的哪一个。\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. 多分类问题\n", "\n", "前面讲过二分类问题,现在处理的问题更加复杂,是一个 10 分类问题,统称为多分类问题,对于多分类问题, loss 函数使用一个更加复杂的函数,叫交叉熵。\n", "\n", "### 2.1 softmax\n", "提到交叉熵,先讲一下 softmax 函数,前面我们见过了 sigmoid 函数,如下\n", "\n", "$$s(x) = \\frac{1}{1 + e^{-x}}$$\n", "\n", "可以将任何一个值转换到 0 ~ 1 之间,当然对于一个二分类问题,这样就足够了,因为对于二分类问题,如果不属于第一类,那么必定属于第二类,所以只需要用一个值来表示其属于其中一类概率,但是对于多分类问题,这样并不行,需要知道其属于每一类的概率,这个时候就需要 softmax 函数了。\n", "\n", "softmax 函数示例如下\n", "\n", "![softmax](imgs/softmax.jpeg)\n", "\n", "对于网络的输出 $z_1, z_2, \\cdots z_k$,我们首先对他们每个都取指数变成 $e^{z_1}, e^{z_2}, \\cdots, e^{z_k}$,那么每一项都除以他们的求和,也就是\n", "\n", "$$\n", "z_i \\rightarrow \\frac{e^{z_i}}{\\sum_{j=1}^{k} e^{z_j}}\n", "$$\n", "\n", "如果对经过 softmax 函数的所有项求和就等于 1,所以他们每一项都分别表示属于其中某一类的概率。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2 交叉熵\n", "\n", "交叉熵衡量两个分布相似性的一种度量方式,前面讲的二分类问题的 loss 函数就是交叉熵的一种特殊情况,交叉熵的一般公式为\n", "\n", "$$\n", "cross\\_entropy(p, q) = E_{p}[-\\log q] = - \\frac{1}{m} \\sum_{x} p(x) \\log q(x)\n", "$$\n", "\n", "对于二分类问题我们可以写成\n", "\n", "$$\n", "-\\frac{1}{m} \\sum_{i=1}^m (y^{i} \\log sigmoid(x^{i}) + (1 - y^{i}) \\log (1 - sigmoid(x^{i}))\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.3 示例程序" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import torch\n", "from torchvision.datasets import mnist # 导入 pytorch 内置的 mnist 数据\n", "\n", "from torch import nn\n", "from torch.autograd import Variable" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# 使用内置函数下载 mnist 数据集\n", "train_set = mnist.MNIST('../data/mnist', train=True, download=True)\n", "test_set = mnist.MNIST('../data/mnist', train=False, download=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "我们可以看看其中的一个数据是什么样子的" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "a_data, a_label = train_set[0]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAABAElEQVR4nGNgGMyAWUhIqK5jvdSy/9/rGRgYGFhgEnJsVjYCwQwMDAxPJgV+vniQgYGBgREqZ7iXH8r6l/SV4dn7m8gmCt3++/fv37/Htn3/iMW+gDnZf/+e5WbQnoXNNXyMs/5GoQoxwVmf/n9kSGFiwAW49/11wynJoPzx4YIcRlyygR/+/i2XxCWru+vv32nSuGQFYv/83Y3b4p9/fzpAmSyoMnohpiwM1w5h06Q+5enfv39/bcMiJVF09+/fv39P+mFKiTtd/fv3799jgZiBJLT69t+/f/8eDuDEkDJf8+jv379/v7Ryo4qzMDAwMAQGMjBc3/y35wM2V1IfAABFF16Aa0wAOwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a_data" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a_label" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "这里的读入的数据是 PIL 库中的格式,我们可以非常方便地将其转换为 numpy array" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(28, 28)\n" ] } ], "source": [ "a_data = np.array(a_data, dtype='float32')\n", "print(a_data.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "这里我们可以看到这种图片的大小是 28 x 28" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3. 18.\n", " 18. 18. 126. 136. 175. 26. 166. 255. 247. 127. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 30. 36. 94. 154. 170. 253.\n", " 253. 253. 253. 253. 225. 172. 253. 242. 195. 64. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 49. 238. 253. 253. 253. 253. 253.\n", " 253. 253. 253. 251. 93. 82. 82. 56. 39. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 18. 219. 253. 253. 253. 253. 253.\n", " 198. 182. 247. 241. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 80. 156. 107. 253. 253. 205.\n", " 11. 0. 43. 154. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 14. 1. 154. 253. 90.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 139. 253. 190.\n", " 2. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 11. 190. 253.\n", " 70. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 35. 241.\n", " 225. 160. 108. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 81.\n", " 240. 253. 253. 119. 25. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 45. 186. 253. 253. 150. 27. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 16. 93. 252. 253. 187. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 249. 253. 249. 64. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 46. 130. 183. 253. 253. 207. 2. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 39. 148.\n", " 229. 253. 253. 253. 250. 182. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 24. 114. 221. 253.\n", " 253. 253. 253. 201. 78. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 23. 66. 213. 253. 253. 253.\n", " 253. 198. 81. 2. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 18. 171. 219. 253. 253. 253. 253. 195.\n", " 80. 9. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 55. 172. 226. 253. 253. 253. 253. 244. 133. 11.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 136. 253. 253. 253. 212. 135. 132. 16. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", " [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.\n", " 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]\n" ] } ], "source": [ "print(a_data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "我们可以将数组展示出来,里面的 0 就表示黑色,255 表示白色\n", "\n", "对于神经网络,我们第一层的输入就是 28 x 28 = 784,所以必须将得到的数据我们做一个变换,使用 reshape 将他们拉平成一个一维向量" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "def data_tf(x):\n", " x = np.array(x, dtype='float32') / 255\n", " x = (x - 0.5) / 0.5 # 标准化,这个技巧之后会讲到\n", " x = x.reshape((-1,)) # 拉平成一维向量\n", " x = torch.from_numpy(x)\n", " return x\n", "\n", "train_set = mnist.MNIST('../data/mnist', train=True, transform=data_tf, download=True) # 重新载入数据集,申明定义的数据变换\n", "test_set = mnist.MNIST('../data/mnist', train=False, transform=data_tf, download=True)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "torch.Size([784])\n", "5\n" ] } ], "source": [ "a, a_label = train_set[0]\n", "print(a.shape)\n", "print(a_label)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "from torch.utils.data import DataLoader\n", "\n", "# 使用 pytorch 自带的 DataLoader 定义一个数据迭代器\n", "train_data = DataLoader(train_set, batch_size=64, shuffle=True)\n", "test_data = DataLoader(test_set, batch_size=128, shuffle=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "使用这样的数据迭代器是非常有必要的,如果数据量太大,就无法一次将它们全部读入内存,所以需要使用 Python 迭代器,每次生成一个批次的数据" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "a, a_label = next(iter(train_data))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "torch.Size([64, 784])\n", "torch.Size([64])\n" ] } ], "source": [ "# 打印出一个批次的数据大小\n", "print(a.shape)\n", "print(a_label.shape)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# 使用 Sequential 定义 4 层神经网络\n", "net = nn.Sequential(\n", " nn.Linear(784, 400),\n", " nn.ReLU(),\n", " nn.Linear(400, 200),\n", " nn.ReLU(),\n", " nn.Linear(200, 100),\n", " nn.ReLU(),\n", " nn.Linear(100, 10)\n", ")" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Sequential(\n", " (0): Linear(in_features=784, out_features=400, bias=True)\n", " (1): ReLU()\n", " (2): Linear(in_features=400, out_features=200, bias=True)\n", " (3): ReLU()\n", " (4): Linear(in_features=200, out_features=100, bias=True)\n", " (5): ReLU()\n", " (6): Linear(in_features=100, out_features=10, bias=True)\n", ")" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "交叉熵在 pytorch 中已经内置了,交叉熵的数值稳定性更差,所以内置的函数已经帮我们解决了这个问题" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "# 定义 loss 函数\n", "criterion = nn.CrossEntropyLoss()\n", "optimizer = torch.optim.SGD(net.parameters(), 1e-1) # 使用随机梯度下降,学习率 0.1" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "epoch: 0, Train Loss: 0.515279, Train Acc: 0.833889, Eval Loss: 0.162182, Eval Acc: 0.949367\n", "epoch: 1, Train Loss: 0.164546, Train Acc: 0.948244, Eval Loss: 0.121298, Eval Acc: 0.962025\n", "epoch: 2, Train Loss: 0.116251, Train Acc: 0.963669, Eval Loss: 0.160981, Eval Acc: 0.951543\n", "epoch: 3, Train Loss: 0.091204, Train Acc: 0.971149, Eval Loss: 0.098640, Eval Acc: 0.970036\n", "epoch: 4, Train Loss: 0.075570, Train Acc: 0.975796, Eval Loss: 0.125001, Eval Acc: 0.960839\n", "epoch: 5, Train Loss: 0.058536, Train Acc: 0.981710, Eval Loss: 0.072245, Eval Acc: 0.975475\n", "epoch: 6, Train Loss: 0.052349, Train Acc: 0.982743, Eval Loss: 0.082497, Eval Acc: 0.974782\n", "epoch: 7, Train Loss: 0.051543, Train Acc: 0.984125, Eval Loss: 0.065229, Eval Acc: 0.979727\n", "epoch: 8, Train Loss: 0.039741, Train Acc: 0.987257, Eval Loss: 0.116367, Eval Acc: 0.964893\n", "epoch: 9, Train Loss: 0.033266, Train Acc: 0.989489, Eval Loss: 0.071046, Eval Acc: 0.978441\n", "epoch: 10, Train Loss: 0.029305, Train Acc: 0.990039, Eval Loss: 0.087192, Eval Acc: 0.975771\n", "epoch: 11, Train Loss: 0.026703, Train Acc: 0.991388, Eval Loss: 0.067075, Eval Acc: 0.980617\n", "epoch: 12, Train Loss: 0.021403, Train Acc: 0.992970, Eval Loss: 0.063208, Eval Acc: 0.982002\n", "epoch: 13, Train Loss: 0.238340, Train Acc: 0.962787, Eval Loss: 0.122586, Eval Acc: 0.962124\n", "epoch: 14, Train Loss: 0.070087, Train Acc: 0.977046, Eval Loss: 0.134682, Eval Acc: 0.961432\n", "epoch: 15, Train Loss: 0.049751, Train Acc: 0.983575, Eval Loss: 0.078269, Eval Acc: 0.977650\n", "epoch: 16, Train Loss: 0.040535, Train Acc: 0.986657, Eval Loss: 0.069318, Eval Acc: 0.980914\n", "epoch: 17, Train Loss: 0.033759, Train Acc: 0.988739, Eval Loss: 0.075110, Eval Acc: 0.979035\n", "epoch: 18, Train Loss: 0.028471, Train Acc: 0.990672, Eval Loss: 0.079602, Eval Acc: 0.977551\n", "epoch: 19, Train Loss: 0.027123, Train Acc: 0.991021, Eval Loss: 0.078461, Eval Acc: 0.979233\n" ] } ], "source": [ "# 开始训练\n", "losses = []\n", "acces = []\n", "eval_losses = []\n", "eval_acces = []\n", "\n", "for e in range(20):\n", " train_loss = 0\n", " train_acc = 0\n", " net.train()\n", " for im, label in train_data:\n", " im = Variable(im)\n", " label = Variable(label)\n", " # 前向传播\n", " out = net(im)\n", " loss = criterion(out, label)\n", " # 反向传播\n", " optimizer.zero_grad()\n", " loss.backward()\n", " optimizer.step()\n", " # 记录误差\n", " train_loss += loss.item()\n", " # 计算分类的准确率\n", " _, pred = out.max(1)\n", " num_correct = float((pred == label).sum().item())\n", " acc = num_correct / im.shape[0]\n", " train_acc += acc\n", " \n", " losses.append(train_loss / len(train_data))\n", " acces.append(train_acc / len(train_data))\n", " # 在测试集上检验效果\n", " eval_loss = 0\n", " eval_acc = 0\n", " net.eval() # 将模型改为预测模式\n", " for im, label in test_data:\n", " im = Variable(im)\n", " label = Variable(label)\n", " out = net(im)\n", " loss = criterion(out, label)\n", " # 记录误差\n", " eval_loss += loss.item()\n", " # 记录准确率\n", " _, pred = out.max(1)\n", " num_correct = float((pred == label).sum().item())\n", " acc = num_correct / im.shape[0]\n", " eval_acc += acc\n", " \n", " eval_losses.append(eval_loss / len(test_data))\n", " eval_acces.append(eval_acc / len(test_data))\n", " print('epoch: {}, Train Loss: {:.6f}, Train Acc: {:.6f}, Eval Loss: {:.6f}, Eval Acc: {:.6f}'\n", " .format(e, train_loss / len(train_data), train_acc / len(train_data), \n", " eval_loss / len(test_data), eval_acc / len(test_data)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "画出 loss 曲线和 准确率曲线" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "plt.title('train loss')\n", "plt.plot(np.arange(len(losses)), losses)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'train acc')" ] }, "execution_count": 19, "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.plot(np.arange(len(acces)), acces)\n", "plt.title('train acc')" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEICAYAAABWJCMKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAA/bUlEQVR4nO3deXic1Xn4/e+tfd9XW5IteZFsDHbAGINZTAjEkKZkbaFJoARCnAayNWkI7a/pe/VtS0gIJW9piElJIZCQpSHwSxw2ly3EBhuwjYQkS5Zla99sabRvc94/5hl5PB5JI2mWR5r7c126NPMsM2fG8tzznHOf+4gxBqWUUpEnKtwNUEopFR4aAJRSKkJpAFBKqQilAUAppSKUBgCllIpQGgCUUipCaQBQSqkIpQFARRQRaRSRDwTgcf5aRP4YiDYpFS4aAJRSKkJpAFARQ0R+CpQA/1dEBkTk76ztW0XkTyLSKyKHRGS7xzl/LSINItIvIsdE5FMisg54CLjYepzeaZ7vFhGpts5tEJHPe+2/XkQOiohDRI6KyA5re5aI/EREWkXklIj8Nhjvh1KipSBUJBGRRuA2Y8yL1v3lwGHgM8CzwFXAk0AFMAS0ARcaY2pFpBDIMsZUichfW49z6QzP9SGgBmgALgf+AFxqjHlbRLYALwCfAPYAhUCqMaZGRH4PDAA7rd+XGGNeCew7oRTEhLsBSoXZp4Hdxpjd1v0XROQAcB3wa8AJbBCRE8aYNlwBwS/GmN973H1FRJ4HLgPeBm4FHjHGvGDtbwGwgsy1QLYx5pT73Pm9NKVmpl1AKtKtAD5pdf/0Wt05lwKFxphB4C9xfRNvE5Hfi0iFvw8sIteKyD4ROWk97nVAjrW7GDjq47Ri4KTHh79SQaMBQEUa7z7PJuCnxpgMj59kY8w9AMaY54wxV+PqoqkBHp7mcc4gIvHA/wDfA/KNMRnAbkA8nneVj1ObgCwRyZjzK1NqjjQAqEjTAZR53H8c+LCIfFBEokUkQUS2i0iRiOSLyJ+LSDIwiqs/ftLjcYpEJG6a54kD4oEuYEJErgWu8dj/X8AtInKViESJyHIRqbC6mf4A/KeIZIpIrIhcHrBXr5QHDQAq0vwb8A9Wd8/XjTFNwPXA3bg+rJuAb+D6vxEF/C3QCpwErgD+xnqc/wWqgHYR6fZ+EmNMP/Al4JfAKeCvgGc89r8J3ALcD/Th6udfYe3+DDCO64qjE/hKYF66UmfSLCCllIpQegWglFIRSgOAUkpFKA0ASikVoTQAKKVUhFpUM4FzcnLMypUrw90MpZRaVN56661uY0yu9/ZFFQBWrlzJgQMHwt0MpZRaVETkuK/t2gWklFIRSgOAUkpFKA0ASikVoTQAKKVUhNIAoJRSEUoDgFJKRSgNAEopFaE0ACi1xB3tGuBXB5rQyr/K26KaCKaU8l/zqSF+sKeOX7/VjNPAOcvSWb8sLdzNUjaiAUCpJaarf5QHX6rnZ2+cAOCD5xTwh8p2Tpwc1ACgzqABQKklom9onF2vHeWRPzYyNunkkxcUcedVa0hNiLECwFC4m6hsRgOAUovc0NgEP3m9kR+9chTHyAQf3riMr35gDWW5KVPHZCTFagBQZ9EAoNQiNToxyc/fOMF/vHSU7oFRrqrI42vXrOWcZelnHVuSlcSJk8NhaKWyMw0ASi0yE5NOfvNOCw+8WEdL7zAXlWbxo8+czwUrsqY9pzgrifdaHSFspVoMNAAotUg4nYY/VLZz3wu1NHQNcl5ROvd8/FwuXZ2DiMx4bklWEs9XtTPpNERHzXzsUvNGQw//+HQVO7eX8ZFNy2d9ryKJBgClbM4Yw8tHuvjec7VUtTpYk5fCQ5++gA+ek+/3h1lJVhLjk4Z2xwjLMxKD3GL7aD41xBeeeJv+kXG++otDvFTTxT9/ZAPpibHhbpotaABQyuae3N/Et37zLsVZiXz/LzZy/ablc/4WX5KVBMCJnqGICQDDY5Pc/thbjE862f2ly3iuqp37X6zjreOnuP8vN7GldPous0jh10xgEdkhIrUiUi8id/nYnykiT4nIYRF5U0Q2eOz7qohUiUiliPxcRBKs7Vki8oKI1Fm/MwP3spRaGgZGJ7jv+VouXJnJnq9t52PnF82rC8cdAJoiJBPIGMM3fn2I6nYHP7jhfazJT+WO96/h1zsvJiZauGHXXr77XA3jk85wNzWsZg0AIhINPAhcC6wHbhSR9V6H3Q0cNMacB9wEPGCduxz4ErDZGLMBiAZusM65C9hjjFkD7LHuK6U8PPxqA90DY9x93TriYuZfuaUwPYHoKImYVNAfvnKU3x1u4+8+WMGVFXlT299XksnuL13GJy4o4sGXjvKJH/6JY92DYWxpePnzF7UFqDfGNBhjxoAngeu9jlmP60McY0wNsFJE8q19MUCiiMQASUCrtf164FHr9qPAR+b7IpRaijodIzz8WgPXnVvA+0oWdoEcEx3F8ozEiAgAL9V08t3navnwxmXsvKLsrP3J8THc+4mN/OenzqexZ4gP/eA1frH/RETWSvInACwHmjzuN1vbPB0CPgYgIluAFUCRMaYF+B5wAmgD+owxz1vn5Btj2gCs33n4ICK3i8gBETnQ1dXl36tSagn49z11jE04+cYHKwLyeK65AEs7ABztGuBLP3+HdQVp3Pvx82YcJL/u3EKe/cplbCrO4Jv/8y5fePxtTg2OhbC14edPAPD1DnqHynuATBE5CNwJvANMWP361wOlwDIgWUQ+PZcGGmN2GWM2G2M25+bmzuVUtUQcbu7l//y2Eqczcr6h1XcO8Iv9TXzqohJKc5ID8pjFWUlLegzAMTLO5x47QGxMFLtuuoDEuOhZzylMT+TxWy/i7usq2FPTwY4HXuX1+u4QtNYe/AkAzUCxx/0iTnfjAGCMcRhjbjHGbMI1BpALHAM+ABwzxnQZY8aB3wCXWKd1iEghgPW7cyEvRC1NTqfhW795l5/uO87xJfzh5e3eZ2tIjI3mzqvWBOwxS7KS6BkcY2B0ImCPaReTTsNXnjzIiZ4h/vNT51OUmeT3uVFRwu2Xr+Kpv9lGSnwMn/rxG/zr7mpGJyaD2GJ78CcA7AfWiEipiMThGsR9xvMAEcmw9gHcBrxqjHHg6vrZKiJJ4roWuwqoto57BrjZun0z8PTCXopain73bhtV1gzWmrbImMl6oPEkz7/XwecvLyMnJT5gj+uZCrrUfP+FWv63ppNvf3g9W8uy5/UYG5an87s7L+PTW0vY9WoDH33wT9R39ge4pfMTrPGJWQOAMWYCuAN4DteH9y+NMVUislNEdlqHrQOqRKQGV7bQl61z3wB+DbwNvGs93y7rnHuAq0WkDrjauq/UlLEJJ/c9X8uavBSiBKrb7fGfMZiMMfzr7mryUuO59bLSgD72VABYYldSvzvcyoMvHeWGC4v59NYVC3qsxLho/t+PnMuPb9pMu2OED/3gj/x0b2NYB4gPNJ7k+gdfD0rg9msimDFmN7Dba9tDHrf3Aj6vVY0x3wa+7WN7D64rAqV8+sX+ExzvGeKRv97Mv/y+mtr2pX8F8FxVO2+f6OWej51LUlxg52mWZC+9uQDvtTr4xq8Oc8GKTP6f688JWJmHD6zP59niy/j6rw7zf56u4qVa1wziUE6ic4yMc++zNTy+7wTLMxLpGhid+jcMFF0SUtnS0NgED+ypZ8vKLK4sz6OiMI2aJX4FMD7p5DvP1rI6L4VPXFAU8MdPT4wlPXHplIU+OTjG5x47QHpiLD/89PnEx8w+6DsXeakJ/PdfX8i3P7ye1+u7ef/3XubeZ2voHxkP6PP48mxlO1d//xV+9sYJPrutlOe/ejkXrAj8XFkNAMqWHvnjMboHRvnmtRWICBX5qRzvGWJwCQ5guj355gmOdQ9y144KYqKD819zqaSCjk86+Zsn3qJrYJQffeYC8lITgvI8UVHCLdtK+d+vb+e6cwv5z5ePcuX3XuaJN44zEYRZxB2OET7/0wPsfPwtspLjeepvtvGPH15PcnxwqvZoAFC2c2pwjB+90sDV6/OnvvVUFLqWMjzSsTSvAgZGJ3hgTx1bSrO4ap3PKTEBUbJEUkH/5ffV7Gs4yb999Fw2FmcE/fmWZyRy/19u4ukvbqMsJ4W/f6qS637wGq8cCczcJKfT8Pi+43zgvld4ubaLb+6o4Jk7tgX9tWkAULbz4Ev1DI5N8HcfLJ/aVlGQChCWbqDX67u5+vuvUBPEMYhdHiUfglmuuDgrieZTw0wu4jkVv9zfxH//qZFbLy3l40HoKpvJxuIMfvH5rTz06fMZnXBy8yNvctMjb1K7gL/Luo5+/uJHe/mH31ZyXnE6z33lcr6wfRWxQboK9KQBQNlKS+8wj+09zsfPL2JNfurU9uUZiaTEx4QlFXRPdSd1nQN86uE3gnIF0ukY4eFXG/jQuYVsCvI3vpKsJMYmnXQ4RoL6PMHy9olT/MNvK7l0dQ7fujYwM6TnSkTYsaGQF756Bf/woXUcPHGKax94lW/95l26+kf9fpzRiUnuf+EI1/3gNeq7BvjeJzfy+K0XsTJAE//8oQFA2cr9LxwBga9cvfaM7VFRQnlBaliuACpb+yjNSSY6Svirh/dRF+Ag8O976hifdPINjyueYFnMqaAdjhF2/vQtCtIT+I+/el/Qxkn8FRcTxW2XlfHKN67k5ktW8qsDTWz/7ks8+FI9I+MzTyLb33iS6x54jQf21HHduYW8+LUr+MQFRSFfrEYDgLKNIx39/ObtZm7ausJnup07AIQyJ9vpNLzX6uCyNTn8/PatiAg3PvwG9Z0DAXn8+s5+frG/iU9vXRGSb36LNQCMjE9y+0/fYmB0godv2kxGUtzsJ4VIZnIc3/7wOTz/1cu5ZHUO332ulvd/72WePthyVvmSvuFx7n7qXT750F5Gxp385JYLeeCG9wV0wt9caABQtnHvs7Ukx8XwxStX+9y/riCVvuFx2kPYfXH85BADoxNsWJbOqtwUfv65rQDc+PA+jnYtPAh859laV8mH9/t+zYFWmOEqC72YBoKNMfz9U5Ucaurl+3+xifKC1NlPCoOy3BQevmkzP//cVjKT4/jykwf56H++zv7Gkxhj+MO7bVz9/Vd48s0T3HZpKS987XKuLA/egL8/NAAoWzjQeJIXqzv4/BVlZCb7/nbnzgQKZTdQZUsfAOcsdz336rwUfv65izDGcOOufTQsIAjsbzzJC+91sPOKMrJD9A0wNjqKZRkJi+oKYG9DD//zdjNfev9qdmwoCHdzZnXxqmz+7x2Xct8nN9LhGOWTD+3lg//+Kl944m1yUuL57Re38Q9/tj7gE/3mQwOACjtjDN95tobc1Hg+e+n05Q/WWoPCNW0hDACtfcRFR7Em7/S3zjX5qfzsc1uZdBpufHjfvBYUcZd8yE+L59ZLz65ZH0yLbS6AOwjP9LdhN1FRwscvKOKlr2/na1evxWngrmsrePqObZxXlBHu5k3RAKDC7qXaTvY3nuJLV62Z8VtRemIsyzMSg5qO6a2qxUF5QepZq3GtzU/lic9dxPik60qgcY5B4NnKdt450cvXrl7rV9niQFpscwHqOgbISYm3Vb+/vxLjovnSVWt48WtXsPOK0KR2zoW9WqMizqTTcO+ztazMTuKGC4tnPb6iIHVBOddzYYyhsrWPDVb3z9ltSeOJ2y5idGKSGx/e53exrvFJJ/c+5ypy9/HzQ5vHDq65AN0DY4tmVnVd5wBr8lLC3YwlSQOACqunD7ZQ097P315T7te3o/KCVOo7BxibCP5i3i29w/QOjXPOsvRpj1lXmMYTt21leNwVBPz5Zj1V8uHa4JV8mMnUAvGn7H8VYIzhaOcAa/I1AASDBgAVNqMTk9z3/BE2LE/jQ+cW+nVORWEaE04TkAyc2VS2uLqaNiyfPgAArF+WxuO3XsTA6AQ37Jo5CAyMTvDvL9ZxUWkW768ITwaIOwAcXwTrAnQ4RukfndArgCDRAKDC5ol9J2jpHeabOyqIivJvAoy7JEQouoGqWvuIjpKp55zJhuXpPHHbRfSPjHPjw/to6R32edyuV47SMzjGt4Jc8mEmU1cAi2AcoM5akGWVBoCg0ACgwqJ/ZJz/eKmebauzuWyN/2s9l+YkExcdRXUIBoIrW/pYk5dCQqx/g7SuILCVvuFxbti1l1avINDpGOHh147xofOCX/JhJumJsaQmxCyKTKC6DteVnmcWlgocDQAqLB5+7RgnB8f45o651XOJjY5idV5KSK4AKlsdM/b/+3JuUTqP33oRvYOuK4G2vtNB4P4X65hwOs8ochcOIrJoUkHruwbISIolJ2XxZQAtBhoAVMh19Y/y49dcxc/mkxNdUZAa9LkAnY4RuvpHp80AmsnG4gweu3ULJwfGuHHXPtr7RqySDyf41EUrWJEdumJf01mRvUgCQIcrAyhc3WVLnQYAFXL/8b91jE44+dtr1s5+sA8Vham0O0boHRoLcMtOq2x1TT6abQB4Ou8ryeS/P7uF7oExbnx4H99+poqkuJiQlXyYTXFWEs0nh8+qVWMnxhiOdPazWvv/g0YDgAqpEz1D/OzNE/zlhcWU5c7vP3ZFQfBLQlS2OBBxpXnO1wUrMnn0sxfS6Rjh9foevrB9VchKPsxmqix0v33LQvcMjtE7NM5q7f8PGg0AKqTue6GW6Cjhy1etmfdjTC0OE8S1ASpbXCWgUxa4FN8FK7J47NaL+NRFJXx2m31KGUxVBbVxKqi74qqmgAaPXwFARHaISK2I1IvIXT72Z4rIUyJyWETeFJEN1vZyETno8eMQka9Y+/5JRFo89l0X0FemAuZ3h1vZ8i8v8vmfHuCxvY0c7RqYV0nmqtY+nj7Yyi3bSslPm/8arrmp8WQlxwX1CqCq1cGGOQ4AT+eCFZn8y0fPDXnJh5kshrLQde4AoJPAgmbWrzciEg08CFwNNAP7ReQZY8x7HofdDRw0xnxURCqs468yxtQCmzwepwV4yuO8+40x3wvIK1FB8781nfSPTFDZ4uC5qg4ACtISuGR1NttW5bBtdQ4F6bN/oH/3uVrSE2PZecWqBbVHRCjPD97iMCcHx2jpHebmS1YE5fHtYFlGIlFi77kA9R39pMTHULCALwtqZv5c324B6o0xDQAi8iRwPeAZANYD/wZgjKkRkZUikm+M6fA45irgqDHmeGCarkKlpq2fLaVZ/PctF3Li5BCv1/fw+tFuXq7t4jdvtwBQlptsBYNstpZln1W4a19DDy/XdvGtaytIT4xdcJsqClN58s0mnE7j9yQyf1W5B4ADdAVgR66y0Im2vwJYpRlAQeVPAFgONHncbwYu8jrmEPAx4I8isgVYARQBngHgBuDnXufdISI3AQeAvzXGnJpD21UIjE86qe8c4LK1OYgIK7KTWZGdzF9dVILTaahp7+dPR7t5vb6b/3m7mZ/uO46I68PTfYWweWUm9/yhhsL0BG6+ZGVA2rWuII3h8UlOnBwK+Epa7hIQc50DsNjYfS5AfecAl6/1f5Kgmjt/AoCv8OvdAXwP8ICIHATeBd4BpkoNikgc8OfAtzzO+SHwz9Zj/TNwH/DZs55c5HbgdoCSkhI/mqsCqaFrkLFJJ+t9ZMNERQnrl6Wxflkat11Wxvikk0NNvVNXCI/88Rg/eqWBmChhwmn4zsfP9XtW7Wzcq0LVtPcHPgC09lGclUh60sKvVOysJCuJF6s7w90Mn/qGxunsH9UB4CDzJwA0A551eouAVs8DjDEO4BYAcV2vHbN+3K4F3vbsEvK8LSIPA7/z9eTGmF3ALoDNmzfbN2l5iXLX3nenXs4kNjqKzSuz2Lwyiy9/YA1DYxPsbzzFn+q7GRidCGjp47X5qYi42hfoVaKqWvqWdPePm6ss9ChDYxO2WJ3KU32Xa3xH5wAElz//6vuBNSJSimsQ9wbgrzwPEJEMYMgYMwbcBrxqBQW3G/Hq/hGRQmNMm3X3o0DlvF6BCqr32hzERgtluXP/lp0UF8MVa3O5IgiX8Ylx0ZRmJwd8RrBjZJzGniE+uXn2tQkWu9NF4YZtt86u1gAKjVkDgDFmQkTuAJ4DooFHjDFVIrLT2v8QsA54TEQmcQ0O3+o+X0SScGUQfd7roe8VkU24uoAafexXNlDT1s/qvFTbrWQErm6gQGcCvdfq7v+f/wSwxcIzFdRuAaC+c4CE2CiWZyaGuylLml/XfcaY3cBur20PedzeC/ic2WOMGQKyfWz/zJxaqsKipt3BttU54W6GTxUFaTxb1R7QLoypReAjoAvo9LoAc1/TONjqOgdYlZtCdIAzvNSZ7Pe1TtnGycExOhyjrPOj/z8cKgpTMQaOdARucZiqVgf5afHkptqjZEMwZSTFkhofY8u5APWdA9r/HwIaANS03KUWKgrt1T3gdnpxmMCVhKiMkAFgcE2oK7ZhKujg6AQtvcOaARQCGgDUtKqt/nV/MoDCoTgziaS4aKoDNBA8NDbB0a4BzplnBdDFyI5zAdzLfWoRuODTAKCmVdPmICfFvt0hUVHC2vzUqVTVhapu68dpYEMEDAC7lWQn0XTKXmWhpzKAtAZQ0GkAUNOqae9nnU27f9zWFaZS294/r+J03t5b4BoAi1FxVhJjE046+0fD3ZQpdZ0DxEYLK6xBahU8GgCUTxOTTmo7+v1aED2cKgrSOGXNGl2oyhYHWclxFPpR2G6pWGHDqqD1nf2U5iQTY8PU46VG32HlU2PPIGMTTtv2/7t5loRYqMrWPs5ZlhZRxcfsWBa6vnNAJ4CFiAYA5ZN7YHUhK2KFQqAWhxmdmORIR39Edf/A6bLQdgkAI1aBP00BDQ0NAMqnmnYHMVHCqrzwL2A+k4wkV5fNQq8A6joGGJ80EZMC6hYXE0VheqJt5gI0dA3iNFoDKFQ0ACifqtv6WZWbQnyMfVaxmk4gSkK4ZwBvWG7vK55gsFMqaF2n699RM4BCQwOA8qmmzWHbCWDeKgrSqO/sZ3zSOe/HqGztIzUhZqpPPJLYKQAc7RwgSqA0wCW+lW8aANRZ+obGae0bsX3/v1tFQSrjk4aGrvnXtKlscUTcALBbSXYSXf2jDI9Nhrsp1HUOsDI7eVFceS4FGgDUWU6vAbBIrgAK3ZlA8xsInph0Ut0WuEXgF5tid1noU+G/CnAvA6lCQwOAOku1lVGzWK4AynJSiI2WeY8DHO0aZHTCGXEZQG5TqaA94Q0A45NOGrsHtQZQCGkAUGepae8nMymWPJuWgPAWFxPFqtyUeaeCRvIAMNhnLsDxnkEmnEYHgENIA4A6S3V7P+sKF1d/eEWBqyTEfFS29pEYG01pTmR+8GQmxZISHxP2AKCrgIWeBgB1hkmn4Uh7v+1nAHurKEyjtW+EvqHxOZ9b1eJg/bK0iF18xC5loes6XQFgPsuPqvnRAKDOcLxnkOHxyUWTAup2uiTE3LqBnE5DVWtfRFUA9aUkK9EWAaAoM9F2C9QvZRoA1BncA6l2XQVsOu721nbMrRuosWeQwbHJiFoDwJeSrCSaTg6FtSy0qwZQZHbDhYsGAHWGmjYHUbL4ZmLmp8WTkRQ758VhKq1F4CM1BdStJCuJ0QknXQPhKQs96TQc7RpgTf7iuvJc7DQAqDO819ZPWW4KCbGLayKOiFA+j8Vhqlr6iIuOWnQBL9CKw5wJ1HRyiLEJJ6tzI/vfIdQ0AKgz1LQ7Fs0EMG/rCtM40t4/p26MytY+KgpTiY3w2vPhngvgHgBeHeGBONT8+qsXkR0iUisi9SJyl4/9mSLylIgcFpE3RWSDtb1cRA56/DhE5CvWviwReUFE6qzfmQF9ZWrOHCPjNJ8aXjQTwLyVF6QyODZJ86lhv443xlglICK7+wdgeWYiEsay0PXuAKBjACE1awAQkWjgQeBaYD1wo4is9zrsbuCgMeY84CbgAQBjTK0xZpMxZhNwATAEPGWdcxewxxizBthj3VdhdMQ9ALzIMoDcKuaYCdR8api+4fGInQDmKT4mmmVhLAtd19lPQVoCaQmxYXn+SOXPFcAWoN4Y02CMGQOeBK73OmY9rg9xjDE1wEoRyfc65irgqDHmuHX/euBR6/ajwEfm3vzI8OSbJ7jm/leYWEC1S3+4S0AstjkAbmvzUxHxf3WwKvcawHoFAEBxGFNB6zsH9Nt/GPgTAJYDTR73m61tng4BHwMQkS3ACqDI65gbgJ973M83xrQBWL/zfD25iNwuIgdE5EBXV5cfzV169jb0cKRjgEPNvUF9nur2ftISYhbtmrjJ8a5yzv5eAVS2OIiOkqk5BJEuXGWhnU6jASBM/AkAvqZHeo+y3QNkishB4E7gHWBi6gFE4oA/B3411wYaY3YZYzYbYzbn5ubO9fQlobHbVeb4pZrgBkDXGgCLqwSEt4o5LA5T2drHmrzFl/EULCVZSXSGoSx0m2OEobHJiM/ECgd/AkAzUOxxvwho9TzAGOMwxtxi9fXfBOQCxzwOuRZ42xjT4bGtQ0QKAazfnXNvfmRotDIzXj4SvLfI6TTUtvezfpEOALtVFKTR2D0464eYawC4L2IrgPriTgVtDnFZ6Dpr8p7WAAo9fwLAfmCNiJRa3+RvAJ7xPEBEMqx9ALcBrxpjPK/Db+TM7h+sx7jZun0z8PRcGx8JTg2O0Tc8Tn5aPJUtDjodI0F5nqZTQwyOTS7aFFC3ioJUnOb00oLT6ewfpXtgLOJLQHgKV1VQzQAKn1kDgDFmArgDeA6oBn5pjKkSkZ0istM6bB1QJSI1uL7tf9l9vogkAVcDv/F66HuAq0Wkztp/z0JfzFJ0rMfV/fPpi1YA8PKR4HQDuWfQViz2KwCr/bN1A50uAa1XAG7hCgB1HQNkJ8eRlRw3+8EqoPyqumSM2Q3s9tr2kMftvcCaac4dArJ9bO/BlRmkZnDcCgDXnlvA428c55XaLv5ic/EsZ81dTbsDEShf5FPxS7KSSIyNpmaWkhCVLa7Xu1jnPARDVnIcyXHRob8C6NIB4HCJ7OmPi8Cx7iGixNU/u31tHq/WdS1o8fPp1LT1U5qdTGLc4h4QjY4S1uanzJoJVNnaR2lOMsnxWnnSzV0WOpRzAYwx1HX06wBwmGgAsLnjPYMsy0gkPiaaKyty6R+Z4O3jpwL+PNXtjkVXAno6FQVp1LT3Y8z0JSGqWvo0/9+HkqwkjoewHERX/yiOkQmtARQmGgBsrrF7kNIc1wIZ21bnEBMlAR8HGByd4HjP0KKdAOatvCCVk4Nj01a27BkYpbVvRGcA++CeCzBT8Awk9wCwVgENDw0ANmaM4Vj3ICuyXYNzqQmxbF6ZyUs1gU0HddfQXyr94e4rmenGAaq0BPS0SrKtstD9oSkL7S4Cp+sAhIcGABvrHRrHMTLByuzTS+RdWZ5HTXs/7X2BSwd1f1Au9hRQN/eVzHRrBFdaJSC0CNzZQl0Wuq7TNfs8NzU+JM+nzqQBwMbcKaDuLiCA7eWuihkv1wbuKqC6zUFKfAxFmYkBe8xwykqOIy81nuppBoKrWhwUZyWSnqSFx7yFOhW0rsOVAbSYZ58vZhoAbMydArrC4wpgbX4Ky9ITeCmAAcC9BsBS+k9YUZg2bRdQZasOAE9neUZoy0If7RrQGcBhpAHAxk6ngJ7+Zi4iXFGex+v1PYxNLDwd1BhDTVv/kun/d1tXkEp958BZFVT7hsc53jOkE8CmkRAbTUFaQkgCwMnBMboHxjQFNIw0ANhYY/fpFFBPV5bnMjA6wYHjJxf8HC29w/SPTiyZFFC38oJUxiadHLMK6bm9Zw0An6MlIKYVqrkAWgIi/DQA2NjxnsEz+v/dtq3OITZaeKV24emgUyUglkgKqJv79VR7DQRX6QDwrEJVFtpdr0kDQPhoALApdwqoZwaQW3J8DFtKswIyDlBjLQKz1Grir8pLJjpKqPUaCK5s6aMgLUGzTmawIiuJDscoI+PBLQtd3zlAUpxrJTIVHhoAbOqUlQLqngPg7cryPI50DNDS69/6t9Opae9nRXYSKUusJEJ8TDSrcpPPGgiuanXoBLBZlGSHpiy0exGYqKilk3yw2GgAsKlGHymgnraXuxbHWWg6aHWbY8nk/3tzl4RwGxqb4GjXgHb/zCJUcwHcKaAqfDQA2JR7FbAVPrqAAFblplCUmbigVcKGxyY51jO45Pr/3coLUmnpHcYxMg64xjucRktAz2ZqLkAQawI5RsZpd4xoAAgzDQA21djjSgF1/2f0JiJcWZ7Hn452Mzoxv77aIx39GAPrllgGkJv7dblnBE8tAq9dQDPKTo4jKS6aEycX1r04k6NTJSCW5t/eYqEBwKYauwdZnplIXMz0/0Tby3MZGptk/7H5VQd1l0xeanMA3NxXNu5uoMqWPrKT4yhIW5yL3oeKiAQ9E0hrANmDBgCbauzxnQHk6eJV2cTFRM07G6i6rZ+kuGiKM31fZSx2hekJpCbETGU6VbY4OGd5+pKa8RwswZ4LUN85QFxM1NR4gwoPDQA2NFMKqKekuBguKs2a90BwdZuD8oLUJZuFISKsswaCRycmOdLRr2sA+ynYZaHrOvopy3Gl6qrw0QBgQ6eGxumfIQXU05XleRztGpzzgJ0xhpr2/iU7AOxWUZhKbXs/te39TDiNDgD7qSQrieHxyWnXVFio+q4BXQPABjQA2NBsKaCerqywqoMemdtVQLtjhL7hcdYv0QFgt/KCVAZGJ3iuqh3QNQD85U4+CEY30NDYBM2nhrX/3wY0ANiQOwV0pR8BoDQnmRXZSbw8x7IQ1Va/eMUSHQB2c1/h/ObtFlITYs4orKemF8y5AA1dgxijA8B24FcAEJEdIlIrIvUicpeP/Zki8pSIHBaRN0Vkg8e+DBH5tYjUiEi1iFxsbf8nEWkRkYPWz3WBe1mLW2P3oKsKqJ+Ds+500LlM3XfXAFpqJSC8uV9fW98IG5bpALC/3GtDnOgJfCqo1gCyj1kDgIhEAw8C1wLrgRtFZL3XYXcDB40x5wE3AQ947HsAeNYYUwFsBKo99t1vjNlk/exewOtYUhp7hmZNAfV0RXkuI+NO9jX0+P0cNe39LM9IJC1haS+KkhJ/+lu/5v/7L5hloes7B4iJkmknOarQ8ecTZgtQb4xpMMaMAU8C13sdsx7YA2CMqQFWiki+iKQBlwP/Ze0bM8b0BqrxS5U/KaCeLi7LJj4mak7dQDVtjiWb/+/N3Q2kA8BzUxKkVNC6jgFW5iT7/QVHBY8//wLLgSaP+83WNk+HgI8BiMgWYAVQBJQBXcBPROQdEfmxiHh+st1hdRs9IiKZvp5cRG4XkQMicqCra+Hlj+3O3xRQTwmx0VyyKtvvdNCR8UkaugeX7Axgb+5aR1oDaG6KgzQZrL5zQPv/bcKfAOCr09Q7OfgeIFNEDgJ3Au8AE0AMcD7wQ2PM+4BBwD2G8ENgFbAJaAPu8/XkxphdxpjNxpjNubm5fjR3cXOngPozAOxpe3kejT1DZy2A4kt95wCTTrPkU0Dd/vLCYr65o4JVudrlMBclWUm0O0YCWhZ6dGKSxp5B7f+3CX8CQDNQ7HG/CGj1PMAY4zDG3GKM2YRrDCAXOGad22yMecM69Ne4AgLGmA5jzKQxxgk8jKurKeK5P8BX+jEHwNOVc1gs/nQGUGRcARRlJvGF7at0AHiOSrJdYyfNpwI3ENzYPYTT6ACwXfgTAPYDa0SkVETigBuAZzwPsDJ94qy7twGvWkGhHWgSkXJr31XAe9Y5hR4P8VGgcgGvY8lwLwQ/1yuAkuwkynKTecmPcYCa9n4SYqPm1M2kIk8w5gK4M4C0CJw9zLoKiDFmQkTuAJ4DooFHjDFVIrLT2v8QsA54TEQmcX3A3+rxEHcCT1gBogG4xdp+r4hswtWd1Ah8PiCvaJGbawqop+1r83j8jeMMj02SGBc97XHVbQ7K81N1Gr6aUUmW6wtCIMcB6joGiBIo0+44W/BrGSgrRXO317aHPG7vBdZMc+5BYLOP7Z+ZS0MjxbE5poB6urIil0deP8behm7eX5Hv8xhjDNVtDq5ZX7DQpqolLicljsTY6IAGgPrOAYqzkkiInf4LigodzcOymeNzTAH1tKU0i8TY6BkXienqH+XU0HjE9P+r+QtGWWjNALIXDQA2Mp8UUE/xMdFsW53NS7Wd01ZxfK9taa8BoAIrkGWhJyadNHQPsFr7/21DA4CNzDcF1NP28jyaTw1ztMt3Oqh7cZSlug6wCqxAloU+fnKI8UmjVwA2ogHARtwpoKU5818kY7bF4mvaHBSmJ5CRFOdzv1KeSrISGRqbpGdwbMGPVdfhWgVMU0DtQwOAjcy2ELw/ijKTWJOXMm1ZCNcaAPrtX/mnxJqPcjwAC8Qf7XIFgFUaAGxDA4CNHO+Zfwqop+3lubx57CSDoxNnbB+dmKS+c0D7/5XfAjkXoK7DVYAwJd6v5EMVAhoAbGQhKaCerizPY2zSyZ+Onlkd9GjnIBNOs+TXAFCBU5QZuHUB6joHtPvHZjQA2MhCUkA9bV6ZRXJc9FmLxde0WxlA2gWk/JQQG01+WvyCA4DTaTjapQHAbjQA2IQ7BdSfZSBnExcTxbbVObxS23VG9kZNez9xMVEBeQ4VOQIxF6Cld5iRcadmANmMBgCbODk4Zi0EH5gP5ysr8mjpHaauc2BqW3Wbg7X5KcRE6z+78l8g5gJM1QDK1wBgJ/pJYBONVpbFQlJAPbnTQV+qOd0NVN3WHzEloFXgBKIs9FQKaK52P9qJBgA/HO8ZZE91R1CfY2oh+ABdARSmJ1JRkDqVDtrVP0r3wKimgKo5K81Jxhi49oHX+Pun3mX3u22cmuO8gLrOAXJT40lPWtpLkC42mo/lhwderOOZQ60c+vY1JAcphc2dAlq0wBRQT9vL8/jxaw30j4xTa80AXq8ZQGqOPnhOAf/4Z+v5Y303v32nhSfeOIGI629p2+ocLlmVzZbSLJLipv+/oTWA7EkDgB8ONvcy4TQcOH6KK9YGZ1WyYz1DFGUmBXSd1O3luTz0ylFer++m6aRrUY9yvQJQc5QQG81nLy3ls5eWMj7p5HBzL6/X9/B6fTc/ef0Yu15tIDZaeF9xJpeszmbb6hw2FWcQa401GWOo7xzg4+d7rySrwk0DwCz6hsdpsOrq7GvoCVoAaOweZMUcVwGbzQUrMkmNj+Hl2i7GJp3kpcaTnRIf0OdQkSU2OooLVmRxwYosvnTVGobHJtnfeJLXj3bzp/oeHthTx7+/WEdSXDRbSrPYtiqHNfkpDIxOsDpfv3zYjQaAWVS29AGQEBvFXq+JVYFijKGxZ5CPlgT2G1JsdBSXrc3h5douMpPjdAKYCrjEuGguX5vL5dYXo96hMfY19LiuEI5283Jt9dSxq3O1C8huNADM4mBTLwCfvKCYn715goHRiYBPZXengAZjicbta/PY/W477Y4RLl9bFvDHV8pTRlIcOzYUsmODa8XXtr5h/lTfQ/OpYTavzAxz65Q3zQKaxeHmXlZmJ7FjQwGTTsP+xpMBf47GqXWAA9sFBHBF+ekuq3WaAqpCrDA9kY9fUMSXP7BmakxA2Yf+i8ziUFMf5xVlcH5JJnHRUewLQjdQY7drDkAwrgDy0xKmMn90FTCllCcNADPocIzQ7hhhY3EGiXHRbCrOYF9DEAJAEFJAPV13bgEZSbGU5WgfrFLqNA0AMzhk9f9vLEoHYOuqbN5t6cMxMh7Q52kMQgqop51XrOKVr18ZtMdXSi1Ofn0iiMgOEakVkXoRucvH/kwReUpEDovImyKywWNfhoj8WkRqRKRaRC62tmeJyAsiUmf9tt0I0eHmPqKjhHOWWQGgLAungf3HAjsO0Ng9uKBlIGcTEx2lMzCVUmeZNQCISDTwIHAtsB64UUTWex12N3DQGHMecBPwgMe+B4BnjTEVwEbAnRd2F7DHGLMG2GPdt5VDzb2szU8lMS4awDUOEBMV0G4gY4wrAAR4DoBSSs3GnyuALUC9MabBGDMGPAlc73XMelwf4hhjaoCVIpIvImnA5cB/WfvGjDG91jnXA49atx8FPrKA1xFwxhgONfWyqTh9altCbDTnl2SwN4AB4OTgGP2jwUkBVUqpmfgTAJYDTR73m61tng4BHwMQkS3ACqAIKAO6gJ+IyDsi8mMRcX/S5Rtj2gCs33nzfhVB0NgzhGNkgvOKMs7YvrUsm6pWB33DgRkHCGYKqFJKzcSfACA+thmv+/cAmSJyELgTeAeYwDXR7Hzgh8aY9wGDzLGrR0RuF5EDInKgq8v3QufBcLi5F4CNXgHg4rJsjIE3AzQOEMwUUKWUmok/AaAZKPa4XwS0eh5gjHEYY24xxmzCNQaQCxyzzm02xrxhHfprXAEBoENECgGs32euX3j6sXcZYzYbYzbn5ganDo8vh5r6SIiNYq3XAhabSjKIjwlcWYjGnkGioyRoKaBKKTUdfwLAfmCNiJSKSBxwA/CM5wFWpk+cdfc24FUrKLQDTSJSbu27CnjPuv0McLN1+2bg6QW8joA71NzLhmXpZ62eFR8TzQUrMgM2EHyse5DlGQtfCF4ppeZq1k8dY8wEcAfwHK4Mnl8aY6pEZKeI7LQOWwdUiUgNrmyhL3s8xJ3AEyJyGNgE/Ku1/R7gahGpA6627tvC+KSTqta+s/r/3S4uy6a63UHv0NwWxfDleM9QUFNAlVJqOn5VNTPG7AZ2e217yOP2XmDNNOceBDb72N6D64rAdo509DMy7mSjRwaQp62rsjEvwBvHTvLBcwrm/TzuFNDzSzLm/RhKKTVf2u/gw+FmVwlo7wFgt41FGQEpD+1OAQ3UQvBKKTUXGgB8ONTUS3pi7LQLtMTFRLF5RdaCxwHcKaCl2gWklAoDDQA+HGru47yidER8ZcC6XLwqm5r2fk7OcXFsT8esFNBArwSmlFL+0ADgZXhskiMd/WwqzpjxuK1lWQC8sYCrgONWCmhxlgYApVToaQDwUtXax6TTTJsB5HZeUQZJcdEL6gY61j1IUWaiLpShlAoL/eTxctCrBPR0YqOj2Lwya0F1gRp7BnUAWCkVNhoAvBxu7qMwPYG8tIRZj91alsWRjgG6B0bn/DzGGI53D1Gq/f9KqTDRAODlUHPvtOmf3i4uywbgjYa51wXq0RRQpVSYaQDw0Ds0xvGeIc6bZgKYtw3L00mOi2ZvQ/ecn+u4poAqpcJMA4CHQ9YEsE1+XgHERkdxYWkW++ZxBeBOAdUyEEqpcNEA4OGwNQC8YZYBYE8Xl2VT3zlAZ//InJ6rsdtdBTRxTucppVSgaADwcKi5l1W5yaQl+L9+7lZrHGCuVwGNPZoCqpQKL/30sRhjONjU5/cAsNs5y9JIjY+Z83wATQFVSoWbBgBLW98I3QOjbJxlBrC3GPc4wBwKw2kKqFLKDjQAWNxLQJ43h/5/t4vLsmnoHqTD4d84gDsFVAeAlVLhpAHAcrCpj5goYV1h2pzPPT0O4N9VQGO3tRC8dgEppcJIA4DlcHMv6wrTSIiNnvO565elkZbg/zhAY4+mgCqlwk8DAOB0Gt61SkDPR3SUsKU02+8FYjQFVCllBxoAgIbuQfpHJ+Y8AOxpa1kWjT1DtPUNz3qspoAqpexAP4FwrQAG0y8B6Y+LV/k/DtDYM6j9/0qpsNMAgKv/PykumtV5KfN+jHUFaaQnxs7aDeRaCH6IlZoCqpQKMw0AwMHmPjYsTyc6avolIGcTFSVc5EddoJ7BMQY0BVQpZQN+BQAR2SEitSJSLyJ3+difKSJPichhEXlTRDZ47GsUkXdF5KCIHPDY/k8i0mJtPygi1wXmJc3N2IST6lbHrEtA+uPiVdmcODlES+/04wBTKaAaAJRSYTZrABCRaOBB4FpgPXCjiKz3Ouxu4KAx5jzgJuABr/1XGmM2GWM2e22/39q+yRize34vYWFq2h2MTTrnnQHkyT0fYKZuoGM6B0ApZRP+XAFsAeqNMQ3GmDHgSeB6r2PWA3sAjDE1wEoRyQ9oS4PEXQJ6IQPAbuX5qWQmxc44EHy8Z0hTQJVStuBPAFgONHncb7a2eToEfAxARLYAK4Aia58BnheRt0Tkdq/z7rC6jR4RkUxfTy4it4vIARE50NXV5Udz5+ZQUy9ZyXEB+UB2jQPMPB/gmKaAKqVswp9PIV8jo8br/j1ApogcBO4E3gEmrH3bjDHn4+pC+qKIXG5t/yGwCtgEtAH3+XpyY8wuY8xmY8zm3NxcP5o7N4ebe9lYlI7I/AeAPV28KpuW3mGaTg753H9cU0CVUjbhTwBoBoo97hcBrZ4HGGMcxphbjDGbcI0B5ALHrH2t1u9O4ClcXUoYYzqMMZPGGCfwsHt7KA2MTlDXOcB5Aej+cZsaB/DRDeROAdVlIJVSduBPANgPrBGRUhGJA24AnvE8QEQyrH0AtwGvGmMcIpIsIqnWMcnANUCldb/Q4yE+6t4eSpUtfRhDQDKA3Nbmp5CdHOezPHT3gCsFdIXOAVBK2UDMbAcYYyZE5A7gOSAaeMQYUyUiO639DwHrgMdEZBJ4D7jVOj0feMrqXokBfmaMedbad6+IbMLVndQIfD5QL8pfCykBPR0RYWtZNvsaejDGnNG15F4IXlNAlVJ2MGsAALBSNHd7bXvI4/ZeYI2P8xqAjdM85mfm1NIgONTUR1FmItkp8QF93K1lWfz+3TZOnBw6Y9UvTQFVStlJRKeiHGruDUj6p7fp6gJpCqhSyk4iNgD0DIzSfGqYjcWB6/5xW5WbQk5K/FnpoMd6BinWFFCllE1E7CfRYWsCWCAzgNxc4wBZ7LXGAdwau3UheKWUfURsADjY1EuUwLnLA38FAK5uoA7H6NTqX8YYjvdoCqhSyj4iNgAcbu5ldV4KyfF+jYPPmXddIHcKqJaBVkrZRUQGAGMMh5r7gjIA7FaWk0xeavzUQLA7BXSFXgEopWwiIgNA86lhTg6OcV4AJ4B5c88HcI8DuFNAS3UMQCllExEZAA5ZE8A2BfEKAFzjAF39oxztGqSxx7UQ/HJNAVVK2UREBoDDzX3ERUdRXpAa1OdxjwPsa+ihsWdIU0CVUrYSkZ9GB5t6Wb8sjbiY4L78ldlJFKQlsLehh8buQS0BoZSylYgLAJNOQ2VLHxsDWP9nOiLCxauyeaOhh+M9Q1oCQillKxEXAOo7Bxgam2RjEAeAPW0ty9IUUKWULUVcADg0VQE0IyTPd3FZztRtTQFVStlJ5AWApl5S42MoC9GHcXFWIsvSEwBNAVVK2UvEBYDDzX2cW5ROVFRgloCcjWscIIfYaE0BVUrZS0QFgJHxSarbHCHr/3f72jVr2XXTZk0BVUrZSnAK4dhUdZuDCacJSQaQp+UZiSzP0G//Sil7iaivpIeaegFCfgWglFJ2FFEB4HBzH7mp8RSkJYS7KUopFXYRFQAOWktAei7UrpRSkSpiAoBjZJyGrsGQ9/8rpZRd+RUARGSHiNSKSL2I3OVjf6aIPCUih0XkTRHZ4LGvUUTeFZGDInLAY3uWiLwgInXW78zAvCTf3rWWgNT+f6WUcpk1AIhINPAgcC2wHrhRRNZ7HXY3cNAYcx5wE/CA1/4rjTGbjDGbPbbdBewxxqwB9lj3g+b0DGC9AlBKKfDvCmALUG+MaTDGjAFPAtd7HbMe14c4xpgaYKWI5M/yuNcDj1q3HwU+4m+j5+NQUy8rs5PISIoL5tMopdSi4U8AWA40edxvtrZ5OgR8DEBEtgArgCJrnwGeF5G3ROR2j3PyjTFtANbvPF9PLiK3i8gBETnQ1dXlR3N9O9zcF7L6P0optRj4EwB8pcwYr/v3AJkichC4E3gHmLD2bTPGnI+rC+mLInL5XBpojNlljNlsjNmcm5s7l1OndDpGaOsb0e4fpZTy4M9M4Gag2ON+EdDqeYAxxgHcAiCuHMtj1g/GmFbrd6eIPIWrS+lVoENECo0xbSJSCHQu8LVM65A1ALxJB4CVUmqKP1cA+4E1IlIqInHADcAzngeISIa1D+A24FVjjENEkkUk1TomGbgGqLSOewa42bp9M/D0wl7K9A439xIdJZyzTK8AlFLKbdYrAGPMhIjcATwHRAOPGGOqRGSntf8hYB3wmIhMAu8Bt1qn5wNPWROvYoCfGWOetfbdA/xSRG4FTgCfDNzLOlNRZiIfP385iXHRwXoKpZRadMQY7+58+9q8ebM5cODA7AcqpZSaIiJveaXhAxE0E1gppdSZNAAopVSE0gCglFIRSgOAUkpFKA0ASikVoTQAKKVUhNIAoJRSEUoDgFJKRahFNRFMRLqA4/M8PQfoDmBzAk3btzDavoXR9i2cndu4whhzVjXNRRUAFkJEDviaCWcX2r6F0fYtjLZv4RZDG71pF5BSSkUoDQBKKRWhIikA7Ap3A2ah7VsYbd/CaPsWbjG08QwRMwaglFLqTJF0BaCUUsqDBgCllIpQSy4AiMgOEakVkXoRucvHfhGRH1j7D4vI+SFsW7GIvCQi1SJSJSJf9nHMdhHpE5GD1s8/hqp91vM3isi71nOftfpOmN+/co/35aCIOETkK17HhPT9E5FHRKRTRCo9tmWJyAsiUmf9zpzm3Bn/VoPYvu+KSI317/eUiGRMc+6MfwtBbN8/iUiLx7/hddOcG6737xcebWsUkYPTnBv092/BjDFL5gfXkpVHgTIgDjgErPc65jrgD4AAW4E3Qti+QuB863YqcMRH+7YDvwvje9gI5MywP2zvn49/63ZcE1zC9v4BlwPnA5Ue2+4F7rJu3wV8Z5r2z/i3GsT2XQPEWLe/46t9/vwtBLF9/wR83Y9//7C8f1777wP+MVzv30J/ltoVwBag3hjTYIwZA54Ervc65nrgMeOyD8gQkcJQNM4Y02aMedu63Q9UA8tD8dwBFLb3z8tVwFFjzHxnhgeEMeZV4KTX5uuBR63bjwIf8XGqP3+rQWmfMeZ5Y8yEdXcfUBTo5/XXNO+fP8L2/rmJa7HzvwB+HujnDZWlFgCWA00e95s5+wPWn2OCTkRWAu8D3vCx+2IROSQifxCRc0LbMgzwvIi8JSK3+9hvi/cPuIHp/+OF8/0DyDfGtIEr6AN5Po6xy/v4WVxXdL7M9rcQTHdYXVSPTNOFZof37zKgwxhTN83+cL5/fllqAUB8bPPOc/XnmKASkRTgf4CvGGMcXrvfxtWtsRH4/4DfhrJtwDZjzPnAtcAXReRyr/12eP/igD8HfuVjd7jfP3/Z4X38e2ACeGKaQ2b7WwiWHwKrgE1AG65uFm9hf/+AG5n523+43j+/LbUA0AwUe9wvAlrncUzQiEgsrg//J4wxv/Heb4xxGGMGrNu7gVgRyQlV+4wxrdbvTuApXJfansL6/lmuBd42xnR47wj3+2fpcHeLWb87fRwT7r/Dm4E/Az5lrA5rb378LQSFMabDGDNpjHECD0/zvOF+/2KAjwG/mO6YcL1/c7HUAsB+YI2IlFrfEm8AnvE65hngJiubZSvQ575cDzarz/C/gGpjzPenOabAOg4R2YLr36gnRO1LFpFU921cg4WVXoeF7f3zMO03r3C+fx6eAW62bt8MPO3jGH/+VoNCRHYA3wT+3BgzNM0x/vwtBKt9nmNKH53mecP2/lk+ANQYY5p97Qzn+zcn4R6FDvQPriyVI7gyBP7e2rYT2GndFuBBa/+7wOYQtu1SXJeph4GD1s91Xu27A6jCldWwD7gkhO0rs573kNUGW71/1vMn4fpAT/fYFrb3D1cgagPGcX0rvRXIBvYAddbvLOvYZcDumf5WQ9S+elz95+6/wYe82zfd30KI2vdT62/rMK4P9UI7vX/W9v92/815HBvy92+hP1oKQimlItRS6wJSSinlJw0ASikVoTQAKKVUhNIAoJRSEUoDgFJKRSgNAEopFaE0ACilVIT6/wFyh9MTAD7EpgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(np.arange(len(eval_losses)), eval_losses)\n", "plt.title('test loss')\n", "plt.show()\n", "\n", "plt.plot(np.arange(len(eval_acces)), eval_acces)\n", "plt.title('test acc')\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 练习\n", "\n", "* 看一看上面的训练过程,看一下准确率是怎么计算出来的,特别注意 max 这个函数\n", "* 自己重新实现一个新的网络,试试改变隐藏层的数目和激活函数,看看有什么新的结果" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 参考\n", "* [损失函数:交叉熵详解](https://zhuanlan.zhihu.com/p/115277553)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 2 }