From 14a41f227ec0ea58c7e01574de278f7ae4d4d52f Mon Sep 17 00:00:00 2001 From: MaoXianxin Date: Sun, 1 Aug 2021 18:22:59 +0800 Subject: [PATCH] Convolutional Neural Network (CNN) --- .../Convolutional Neural Network (CNN).ipynb | 139 +++++++++--------- .../Convolutional Neural Network (CNN).md | 6 +- 2 files changed, 75 insertions(+), 70 deletions(-) diff --git a/CV_Classification/Convolutional Neural Network (CNN).ipynb b/CV_Classification/Convolutional Neural Network (CNN).ipynb index c324bd2..73d3577 100644 --- a/CV_Classification/Convolutional Neural Network (CNN).ipynb +++ b/CV_Classification/Convolutional Neural Network (CNN).ipynb @@ -263,119 +263,121 @@ "output_type": "stream", "text": [ "Epoch 1/10\n", - "1563/1563 - 7s - loss: 1.3663 - accuracy: 0.5087 - val_loss: 1.1856 - val_accuracy: 0.5861\n", + "1563/1563 - 7s - loss: 1.5357 - accuracy: 0.4909 - val_loss: 1.2992 - val_accuracy: 0.5758\n", "Epoch 2/10\n", - "1563/1563 - 5s - loss: 0.9773 - accuracy: 0.6572 - val_loss: 0.9604 - val_accuracy: 0.6659\n", + "1563/1563 - 5s - loss: 1.1891 - accuracy: 0.6277 - val_loss: 1.1422 - val_accuracy: 0.6398\n", "Epoch 3/10\n", - "1563/1563 - 6s - loss: 0.8279 - accuracy: 0.7090 - val_loss: 0.8527 - val_accuracy: 0.7021\n", + "1563/1563 - 6s - loss: 1.0742 - accuracy: 0.6770 - val_loss: 1.0698 - val_accuracy: 0.6807\n", "Epoch 4/10\n", - "1563/1563 - 5s - loss: 0.7342 - accuracy: 0.7437 - val_loss: 0.9145 - val_accuracy: 0.6978\n", + "1563/1563 - 5s - loss: 1.0118 - accuracy: 0.7022 - val_loss: 1.0396 - val_accuracy: 0.7004\n", "Epoch 5/10\n", - "1563/1563 - 6s - loss: 0.6594 - accuracy: 0.7702 - val_loss: 0.8388 - val_accuracy: 0.7149\n", + "1563/1563 - 5s - loss: 0.9686 - accuracy: 0.7226 - val_loss: 0.9857 - val_accuracy: 0.7174\n", "Epoch 6/10\n", - "1563/1563 - 6s - loss: 0.5932 - accuracy: 0.7925 - val_loss: 0.8182 - val_accuracy: 0.7250\n", + "1563/1563 - 5s - loss: 0.9370 - accuracy: 0.7351 - val_loss: 0.9990 - val_accuracy: 0.7180\n", "Epoch 7/10\n", - "1563/1563 - 6s - loss: 0.5388 - accuracy: 0.8120 - val_loss: 0.8267 - val_accuracy: 0.7301\n", + "1563/1563 - 5s - loss: 0.9109 - accuracy: 0.7491 - val_loss: 0.9582 - val_accuracy: 0.7369\n", "Epoch 8/10\n", - "1563/1563 - 5s - loss: 0.4862 - accuracy: 0.8287 - val_loss: 0.8705 - val_accuracy: 0.7288\n", + "1563/1563 - 6s - loss: 0.8868 - accuracy: 0.7583 - val_loss: 0.9718 - val_accuracy: 0.7338\n", "Epoch 9/10\n", - "1563/1563 - 5s - loss: 0.4429 - accuracy: 0.8430 - val_loss: 0.9090 - val_accuracy: 0.7329\n", + "1563/1563 - 5s - loss: 0.8720 - accuracy: 0.7653 - val_loss: 0.9813 - val_accuracy: 0.7330\n", "Epoch 10/10\n", - "1563/1563 - 5s - loss: 0.3993 - accuracy: 0.8588 - val_loss: 0.9312 - val_accuracy: 0.7292\n", - "1563/1563 - 3s - loss: 0.2891 - accuracy: 0.9023\n", - "313/313 - 1s - loss: 0.9312 - accuracy: 0.7292\n", + "1563/1563 - 5s - loss: 0.8591 - accuracy: 0.7711 - val_loss: 0.9527 - val_accuracy: 0.7423\n", + "1563/1563 - 3s - loss: 0.7640 - accuracy: 0.8072\n", + "313/313 - 1s - loss: 0.9527 - accuracy: 0.7423\n", "Epoch 1/10\n", - "1563/1563 - 6s - loss: 1.3615 - accuracy: 0.5115 - val_loss: 1.1004 - val_accuracy: 0.6124\n", + "1563/1563 - 6s - loss: 1.5378 - accuracy: 0.4981 - val_loss: 1.2303 - val_accuracy: 0.6169\n", "Epoch 2/10\n", - "1563/1563 - 6s - loss: 0.9843 - accuracy: 0.6540 - val_loss: 0.9922 - val_accuracy: 0.6532\n", + "1563/1563 - 5s - loss: 1.1776 - accuracy: 0.6425 - val_loss: 1.1139 - val_accuracy: 0.6640\n", "Epoch 3/10\n", - "1563/1563 - 5s - loss: 0.8414 - accuracy: 0.7054 - val_loss: 0.8780 - val_accuracy: 0.6969\n", + "1563/1563 - 5s - loss: 1.0609 - accuracy: 0.6886 - val_loss: 1.0566 - val_accuracy: 0.6952\n", "Epoch 4/10\n", - "1563/1563 - 5s - loss: 0.7430 - accuracy: 0.7403 - val_loss: 0.8444 - val_accuracy: 0.7144\n", + "1563/1563 - 5s - loss: 1.0008 - accuracy: 0.7113 - val_loss: 1.0495 - val_accuracy: 0.6962\n", "Epoch 5/10\n", - "1563/1563 - 6s - loss: 0.6676 - accuracy: 0.7677 - val_loss: 0.8640 - val_accuracy: 0.7070\n", + "1563/1563 - 5s - loss: 0.9587 - accuracy: 0.7332 - val_loss: 0.9906 - val_accuracy: 0.7274\n", "Epoch 6/10\n", - "1563/1563 - 5s - loss: 0.6071 - accuracy: 0.7878 - val_loss: 0.8116 - val_accuracy: 0.7330\n", + "1563/1563 - 5s - loss: 0.9336 - accuracy: 0.7404 - val_loss: 1.0210 - val_accuracy: 0.7202\n", "Epoch 7/10\n", - "1563/1563 - 5s - loss: 0.5547 - accuracy: 0.8055 - val_loss: 0.8214 - val_accuracy: 0.7250\n", + "1563/1563 - 5s - loss: 0.9081 - accuracy: 0.7531 - val_loss: 1.0412 - val_accuracy: 0.7115\n", "Epoch 8/10\n", - "1563/1563 - 5s - loss: 0.5031 - accuracy: 0.8233 - val_loss: 0.8435 - val_accuracy: 0.7161\n", + "1563/1563 - 5s - loss: 0.8851 - accuracy: 0.7636 - val_loss: 1.0002 - val_accuracy: 0.7228\n", "Epoch 9/10\n", - "1563/1563 - 5s - loss: 0.4603 - accuracy: 0.8374 - val_loss: 0.9022 - val_accuracy: 0.7263\n", + "1563/1563 - 5s - loss: 0.8734 - accuracy: 0.7699 - val_loss: 1.0203 - val_accuracy: 0.7264\n", "Epoch 10/10\n", - "1563/1563 - 5s - loss: 0.4195 - accuracy: 0.8501 - val_loss: 0.9116 - val_accuracy: 0.7267\n", - "1563/1563 - 3s - loss: 0.3319 - accuracy: 0.8829\n", - "313/313 - 0s - loss: 0.9116 - accuracy: 0.7267\n", + "1563/1563 - 5s - loss: 0.8563 - accuracy: 0.7783 - val_loss: 1.0008 - val_accuracy: 0.7307\n", + "1563/1563 - 3s - loss: 0.8089 - accuracy: 0.7947\n", + "313/313 - 1s - loss: 1.0008 - accuracy: 0.7307\n", "Epoch 1/10\n", - "1563/1563 - 6s - loss: 1.3771 - accuracy: 0.5044 - val_loss: 1.1272 - val_accuracy: 0.5982\n", + "1563/1563 - 6s - loss: 1.5289 - accuracy: 0.4978 - val_loss: 1.2451 - val_accuracy: 0.6050\n", "Epoch 2/10\n", - "1563/1563 - 5s - loss: 0.9996 - accuracy: 0.6501 - val_loss: 0.9677 - val_accuracy: 0.6603\n", + "1563/1563 - 5s - loss: 1.1789 - accuracy: 0.6384 - val_loss: 1.0827 - val_accuracy: 0.6726\n", "Epoch 3/10\n", - "1563/1563 - 5s - loss: 0.8504 - accuracy: 0.7022 - val_loss: 0.8853 - val_accuracy: 0.6899\n", + "1563/1563 - 5s - loss: 1.0550 - accuracy: 0.6868 - val_loss: 1.0456 - val_accuracy: 0.6894\n", "Epoch 4/10\n", - "1563/1563 - 6s - loss: 0.7515 - accuracy: 0.7371 - val_loss: 0.8470 - val_accuracy: 0.7130\n", + "1563/1563 - 5s - loss: 0.9963 - accuracy: 0.7109 - val_loss: 1.0469 - val_accuracy: 0.6989\n", "Epoch 5/10\n", - "1563/1563 - 5s - loss: 0.6814 - accuracy: 0.7625 - val_loss: 0.8239 - val_accuracy: 0.7170\n", + "1563/1563 - 5s - loss: 0.9565 - accuracy: 0.7294 - val_loss: 1.0523 - val_accuracy: 0.6927\n", "Epoch 6/10\n", - "1563/1563 - 5s - loss: 0.6157 - accuracy: 0.7834 - val_loss: 0.8318 - val_accuracy: 0.7161\n", + "1563/1563 - 5s - loss: 0.9284 - accuracy: 0.7397 - val_loss: 1.0313 - val_accuracy: 0.7123\n", "Epoch 7/10\n", - "1563/1563 - 6s - loss: 0.5652 - accuracy: 0.7993 - val_loss: 0.8343 - val_accuracy: 0.7143\n", + "1563/1563 - 5s - loss: 0.9088 - accuracy: 0.7502 - val_loss: 1.0229 - val_accuracy: 0.7166\n", "Epoch 8/10\n", - "1563/1563 - 5s - loss: 0.5101 - accuracy: 0.8184 - val_loss: 0.8866 - val_accuracy: 0.7155\n", + "1563/1563 - 5s - loss: 0.8940 - accuracy: 0.7597 - val_loss: 1.0056 - val_accuracy: 0.7224\n", "Epoch 9/10\n", - "1563/1563 - 5s - loss: 0.4665 - accuracy: 0.8345 - val_loss: 0.8963 - val_accuracy: 0.7184\n", + "1563/1563 - 5s - loss: 0.8775 - accuracy: 0.7688 - val_loss: 1.0287 - val_accuracy: 0.7201\n", "Epoch 10/10\n", - "1563/1563 - 5s - loss: 0.4215 - accuracy: 0.8508 - val_loss: 0.9514 - val_accuracy: 0.7198\n", - "1563/1563 - 3s - loss: 0.3325 - accuracy: 0.8843\n", - "313/313 - 1s - loss: 0.9514 - accuracy: 0.7198\n", + "1563/1563 - 5s - loss: 0.8648 - accuracy: 0.7729 - val_loss: 1.0135 - val_accuracy: 0.7250\n", + "1563/1563 - 3s - loss: 0.8205 - accuracy: 0.7900\n", + "313/313 - 1s - loss: 1.0135 - accuracy: 0.7250\n", "Epoch 1/10\n", - "1563/1563 - 6s - loss: 1.3799 - accuracy: 0.5050 - val_loss: 1.1086 - val_accuracy: 0.6083\n", + "1563/1563 - 6s - loss: 1.5343 - accuracy: 0.4970 - val_loss: 1.2589 - val_accuracy: 0.5944\n", "Epoch 2/10\n", - "1563/1563 - 6s - loss: 0.9957 - accuracy: 0.6515 - val_loss: 0.9527 - val_accuracy: 0.6667\n", + "1563/1563 - 6s - loss: 1.1899 - accuracy: 0.6311 - val_loss: 1.1374 - val_accuracy: 0.6554\n", "Epoch 3/10\n", - "1563/1563 - 5s - loss: 0.8436 - accuracy: 0.7071 - val_loss: 0.8997 - val_accuracy: 0.6930\n", + "1563/1563 - 5s - loss: 1.0711 - accuracy: 0.6816 - val_loss: 1.0769 - val_accuracy: 0.6825\n", "Epoch 4/10\n", - "1563/1563 - 5s - loss: 0.7483 - accuracy: 0.7388 - val_loss: 0.8571 - val_accuracy: 0.7060\n", + "1563/1563 - 5s - loss: 1.0050 - accuracy: 0.7093 - val_loss: 1.0351 - val_accuracy: 0.7000\n", "Epoch 5/10\n", - "1563/1563 - 5s - loss: 0.6756 - accuracy: 0.7650 - val_loss: 0.8219 - val_accuracy: 0.7227\n", + "1563/1563 - 6s - loss: 0.9640 - accuracy: 0.7261 - val_loss: 0.9983 - val_accuracy: 0.7210\n", "Epoch 6/10\n", - "1563/1563 - 5s - loss: 0.6135 - accuracy: 0.7855 - val_loss: 0.8080 - val_accuracy: 0.7294\n", + "1563/1563 - 5s - loss: 0.9355 - accuracy: 0.7404 - val_loss: 1.0217 - val_accuracy: 0.7162\n", "Epoch 7/10\n", - "1563/1563 - 5s - loss: 0.5596 - accuracy: 0.8047 - val_loss: 0.8134 - val_accuracy: 0.7325\n", + "1563/1563 - 5s - loss: 0.9118 - accuracy: 0.7501 - val_loss: 0.9838 - val_accuracy: 0.7299\n", "Epoch 8/10\n", - "1563/1563 - 5s - loss: 0.5072 - accuracy: 0.8201 - val_loss: 0.8311 - val_accuracy: 0.7305\n", + "1563/1563 - 5s - loss: 0.8929 - accuracy: 0.7596 - val_loss: 0.9640 - val_accuracy: 0.7371\n", "Epoch 9/10\n", - "1563/1563 - 5s - loss: 0.4568 - accuracy: 0.8382 - val_loss: 0.8915 - val_accuracy: 0.7272\n", + "1563/1563 - 5s - loss: 0.8705 - accuracy: 0.7696 - val_loss: 0.9780 - val_accuracy: 0.7430\n", "Epoch 10/10\n", - "1563/1563 - 5s - loss: 0.4169 - accuracy: 0.8513 - val_loss: 0.9355 - val_accuracy: 0.7305\n", - "1563/1563 - 3s - loss: 0.3136 - accuracy: 0.8903\n", - "313/313 - 1s - loss: 0.9355 - accuracy: 0.7305\n", + "1563/1563 - 5s - loss: 0.8568 - accuracy: 0.7763 - val_loss: 1.0010 - val_accuracy: 0.7312\n", + "1563/1563 - 3s - loss: 0.8340 - accuracy: 0.7851\n", + "313/313 - 0s - loss: 1.0010 - accuracy: 0.7312\n", "Epoch 1/10\n", - "1563/1563 - 6s - loss: 1.3795 - accuracy: 0.5050 - val_loss: 1.1463 - val_accuracy: 0.5928\n", + "1563/1563 - 6s - loss: 1.5184 - accuracy: 0.5016 - val_loss: 1.2426 - val_accuracy: 0.6107\n", "Epoch 2/10\n", - "1563/1563 - 5s - loss: 0.9932 - accuracy: 0.6512 - val_loss: 0.9479 - val_accuracy: 0.6669\n", + "1563/1563 - 5s - loss: 1.1756 - accuracy: 0.6363 - val_loss: 1.1596 - val_accuracy: 0.6486\n", "Epoch 3/10\n", - "1563/1563 - 5s - loss: 0.8355 - accuracy: 0.7083 - val_loss: 0.8617 - val_accuracy: 0.6967\n", + "1563/1563 - 5s - loss: 1.0647 - accuracy: 0.6807 - val_loss: 1.0849 - val_accuracy: 0.6784\n", "Epoch 4/10\n", - "1563/1563 - 5s - loss: 0.7378 - accuracy: 0.7418 - val_loss: 0.8121 - val_accuracy: 0.7207\n", + "1563/1563 - 5s - loss: 1.0072 - accuracy: 0.7054 - val_loss: 1.0332 - val_accuracy: 0.7035\n", "Epoch 5/10\n", - "1563/1563 - 5s - loss: 0.6570 - accuracy: 0.7705 - val_loss: 0.8229 - val_accuracy: 0.7194\n", + "1563/1563 - 5s - loss: 0.9701 - accuracy: 0.7226 - val_loss: 1.0114 - val_accuracy: 0.7144\n", "Epoch 6/10\n", - "1563/1563 - 5s - loss: 0.5938 - accuracy: 0.7924 - val_loss: 0.8536 - val_accuracy: 0.7194\n", + "1563/1563 - 5s - loss: 0.9412 - accuracy: 0.7373 - val_loss: 0.9978 - val_accuracy: 0.7180\n", "Epoch 7/10\n", - "1563/1563 - 6s - loss: 0.5353 - accuracy: 0.8100 - val_loss: 0.8579 - val_accuracy: 0.7227\n", + "1563/1563 - 5s - loss: 0.9110 - accuracy: 0.7497 - val_loss: 0.9928 - val_accuracy: 0.7240\n", "Epoch 8/10\n", - "1563/1563 - 5s - loss: 0.4862 - accuracy: 0.8275 - val_loss: 0.8390 - val_accuracy: 0.7317\n", + "1563/1563 - 5s - loss: 0.8947 - accuracy: 0.7561 - val_loss: 0.9831 - val_accuracy: 0.7306\n", "Epoch 9/10\n", - "1563/1563 - 5s - loss: 0.4396 - accuracy: 0.8444 - val_loss: 0.8516 - val_accuracy: 0.7273\n", + "1563/1563 - 5s - loss: 0.8828 - accuracy: 0.7621 - val_loss: 0.9969 - val_accuracy: 0.7263\n", "Epoch 10/10\n", - "1563/1563 - 5s - loss: 0.3947 - accuracy: 0.8594 - val_loss: 0.9172 - val_accuracy: 0.7269\n", - "1563/1563 - 3s - loss: 0.3077 - accuracy: 0.8928\n", - "313/313 - 1s - loss: 0.9172 - accuracy: 0.7269\n" + "1563/1563 - 5s - loss: 0.8669 - accuracy: 0.7686 - val_loss: 0.9956 - val_accuracy: 0.7293\n", + "1563/1563 - 3s - loss: 0.8151 - accuracy: 0.7896\n", + "313/313 - 0s - loss: 0.9956 - accuracy: 0.7293\n" ] } ], "source": [ + "from tensorflow.keras import regularizers\n", + "\n", "train_num = 5\n", "train_acc_list = []\n", "train_loss_list = []\n", @@ -385,13 +387,14 @@ "for i in range(train_num):\n", " model = models.Sequential()\n", " model.add(tf.keras.layers.experimental.preprocessing.Normalization(mean=layer.mean.numpy(), variance=layer.variance.numpy()))\n", - " model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))\n", + " model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3), kernel_regularizer=regularizers.l2(0.001)))\n", " model.add(layers.MaxPooling2D((2, 2)))\n", - " model.add(layers.Conv2D(64, (3, 3), activation='relu'))\n", + " model.add(layers.Conv2D(64, (3, 3), activation='relu', kernel_regularizer=regularizers.l2(0.001)))\n", " model.add(layers.MaxPooling2D((2, 2)))\n", - " model.add(layers.Conv2D(64, (3, 3), activation='relu'))\n", + " model.add(layers.Conv2D(64, (3, 3), activation='relu', kernel_regularizer=regularizers.l2(0.001)))\n", " model.add(layers.Flatten())\n", - " model.add(layers.Dense(64, activation='relu'))\n", + " model.add(layers.Dense(64, activation='relu', kernel_regularizer=regularizers.l2(0.001)))\n", + " # model.add(layers.Dropout(0.5))\n", " model.add(layers.Dense(10))\n", "\n", " model.compile(optimizer='adam',\n", @@ -422,7 +425,7 @@ "outputs": [ { "data": { - "text/plain": "0.7266199946403503" + "text/plain": "0.7317000031471252" }, "execution_count": 12, "metadata": {}, @@ -447,13 +450,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "313/313 - 1s - loss: 0.9172 - accuracy: 0.7269\n" + "313/313 - 0s - loss: 0.9956 - accuracy: 0.7293\n" ] }, { "data": { "text/plain": "
", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAu+ElEQVR4nO3dd3yUZbr/8c+VAiEBkkCoKTRDC52IoKsgiIvdFWl6dGUt6+7qoq5r26LH4znH3+quR3dd96AHFeuuYO8NRcVGE6QjBEhCCSGFljr3749nCCEkMIFMJmG+79drXpmnzpWB3Nfz3M9dzDmHiIiEr4hQByAiIqGlRCAiEuaUCEREwpwSgYhImFMiEBEJc0oEIiJhLmiJwMxmmdkOM/u+ju1mZo+Y2XozW2Zmw4IVi4iI1C2YdwRPAROOsP0cIN3/ug54LIixiIhIHYKWCJxz84FdR9jlImC283wFJJhZl2DFIyIitYsK4WcnA1uqLWf7122tuaOZXYd310BcXNzwvn37NkqAIiInikWLFu10znWobVsoE0HAnHMzgZkAmZmZbuHChSGOSESkeTGzTXVtC2WroRwgtdpyin+diIg0olAmgteBK/2th0YCRc65w6qFREQkuIJWNWRmLwBjgCQzywbuBqIBnHP/AN4GzgXWA/uA6cGKRURE6ha0ROCcm3aU7Q74VbA+X0REAqOexSIiYU6JQEQkzCkRiIiEOSUCEZEwp0QgIhLmlAhERMKcEoGISJhTIhARCXNKBCIiYU6JQEQkzCkRiIiEOSUCEZEwp0QgIhLmlAhERMKcEoGISJhTIhARCXNKBCIiYU6JQEQkzCkRiIiEOSUCEZEwp0QgIhLmlAhERMKcEoGISJhTIhARCXNKBCIiYU6JQEQkzCkRiIiEOSUCEZEwp0QgIhLmlAhERMKcEoGISJhTIhARCXNKBCIiYU6JQEQkzCkRiIiEuaAmAjObYGZrzGy9md1Ry/ZuZvaRmS0zs0/MLCWY8YiIyOGClgjMLBJ4FDgH6A9MM7P+NXZ7EJjtnBsE3Av8d7DiERGR2gXzjmAEsN45t8E5Vwa8CFxUY5/+wMf+9/Nq2S4iIkEWzESQDGyptpztX1fdd8Al/vc/AdqYWfuaJzKz68xsoZktzMvLC0qwIiLhKtQPi28FRpvZEmA0kANU1tzJOTfTOZfpnMvs0KFDY8coInJCiwriuXOA1GrLKf51VZxzufjvCMysNTDROVcYxJhERKSGYN4RfAukm1kPM2sBTAVer76DmSWZ2YEY7gRmBTEeERGpRdASgXOuArgBeA9YBfzLObfCzO41swv9u40B1pjZWqAT8J/BikdERGpnzrlQx1AvmZmZbuHChaEOQ0SkWTGzRc65zNq2hfphsYiIhJgSgYhImFMiEBEJc0oEIiJhTolARCTMKRGIiIQ5JQIRkTCnRCAiEuaUCEREwpwSgYhImFMiEBFp4vaVVbBo0y62F5cE5fzBHIZaRETqqWBvGStyi1mRW1T1c8POvTgH916UwZWjujf4ZyoRiIiEgHOObcUlrMgp5nt/ob8yt5icwv1V+3SNj6F/13jOH9SVjK5tGdYtMSixKBGIiASZz+fIyt/rv8I/eLW/a28ZAGbQo30cw7olcsWobmR0bUtG13jaxbVolPiUCEREGlB5pY912/fwfW4RK/2F/srcYvaWebPwRkca6R3bMK5vRwYkx5PRtS39urQlrmXoimMlAhGRY7SvrIJVW3ez0n+F/31uEWu37aGs0gdAbItI+nVpy8ThKVVX+emdWtMyKjLEkR9KiUBEJACF+8pYmXuwPn9FbjEb8vbg88/tlRgbTUbXeKaf1p3+/kK/R1IckREW2sADoEQgIlLDvrIKlmcXsXRLIUs2F7I8p+iQh7hd4mPI6BrPeQO7eFf6yfF0jY/BrOkX+rVRIhCRsOacY8POvSzdXMiSLQUs2VzI6m27qfRf6qe1i2VoWkJIHuI2FiUCEQkrRfvKWZpdyJLNXqG/dEshRfvLAWjdMoohqQn8ckwvhqYlMDglgfatW4Y44uBTIhCRE1ZFpY8123ezZLNXxbNkSwEb8vYCXpPNPp3acO7AzgxJTWBoWiK9OrRuFnX6DU2JQEROGDuKS1hcrYpneXYR+8u9ZptJrVswJDWRicNSGJqawKDUBFqHsMlmU6JvQUSapZLySlbkFlVd7S/dUlj1QDc60sjoGs+Uk1MZmpbAsLREUhJbNduHucGmRCAiTZ5zjs279lUV+Es2F7ByazHlld4D3eSEVgxNS+BnP+rB0LQE+ndpS0x002qr35QpEYhIk7OntILvthx8oLtkS2HVcAyxLSIZlBLPNaf3ZGhqAkPSEujYJibEETdvSgQiElIHrvYXbSpg8eYCFm0qZM224qqOWid1bM24vh0ZmpbI0LQE0ju2JipSI+g3JCUCEWlUJeWVLMsuqir4F28qIN9/td+6ZRRD0xIYPzad4d0SGZKaQHyr6BBHfOJTIhCRoMot3H9Iob8it5gK/+V+j6Q4xvTpyLBuCQzvlkh6xzZh2Xwz1JQIRKTBlFX4WJHrXe0v2VzIok0FbPPPqhUTHcHglASuO6Mnw/zVPOHQWas5UCIQkWO2Y3cJizd5D3UXbSpgWU4RZRXeyJvJCa0Y0aMdw9ISGN6tHX27tCFadftNkhKBiASkotLH6m27qwr9xZsL2bxrHwAtIiMYkNyWn47qxrC0RIZ1S6RTW7XkaS6UCESkVoX7yqqqdxZtKuC77EL2+SdX6dimJcO7JXLFyG4M65bIgOS2TW6MfQmcEoGI4PM5fsjbU1XoL95cwA/+MXkiI4z+XdoyOdPrpTu8WyLJCeqleyJRIhAJQwc6bB0o+JdsLqC4pALwJlgZlpbIxOEpDEtLZFBKPLEtVFScyIL6r2tmE4CHgUjgCefc/TW2pwFPAwn+fe5wzr0dzJhEws2ROmyZQe+ObThvUFeGd0tkeLdEureP1dV+mAlaIjCzSOBRYDyQDXxrZq8751ZW2+33wL+cc4+ZWX/gbaB7sGISCQcl5ZUsz/F32PIX/jv3HNph6+wDHbbSEmgbow5b4S6YdwQjgPXOuQ0AZvYicBFQPRE4oK3/fTyQG8R4RE5IW4v2s3iTv5pncwErc4uqBmPrkRTHGb07VF3tq8OW1CaYiSAZ2FJtORs4pcY+9wDvm9mNQBxwVm0nMrPrgOsA0tLSGjxQkeaivNLHytxifxWPd8WfW+R12GoZFcHg1ASu/lFPhndLZJg6bEmAQv0EaBrwlHPuz2Y2CnjGzAY453zVd3LOzQRmAmRmZroQxCkSEvl7Slm8ubCq4F+WXUhJuffn0TU+hmHdErkmzbva79elLS2i1GFL6u+oicDMLgDeqlk4ByAHSK22nOJfV93VwAQA59yXZhYDJAE76vlZIs2ez+dYu2N3tZY8hWzc6TXhjIowMpLjmTYizX+1n0jXhFYhjlhOFIHcEUwB/sfM5gKznHOrAzz3t0C6mfXASwBTgctq7LMZGAc8ZWb9gBggL8DzizR7u/aW8dm6PD5dm8f8tTvZuacUgPZxLRjWLZEpJ6dWNeHURCsSLEdNBM65fzOztvircczMAU8CLzjndh/huAozuwF4D69p6Czn3AozuxdY6Jx7HfgN8LiZ3Yz34Pgq55yqfuSEVelzfJddyKdrvML/u+xCnIOE2GhOT+/A6elJjOjejm5qwimNyAItd82sPXAFcBOwCjgJeMQ599egRVeLzMxMt3Dhwsb8SJHjsmN3CfPX7uTTtXl8ti6Pwn3lmMHglATG9OnA6N4dGJSSoNY8ElRmtsg5l1nbtkCeEVwITMcr+GcDI5xzO8wsFq8paKMmApGmrrzSx+JNBXyyNo9P1+SxcmsxAEmtWzKubydG9+nA6SclkRjXIsSRingCeUYwEXjIOTe/+krn3D4zuzo4YYk0LzmF+/3VPTv4Yn0+e0oriIwwhndL5Lc/7sPo3h3o36UtEbrqlyYokERwD7D1wIKZtQI6OeeynHMfBSswkaaspLySb7N2VdX1r9uxB/CadF4wuAuje3fg1JOS1GtXmoVAEsFLwKnVliv9604OSkQiTVTWzr18utYr+L/8IZ/95ZW0iIxgRI92TM5MZUyfDpzUsbUe8kqzE0giiHLOlR1YcM6VmZkqN+WEt6+sgq825PPpmjw+WZvHpnxvEpZu7WOZnJnC6D4dGNmzvUbmlGYvkP/BeWZ2ob+5J2Z2EbAzuGGJND7nHOt37OHTtXl8siaPbzbuoqzSR0x0BKf2SuJnp/VgdO8OdE+KC3WoIg0qkERwPfCcmf0NMLzxg64MalQijcTnc3yTtYvXluby6ZodVeP2pHdszZWjujG6TwdO7t5OnbnkhBZIh7IfgJFm1tq/vCfoUYkE2cade3llcTYvL8khu2A/sS0iOT09iRvGpjO6TweSNXyDhJGAKjfN7DwgA4g58CDMOXdvEOMSaXBF+8p5c3kuLy/OYdGmAszgRyclcevZfTg7o5Pq+iVsBdKh7B9ALHAm8ARwKfBNkOMSaRDllT4+W5fH3EU5fLBqO2UVPtI7tuaOc/py8ZBkOsfHhDpEkZAL5BLoVOfcIDNb5pz7dzP7M/BOsAMTOR4rcot4eXEOry3NYeeeMhJjo7lsRBqXDEtmYHK8mniKVBNIIijx/9xnZl2BfKBL8EISOTY7dpfw2pJc5i7OZvW23URHGuP6duKSYcmM6dNRY/WL1CGQRPCGmSUADwCL8UYJfTyYQYkEqqS8kg9Wbmfu4mzmr83D52BwagL3XpTBBYO6ajwfkQAcMRGYWQTwkXOuEJhrZm8CMc65osYITqQ2zjkWbirg5cXZvLlsK7tLKugSH8P1o3txybBkTurYJtQhijQrR0wEzjmfmT0KDPUvlwKljRGYSE2b8/fx8pJsXl6cw+Zd+2gVHck5AzozcXgKI3u21zDOIscokKqhj8xsIvCyJo2RxlZcUs47y7cyd1EO32TtwgxG9WzPr8elc86AzsS1VJNPkeMVyF/Rz4FbgAozK8HrXeycc22DGpmErYpKH5+v38nLi3N4b8U2Sit89EyK47c/7sPFQ5PV2UukgQXSs1gVrtIo1mzbzdzF2by6JIcdu0uJbxXN5MxULhmWzJDUBDX5FAmSQDqUnVHb+poT1Ygci517Snl9qdfkc0VuMVERxpg+Hbl0eDJn9u1IyyiN8SMSbIFUDf222vsYYASwCBgblIgkLHy3pZCnFmTx5rJcyisdA5PjufuC/lw4uCvtW7cMdXgiYSWQqqELqi+bWSrwP8EKSE5c5ZU+3vl+G099sZHFmwuJaxHJ5ad0Y9qINPp0Vg2kSKgcS5OLbKBfQwciJ678PaW88M1mnvlqE9uLS+nePpa7L+jPpcNTaKOpHEVCLpBnBH/F600MEAEMwethLHJEK3KLeOqLLF77LpeyCh+npyfx35cMZEzvjprEXaQJCeSOYGG19xXAC865L4IUjzRzFZU+Pli5nSe/yOKbrF20io5kcmYKPx3VnfROqv6RWjgH+/KhKPvgq9j/s6IMWraBmLbez5b+nzHxNZarbY9QA4P6CiQRzAFKnHOVAGYWaWaxzrl9wQ1NmpPCfWW88M0Wnvkyi9yiElISW/G7c/sxOTOV+FhV/4S1sr1QlHOwcC/K9paLtvgL/RyoKDn0mKgYaJsM0a2gtBhKd0NJMXjF0JFFx9WSOA4sxweWWFrEQRg1Vw6oZzFwFnBgZrJWwPvAqcEKSpqP1duKeXpBFq8syaGk3Meonu2558IMxvXrpCEfwkFlBezZdujV/IHC/UBBv7+gxkEGbbpAfDJ0GQR9z4W2KRCf4q2LT4XY9ocXxM5B+f5DE0NpUbX3u6ttKzp0uTj34HJZAJMsWsShiSMy2ovHIrz4zfw/I2p5Tx3r7fBzmH9E3EDPPXga9Bx9rP9adQokEcRUn57SObfHzGIbPBJpNip9jo9WbeepBVks+CGfllERXDIsmZ+e2p2+ndXh/IThnFeI11a4F+V4P3dvPfwqPSbeK8zbJkPKiIOFe3yKt65tV69grS8zaBHrvdp0Pvbfy1fpTwq7aySV4hrL/u0lxeAr974PHDhfLe/935ev0r/ev62291XHcYTz1XYOB72C02o/kESw18yGOecWA5jZcGB/UKKRJq1ofzkvLdzC019msWXXfrrGx3D7hL5MPTlVwz03Bb5KKN8HZfugfK//5z6vaqZ8f7X31X/696l53P4Cr+Avr1EDHNnCK8zjU6DH6QcL9wMFfXyydwXdlEVEQqsE7yVAYIngJuAlM8vFG2eoMzAlmEFJ07J+xx6eXpDF3MXZ7CurZET3dtx5Tj/O7t+JqMhjmOylogyyPoM1b8O6D7xb9Ygo/ysSIqIPLkdGVdtW4xUZ7d//wLpqy5HR1c4XVe2ckdW21fi8plAnfKAwr61Ar15wH1KQ+/eprOfAwBbh1ae3iIXoWK9ePLraFXf62dWqa1L8VTZJEKEJfk40gXQo+9bM+gJ9/KvWOOfKgxuWhJrP5/h0bR6zvtjIZ+t20iIygguHdOWqU7szIDm+/ifcXwjrP4TVb3k/S4u9QqfnmdC2C1SWe4Wgr8L/qrZcWe5fVwkVpeDbc3C55nZfebVzVB7cFshDxqYoqtXBgvpAIR0dB607Viu8Wx1ekFcV8P7th6zz7xvZomkkPwm5QPoR/Ap4zjn3vX850cymOef+HvTopNHtLilnzqJsnl6QRVb+Pjq1bcmtZ/dm6og0kuo79ENRNqx+G9a8BVmfewVyXAfofxH0PQ96jvEKqcZwoP62eqKorDg08TQFFnGw0I+O1dW3NIpAqoaudc49emDBOVdgZtcCSgQnkI079/L0gizmLMpmT2kFw9ISuOXsPpwzoDPRgVb/OAfblntVPqvfgm3LvPXt02HUr6DPeZCSGZp23mZeNVOk5i8QqSmQv4pIM7MDk9KYWSSgJ4MnAOccn63byVMLspi3ZgdREcb5g7zqn8GpCYGdpLIcNn3hv/J/B4o2AwapI+Csf/eu/JPSg/lriMhxCiQRvAv808z+17/8c+Cd4IUkweac45UlOTw6bz0/5O0lqXULfj02nctHptGxTczRT1BS7NXzr3kb1r3vtdmOivHq+0f/FnpP8OqwRaRZCCQR3A5cB1zvX16G13JImqGi/eXc9fJy3lq+lYyubfnL5MGcN6jL0cf9L871V/m87bX4qSzzOv30PR/6nAu9zvQeQIpIsxNIqyGfmX0N9AImA0nA3EBObmYTgIeBSOAJ59z9NbY/BJzpX4wFOjrnEgKOXuplyeYCbnxhCVuLSrhtQh+uP6NX3YO/OQc7Vh582Ju7xFvfrieMuM6r8kk9ReO6iJwA6kwEZtYbmOZ/7QT+CeCcO7OuY2ocHwk8CozHG7r6WzN73Tm38sA+zrmbq+1/IzD0GH4HOQqfzzHzsw08+N4aOrWN4V8/H8XwbomH71hZAZu/PPiwt3CTtz45E8b90XvY26GPmhyKnGCOdEewGvgMON85tx7AzG4+wv41jQDWO+c2+I99EbgIWFnH/tOAu+txfglA3u5SfvPSd8xfm8c5Azpz/8RBxLeq1r2/dA/88JF35b/uPa9HaWRLbzyTH90Mfc45vu78ItLkHSkRXAJMBeaZ2bvAi3g9iwOVDGyptpwNnFLbjmbWDegBfFzH9uvwnlOQlpZWjxDC2+frdnLzv5ZStL+c+y4ewOWnpHkTwJfuhpWvea8Nn3o9UmMSvIe8fc+FXuOgZetQhy8ijaTOROCcexV41czi8K7kbwI6mtljwCvOufcbMI6pwJwDQ13XEstMYCZAZmamq20fOai80sf/fLiWv3/yA706tOaZq0fQt1Mb2PwVLHkWVrziDUuQ0A1Ovtp72Js2Sm3sRcJUIA+L9wLPA8+bWSIwCa8l0dESQQ6QWm05xb+uNlOBXx01Wjmq7IJ9zHhxKYs2FTAlM5W7x7YjduX/wUvPQv56aNEaBlwCQ6/w2vqrvl8k7NXrEtA5V4B3ZT4zgN2/BdLNrAdeApgKXFZzJ/84RonAl/WJRQ737vdbuW3OMiJcBf8avZMRBbPhrx944+yknQo/usUb3kHVPiJSTdDqApxzFWZ2A/AeXvPRWc65FWZ2L7DQOfe6f9epwIsHei5L/ZWUV/Kfb63iq6+/4N74L7nA5hP5dT607gynzYAhl0PSSaEOU0SaKGtu5W9mZqZbuHDh0XcMExu25PLG839j9N53GRLxAy4iGutzjlf102us6v1FBAAzW+Scy6xtm0qJ5sjnw236nE0fzqRL9nvMsDL2JKbDyP/CBk2BuKRQRygizYgSQXNSlA1LX8C35FkiCrNo51rxedx4hl18I+3TR+rBr4gcEyWCpq6i1Ovpu/gZ+OFjwLEkYiDPlv+S3qMv47qzBmiSeBE5LkoETdW25V6b/2X/hP0FuLYpLOlxLb9Zm0FJ61QevmIoI3q0C3WUInICUCJoSvYXwPI5sOQZ2PqdN5Vgvwso7jeVW75py4er8hnfvxMPXDqIhFhNCSEiDUOJINR8Ptj4qXf1v+oNb7iHzoPgnAdg4KV8tc0x48UlFOwt4N8vzODKUd28YSJERBqIEkGoFGyCpc/D0uegaIs31s/wq2Do5dBlMBWVPv768Xr++vE6urePY9ZVJ5PR9RgmjRcROQolgsa2aQF8cr93F4B5bf3H3+uN9xPtzQ62tWg/M15cyjcbdzFxWAr3XpRBXEv9U4lIcKh0aUyr34aXfgpxHeHM38OQaRCfcsguH67czq1zvqOswsdfJg/mkmEpdZxMRKRhKBE0luVz4OXroOsQuHwOxB7a4qe0opL731nNk19kkdG1LX+dNpSeHTQmkIgEnxJBY1g8G17/NXQ7FS77J7Rsc8jmjTv3csPzi1mRW8z007pzxzl9jz6HsIhIA1EiCLav/gHv3g4nnQWTn4EWsYdsfmVJNr9/5XuioyJ4/MpMxvfvFKJARSRcKREE0/wH4eP/gL7nw6WzIKpl1aa9pRX88bUVzF2czYju7Xh42hC6xLcKYbAiEq6UCILBOfjoXvj8LzBoClz090NGAV2RW8SNLywha+deZoxL58axJxEVGRHCgEUknCkRNDSfD967E77+h9cv4LyHIOJgIf/mslxu+dd3JMZG89w1IxnVq33oYhURQYmgYfkq4Y1fe72ER90AZ993yIigu0vK+cOr39O/S1tmXXUy7eI0TISIhJ4SQUOpLIdXfg7fz4XRt8OYOw8bFvrxzzZSsK+c2T8boCQgIk2GEkFDKC+BOdO94aLH3+tND1lD3u5SnvhsA+cN6sLAFA0VISJNhxLB8SrbCy9eBhs+gXMfhBHX1rrbo/PWU1rh4zfjezdufCIiR6FEcDxKiuC5yZD9DVz8GAy5rNbdtuzax3Nfb2JyZqp6C4tIk6NEcKz27YJnfgLbv/f6CGT8pM5dH/pgLRFmzBiX3ogBiogERongWOzeDs9cDPk/wNTnofeP69x19bZiXlmaw8/P6EXn+JjGi1FEJEBKBPVVuAVmX+glg8tfgp6jj7j7A++uoU3LKH4xulcjBSgiUj/qzlof+T/Ak+fA3ny48tWjJoFvs3bx0eodXD+mF/Gx0Y0To4hIPemOIFA7VsHsi8BXAVe9AV0GH3F35xz/753VdGzTkumn9mikIEVE6k93BIHIXQpPngsYXPX2UZMAwLw1O1i4qYBfj0unVQsNKS0iTZcSwdFs/hqevgBatIafvQMd+x71EJ/P8ad319C9fSxTTk5thCBFRI6dEsGRbPjEax0U18FLAu16BnTYa9/lsHrbbn5zdh+iNaqoiDRxKqXqsuZdr7NYYneY/s5hcwvXpazCx5/fX0tG17acN7BLcGMUEWkASgS1+f5l+Ofl0Kk/XPUWtAl81rAXvtlMdsF+bpvQl4gIO/oBIiIhpkRQ05LnYO7VkHIyXPn6YZPMH8ne0gr++vE6RvZsxxnpSUEMUkSk4SgRVPfN4/DaL6HHaPi3uRDTtl6H/9/nG9m5p4zbJ/TFTHcDItI8KBEc8PlD8Pat0Oc8uOyf0CKuXofv2lvGzPkb+HFGJ4amJQYpSBGRhqcOZc7BvP+E+Q/AgEvhJ/+AyPr3Av77vPXsK6vg1rP7BCFIEZHgCeodgZlNMLM1ZrbezO6oY5/JZrbSzFaY2fPBjOcwzsF7v/OSwNAr4JKZx5QEcgr3M/urTUwclkJ6pzZBCFREJHiCdkdgZpHAo8B4IBv41sxed86trLZPOnAncJpzrsDMOgYrnsP4KuHNm2Hx03DK9fDj/z5kkvn6ePjDtQDcpElnRKQZCuYdwQhgvXNug3OuDHgRuKjGPtcCjzrnCgCcczuCGM9BlRXe/MKLn4bTb4UJ9x9zEli3fTdzFmVz5chuJCe0auBARUSCL5iJIBnYUm0527+uut5AbzP7wsy+MrMJtZ3IzK4zs4VmtjAvL+/4oqoohZd+CstfgnF/hHF/OGyS+fp48P01xLaI4pdnnnR8cYmIhEioWw1FAenAGGAa8LiZJdTcyTk30zmX6ZzL7NChw7F/Wtk+eGEqrH4TzvkTnP6bYz8XsGRzAe+t2M51Z/SkXVyL4zqXiEioBDMR5ADVR1xL8a+rLht43TlX7pzbCKzFSwwNr6QYnp3ojR904d/glJ8f1+mcc/y/d1fTPq4FV/9Iw0yLSPMVzETwLZBuZj3MrAUwFXi9xj6v4t0NYGZJeFVFG4ISzRcPe5PMT3wChl1x3Kf7bN1OvtqwixvHnkRcS7XCFZHmK2glmHOuwsxuAN4DIoFZzrkVZnYvsNA597p/29lmthKoBH7rnMsPSkCjb4f08ZA28rhP5fN5dwMpia247JRuDRCciEjoBPVS1jn3NvB2jXV/rPbeAbf4X8EV1aJBkgDAW8u3siK3mIemDKZFVKgfs4iEVnl5OdnZ2ZSUlIQ6FAFiYmJISUkhOjrwPlGq06in8koff35/DX07t+HCwTUbQYmEn+zsbNq0aUP37t01xlaIOefIz88nOzubHj0Cf3apy9l6+tfCLWTl7+O3P+5DpIaZFqGkpIT27dsrCTQBZkb79u3rfXemRFAP+8sqefjDdWR2S2Rs38brBC3S1CkJNB3H8m+hRFAPTy7YyI7dpdx+joaZFpEThxJBgIr2lfOPT35gXN+OnNw98MlqRESaOiWCAD326Q/sLq3g1h9rmGmRcFVRURHqEIJCrYYCsK2ohCe/2MjFQ5Lp16V+s5aJhJN/f2MFK3OLG/Sc/bu25e4LMo6638UXX8yWLVsoKSlhxowZXHfddbz77rvcddddVFZWkpSUxEcffcSePXu48cYbWbhwIWbG3XffzcSJE2ndujV79uwBYM6cObz55ps89dRTXHXVVcTExLBkyRJOO+00pk6dyowZMygpKaFVq1Y8+eST9OnTh8rKSm6//XbeffddIiIiuPbaa8nIyOCRRx7h1VdfBeCDDz7g73//O6+88kqDfkfHS4kgAA9/tA6fc9yiYaZFmqxZs2bRrl079u/fz8knn8xFF13Etddey/z58+nRowe7du0C4D/+4z+Ij49n+fLlABQUFBz13NnZ2SxYsIDIyEiKi4v57LPPiIqK4sMPP+Suu+5i7ty5zJw5k6ysLJYuXUpUVBS7du0iMTGRX/7yl+Tl5dGhQweefPJJfvaznwX1ezgWSgRHsSFvD/9auIUrRnYjtV1sqMMRadICuXIPlkceeaTqSnvLli3MnDmTM844o6o9fbt23rO9Dz/8kBdffLHquMTEo08tO2nSJCIjIwEoKiripz/9KevWrcPMKC8vrzrv9ddfT1RU1CGfd8UVV/Dss88yffp0vvzyS2bPnt1Av3HDUSI4ij9/sJaWURH8SsNMizRZn3zyCR9++CFffvklsbGxjBkzhiFDhrB69eqAz1G9JWDNdvhxcQfnMP/DH/7AmWeeySuvvEJWVhZjxow54nmnT5/OBRdcQExMDJMmTapKFE2JHhYfwfLsIt5atpVrftSDDm1ahjocEalDUVERiYmJxMbGsnr1ar766itKSkqYP38+GzduBKiqGho/fjyPPvpo1bEHqoY6derEqlWr8Pl8R6zDLyoqIjnZG1Xgqaeeqlo/fvx4/vd//7fqgfKBz+vatStdu3blvvvuY/r06Q33SzcgJYIj+NN7q0mMjeaaM3qGOhQROYIJEyZQUVFBv379uOOOOxg5ciQdOnRg5syZXHLJJQwePJgpU6YA8Pvf/56CggIGDBjA4MGDmTdvHgD3338/559/PqeeeipdunSp87Nuu+027rzzToYOHXpIK6JrrrmGtLQ0Bg0axODBg3n++YNTsF9++eWkpqbSr1+/IH0Dx8e8cd+aj8zMTLdw4cKgf86C9Tu57Imv+f15/bjmdCUCkbqsWrWqyRZwTcUNN9zA0KFDufrqqxvl82r7NzGzRc65zNr2b3qVVU3AgUlnusbH8G8jNcy0iBy74cOHExcXx5///OdQh1InJYJavLdiG99lF/GnSwcREx0Z6nBEpBlbtGhRqEM4Kj0jqKGi0scD763hpI6tuWSohpkWkROfEkENLy/O4Ye8vdx6dh+iIvX1iMiJTyVdNSXllTz04VqGpCbw44xOoQ5HRKRRKBFU88yXm9haVMLtEzTMtIiEDyUCv+KSch79ZD1n9O7AqF7tQx2OiEijUSLwe3z+Bgr3lXObhpkWOaG1bt061CE0OWo+CuzYXcITn23k/EFdGJAcH+pwRJqvd+6Abcsb9pydB8I59zfsOZuAioqKJjPukO4IgL99vJ7ySh+/OVt3AyLNzR133HHI2EH33HMP9913H+PGjWPYsGEMHDiQ1157LaBz7dmzp87jZs+eXTV8xBVXXAHA9u3b+clPfsLgwYMZPHgwCxYsICsriwEDBlQd9+CDD3LPPfcAMGbMGG666SYyMzN5+OGHeeONNzjllFMYOnQoZ511Ftu3b6+KY/r06QwcOJBBgwYxd+5cZs2axU033VR13scff5ybb775WL+2QznnmtVr+PDhriFt2rnX9brzLXfXy8sa9Lwi4WLlypUh/fzFixe7M844o2q5X79+bvPmza6oqMg551xeXp7r1auX8/l8zjnn4uLi6jxXeXl5rcd9//33Lj093eXl5TnnnMvPz3fOOTd58mT30EMPOeecq6iocIWFhW7jxo0uIyOj6pwPPPCAu/vuu51zzo0ePdr94he/qNq2a9euqrgef/xxd8sttzjnnLvtttvcjBkzDtlv9+7drmfPnq6srMw559yoUaPcsmW1l1u1/ZsAC10d5WrTuC8Job98sIaoSOPX49JDHYqIHIOhQ4eyY8cOcnNzycvLIzExkc6dO3PzzTczf/58IiIiyMnJYfv27XTu3PmI53LOcddddx123Mcff8ykSZNISkoCDs418PHHH1fNLxAZGUl8fPxRJ7o5MPgdeBPeTJkyha1bt1JWVlY1d0JdcyaMHTuWN998k379+lFeXs7AgQPr+W3VLqwTwcrcYl77LpfrR/eiU9uYUIcjIsdo0qRJzJkzh23btjFlyhSee+458vLyWLRoEdHR0XTv3v2wOQZqc6zHVRcVFYXP56taPtLcBjfeeCO33HILF154IZ988klVFVJdrrnmGv7rv/6Lvn37NuiQ1mH9jOCB91bTpmUU15/RK9ShiMhxmDJlCi+++CJz5sxh0qRJFBUV0bFjR6Kjo5k3bx6bNm0K6Dx1HTd27Fheeukl8vPzgYNzDYwbN47HHnsMgMrKSoqKiujUqRM7duwgPz+f0tJS3nzzzSN+3oG5DZ5++umq9XXNmXDKKaewZcsWnn/+eaZNmxbo13NUYZsIvt6Qz7w1efxizEnEx0aHOhwROQ4ZGRns3r2b5ORkunTpwuWXX87ChQsZOHAgs2fPpm/fvgGdp67jMjIy+N3vfsfo0aMZPHgwt9xyCwAPP/ww8+bNY+DAgQwfPpyVK1cSHR3NH//4R0aMGMH48eOP+Nn33HMPkyZNYvjw4VXVTlD3nAkAkydP5rTTTgtois1AheV8BM45Lv3Hl2QX7OOTW8+kVQuNMCpyrDQfQeM6//zzufnmmxk3blyd+9R3PoKwvCP4aNUOFm0qYMa43koCItIsFBYW0rt3b1q1anXEJHAswu5hcaXP8cB7a+iRFMekzJRQhyMiIbB8+fKqvgAHtGzZkq+//jpEER1dQkICa9euDcq5wy4RvLokhzXbd/O3y4YSrWGmRRqEc65ZDdQ4cOBAli5dGuowguJYqvvDqiQsrajkLx+sZUByW84dUPfk1CISuJiYGPLz84+pAJKG5ZwjPz+fmJj6NYcPqzuC57/eTE7hfu6fOJCIiOZz9SLSlKWkpJCdnU1eXl6oQxG8xJySUr9q77BJBHtKK/jbx+s5tVd7fnRS0tEPEJGAREdHV/WIleYpqFVDZjbBzNaY2Xozu6OW7VeZWZ6ZLfW/rglWLLM+30j+3jJu06QzIiKHCNodgZlFAo8C44Fs4Fsze905t7LGrv90zt0QrDgOmHpyKkmtWzIkNSHYHyUi0qwE845gBLDeObfBOVcGvAhcFMTPO6KObWO47JS0UH28iEiTFcxnBMnAlmrL2cAptew30czOANYCNzvnttTcwcyuA67zL+4xszXHGFMSsPMYjz0R6fs4lL6Pg/RdHOpE+D661bUh1A+L3wBecM6VmtnPgaeBsTV3cs7NBGYe74eZ2cK6uliHI30fh9L3cZC+i0Od6N9HMKuGcoDUassp/nVVnHP5zrlS/+ITwPAgxiMiIrUIZiL4Fkg3sx5m1gKYCrxefQczq96r60JgVRDjERGRWgStasg5V2FmNwDvAZHALOfcCjO7F2/KtNeBX5vZhUAFsAu4Kljx+B139dIJRt/HofR9HKTv4lAn9PfR7IahFhGRhhVWYw2JiMjhlAhERMJc2CSCow13ES7MLNXM5pnZSjNbYWYzQh1TU2BmkWa2xMzqnmA2TJhZgpnNMbPVZrbKzEaFOqZQMbOb/X8n35vZC2ZWv2E9m4mwSATVhrs4B+gPTDOz/qGNKmQqgN845/oDI4FfhfF3Ud0M1GrtgIeBd51zfYHBhOn3YmbJwK+BTOfcALxGL1NDG1VwhEUioIkNdxFKzrmtzrnF/ve78f7Ik0MbVWiZWQpwHl5flrBmZvHAGcD/ATjnypxzhSENKrSigFZmFgXEArkhjicowiUR1DbcRVgXfgBm1h0YCjTd+fkax/8AtwG+EMfRFPQA8oAn/VVlT5hZXKiDCgXnXA7wILAZ2AoUOefeD21UwREuiUBqMLPWwFzgJudccajjCRUzOx/Y4ZxbFOpYmogoYBjwmHNuKLAXCMtnamaWiFdz0APoCsSZ2b+FNqrgCJdEcNThLsKJmUXjJYHnnHMvhzqeEDsNuNDMsvCqDMea2bOhDSmksoFs59yBu8Q5eIkhHJ0FbHTO5TnnyoGXgVNDHFNQhEsiOOpwF+HCvFl5/g9Y5Zz7S6jjCTXn3J3OuRTnXHe8/xcfO+dOyKu+QDjntgFbzKyPf9U4oOYcIuFiMzDSzGL9fzfjOEEfnId69NFGUddwFyEOK1ROA64AlpvZUv+6u5xzb4cuJGlibgSe8180bQCmhziekHDOfW1mc4DFeK3tlnCCDjWhISZERMJcuFQNiYhIHZQIRETCnBKBiEiYUyIQEQlzSgQiImFOiUCkBjOrNLOl1V4N1rPWzLqb2fcNdT6RhhAW/QhE6mm/c25IqIMQaSy6IxAJkJllmdmfzGy5mX1jZif513c3s4/NbJmZfWRmaf71nczsFTP7zv86MDxBpJk97h/n/n0zaxWyX0oEJQKR2rSqUTU0pdq2IufcQOBveKOWAvwVeNo5Nwh4DnjEv/4R4FPn3GC88XoO9GZPBx51zmUAhcDEoP42IkehnsUiNZjZHudc61rWZwFjnXMb/AP3bXPOtTeznUAX51y5f/1W51ySmeUBKc650mrn6A584JxL9y/fDkQ75+5rhF9NpFa6IxCpH1fH+/oorfa+Ej2rkxBTIhCpnynVfn7pf7+Ag1MYXg585n//EfALqJoTOb6xghSpD12JiByuVbWRWcGbv/dAE9JEM1uGd1U/zb/uRrwZvX6LN7vXgdE6ZwAzzexqvCv/X+DNdCXSpOgZgUiA/M8IMp1zO0Mdi0hDUtWQiEiY0x2BiEiY0x2BiEiYUyIQEQlzSgQiImFOiUBEJMwpEYiIhLn/D/+XwZjgBwxqAAAAAElFTkSuQmCC\n" + "image/png": "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1FMHpmC//PLLGTx4MOPGdc4aBQ06dxjPLivk23/8gF9cNplLpuZ22O+KdBVr1qzptAVcZ3H99dczZcoUrr766g75vdb+m2jQuaNUUV3Hvy1aywmDe/GlE1rOsikicnjTpk0jIyODn//85/EOpU1KBIfwq8Ub2LW3mt9eMY0EdRcVkaOwbNmyeIdwWGojaMOW4kp+9+YmLpkyiClDDt+9TESkq1IiaMO/vriapETj1vPGxjsUEZGYUiJoxVsbdvPyqp1888yR9O+ZFu9wRERiSomghbr6Bu5ZuJrcrG5c/bnoZ/gREemqlAhaeHppAWt37OV7XxxHWnJivMMREYk5JYJmyipr+MUr6zh5eDbnTugf73BEJAYyMzPjHUKno+6jzfz7q+sp31/LnbMmaOo9kaPx0m2w46P2PWb/SXD+fe17zE6grq6u04w7pDuCiPU79/Jf73zCvJOGMH5gj3iHIyJRuu222w4aO+juu+/m3nvvZebMmUydOpVJkybx5z//OapjVVRUtPm9xx9/vGn4iCuuuAKAnTt38uUvf5nJkyczefJk3nrrLTZv3szEiRObvvezn/2Mu+++G4AZM2Zw0003kZeXxwMPPMALL7zA9OnTmTJlCmeffTY7d+5siuOqq65i0qRJHH/88Tz77LM88sgj3HTTTU3Hffjhh7n55puP9rQdzN271GvatGne3hoaGvwrv3vHJ921yHfvrWr344scy1avXh3X31++fLmffvrpTevjxo3zLVu2eHl5ubu7FxUV+YgRI7yhocHd3TMyMto8Vm1tbavfW7lypY8aNcqLiorc3b24uNjd3S+77DK///773d29rq7Oy8rKfNOmTT5hwoSmY/70pz/1u+66y93dzzjjDP/617/e9FlJSUlTXA8//LDfcsst7u5+6623+o033njQfnv37vXhw4d7TU2Nu7ufcsop/uGHH7b6d7T23wTI9zbK1c5xXxJnr6/dxZvrd3PnrPH0zkyNdzgicgSmTJnCrl272LZtG0VFRWRlZdG/f39uvvlmlixZQkJCAlu3bmXnzp3073/otj9354477vjU915//XVmz55Nnz7BXCSNcw28/vrrTfMLJCYm0rNnz8NOdNM4+B0EE97MmTOH7du3U1NT0zR3QltzJpx11lksXLiQcePGUVtby6RJk47wbLUu9Imgpq6BHy5czYicDK44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\n" }, "metadata": { "needs_background": "light" @@ -486,7 +489,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.7268999814987183\n" + "0.7293000221252441\n" ] } ], diff --git a/CV_Classification/Convolutional Neural Network (CNN).md b/CV_Classification/Convolutional Neural Network (CNN).md index 1029efe..1e01373 100644 --- a/CV_Classification/Convolutional Neural Network (CNN).md +++ b/CV_Classification/Convolutional Neural Network (CNN).md @@ -1,6 +1,8 @@ -我自己写的代码和该教程略有不一样,有两处改动,第一个地方是用归一化(均值为0,方差为1)代替数值缩放([0, 1]),代替的理由是能提升准确率 +我自己写的代码和该教程略有不一样,有三处改动,第一个地方是用归一化(均值为0,方差为1)代替数值缩放([0, 1]),代替的理由是能提升准确率 -第二处改动是对模型训练五次进行acc取平均值,因为keras训练模型会有准确率波动,详细代码见文末链接 +第二处改动是添加了正则化,在Conv2D和Dense Layer中均有添加,可以抑制模型过拟合,提升val_acc + +第三处改动是对模型训练五次进行acc取平均值,因为keras训练模型会有准确率波动,详细代码见文末链接 This tutorial demonstrates training a simple Convolutional Neural Network (CNN) to classify CIFAR images. Because this tutorial uses the Keras Sequential API, creating and training your model will take just a few lines of code. -- GitLab