diff options
author | SIPB | 2024-11-21 18:07:56 +0000 |
---|---|---|
committer | SIPB | 2024-11-21 18:07:56 +0000 |
commit | 3982e8faa53ea26c8274d1106f138187297f2b48 (patch) | |
tree | 819dcc0f24c71d4d28312a846cca82c992dd6b1a | |
parent | c8c1abdd21162762f6e677fd3374a2db585a7efd (diff) |
Make the target embedding learnable
-rw-r--r-- | transformer_shortest_paths.ipynb | 1734 |
1 files changed, 1521 insertions, 213 deletions
diff --git a/transformer_shortest_paths.ipynb b/transformer_shortest_paths.ipynb index 3235657..7a1a2e4 100644 --- a/transformer_shortest_paths.ipynb +++ b/transformer_shortest_paths.ipynb @@ -22,8 +22,7 @@ }, { "cell_type": "code", - "execution_count": 31, - "execution_state": "idle", + "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -54,8 +53,7 @@ }, { "cell_type": "code", - "execution_count": 32, - "execution_state": "idle", + "execution_count": 2, "metadata": { "id": "lylOX2POPwFL" }, @@ -63,8 +61,8 @@ "source": [ "# VTXS numbers here are inclusive\n", "MIN_VTXS = 3\n", - "MAX_VTXS = 31\n", - "MAX_TUNE_VTXS = 31 # 15\n", + "MAX_VTXS = 8\n", + "MAX_TUNE_VTXS = 8 # 15\n", "AVG_DEG = 2\n", "SEQ_LEN = MAX_VTXS + 1 # means 32 edges, final token is the target vertex\n", "PAD_TOKEN = 0\n", @@ -83,8 +81,7 @@ }, { "cell_type": "code", - "execution_count": 6, - "execution_state": "idle", + "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -204,72 +201,31 @@ }, { "cell_type": "code", - "execution_count": 34, - "execution_state": "idle", + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(tensor([[13, 14, 4, 5, 1, 4, 2, 10, 2, 12, 8, 14, 2, 13, 9, 13, 8, 11,\n", - " 3, 9, 5, 9, 10, 14, 4, 7, 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, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 2],\n", - " [ 7, 10, 12, 13, 15, 17, 4, 15, 3, 11, 1, 19, 8, 18, 8, 19, 1, 3,\n", - " 2, 8, 2, 3, 3, 11, 8, 17, 9, 16, 7, 18, 5, 19, 16, 19, 8, 16,\n", - " 7, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 2],\n", - " [ 1, 6, 3, 4, 4, 6, 1, 6, 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, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 2],\n", - " [ 1, 4, 3, 6, 1, 2, 4, 5, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 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, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 2],\n", - " [ 5, 8, 2, 4, 2, 8, 2, 4, 3, 7, 4, 7, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 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, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 2]], device='cuda:0'),\n", - " tensor([5., 2., 6., 1., 8.], device='cuda:0', dtype=torch.bfloat16),\n", + "(tensor([[1, 2, 4, 5, 3, 4, 1, 7, 1, 2, 1, 4, 0, 0, 0, 0, 2],\n", + " [4, 7, 5, 8, 1, 3, 6, 7, 3, 5, 4, 6, 2, 7, 0, 0, 2],\n", + " [3, 5, 1, 3, 4, 5, 1, 4, 1, 5, 0, 0, 0, 0, 0, 0, 2],\n", + " [3, 5, 2, 5, 2, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2],\n", + " [2, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2]], device='cuda:0'),\n", + " tensor([1., 8., 5., 1., 1.], device='cuda:0', dtype=torch.bfloat16),\n", " tensor([[False, False, False, False, False, False, False, False, False, False,\n", - " False, False, False, False, False, False, False, False, False, False,\n", - " False, False, False, False, False, False, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, False],\n", - " [False, False, False, False, False, False, False, False, False, False,\n", - " False, False, False, False, False, False, False, False, False, False,\n", - " False, False, False, False, False, False, False, False, False, False,\n", - " False, False, False, False, False, False, False, False, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, False],\n", - " [False, False, False, False, False, False, False, False, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, False],\n", + " False, False, True, True, True, True, False],\n", " [False, False, False, False, False, False, False, False, False, False,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, False],\n", + " False, False, False, False, True, True, False],\n", " [False, False, False, False, False, False, False, False, False, False,\n", - " False, False, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, False]], device='cuda:0'))" + " True, True, True, True, True, True, False],\n", + " [False, False, False, False, False, False, False, False, True, True,\n", + " True, True, True, True, True, True, False],\n", + " [False, False, False, False, True, True, True, True, True, True,\n", + " True, True, True, True, True, True, False]], device='cuda:0'))" ] }, - "execution_count": 34, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -280,40 +236,39 @@ }, { "cell_type": "code", - "execution_count": 35, - "execution_state": "idle", + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(array([320., 0., 309., 0., 265., 0., 179., 0., 118., 0., 89.,\n", - " 0., 69., 0., 41., 0., 0., 39., 0., 30., 0., 30.,\n", - " 0., 31., 0., 26., 0., 28., 0., 27., 0., 0., 20.,\n", - " 0., 30., 0., 30., 0., 26., 0., 20., 0., 31., 0.,\n", - " 34., 0., 23., 0., 0., 35., 0., 29., 0., 17., 0.,\n", - " 26., 0., 33., 0., 35., 0., 32., 0., 26.]),\n", - " array([ 1. , 1.46875, 1.9375 , 2.40625, 2.875 , 3.34375,\n", - " 3.8125 , 4.28125, 4.75 , 5.21875, 5.6875 , 6.15625,\n", - " 6.625 , 7.09375, 7.5625 , 8.03125, 8.5 , 8.96875,\n", - " 9.4375 , 9.90625, 10.375 , 10.84375, 11.3125 , 11.78125,\n", - " 12.25 , 12.71875, 13.1875 , 13.65625, 14.125 , 14.59375,\n", - " 15.0625 , 15.53125, 16. , 16.46875, 16.9375 , 17.40625,\n", - " 17.875 , 18.34375, 18.8125 , 19.28125, 19.75 , 20.21875,\n", - " 20.6875 , 21.15625, 21.625 , 22.09375, 22.5625 , 23.03125,\n", - " 23.5 , 23.96875, 24.4375 , 24.90625, 25.375 , 25.84375,\n", - " 26.3125 , 26.78125, 27.25 , 27.71875, 28.1875 , 28.65625,\n", - " 29.125 , 29.59375, 30.0625 , 30.53125, 31. ]),\n", + "(array([683., 0., 0., 0., 0., 0., 0., 0., 0., 427., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 256., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 161., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 140., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 125., 0., 0., 0., 0., 0., 0., 0., 0., 139.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 117.]),\n", + " array([1. , 1.109375, 1.21875 , 1.328125, 1.4375 , 1.546875,\n", + " 1.65625 , 1.765625, 1.875 , 1.984375, 2.09375 , 2.203125,\n", + " 2.3125 , 2.421875, 2.53125 , 2.640625, 2.75 , 2.859375,\n", + " 2.96875 , 3.078125, 3.1875 , 3.296875, 3.40625 , 3.515625,\n", + " 3.625 , 3.734375, 3.84375 , 3.953125, 4.0625 , 4.171875,\n", + " 4.28125 , 4.390625, 4.5 , 4.609375, 4.71875 , 4.828125,\n", + " 4.9375 , 5.046875, 5.15625 , 5.265625, 5.375 , 5.484375,\n", + " 5.59375 , 5.703125, 5.8125 , 5.921875, 6.03125 , 6.140625,\n", + " 6.25 , 6.359375, 6.46875 , 6.578125, 6.6875 , 6.796875,\n", + " 6.90625 , 7.015625, 7.125 , 7.234375, 7.34375 , 7.453125,\n", + " 7.5625 , 7.671875, 7.78125 , 7.890625, 8. ]),\n", " <BarContainer object of 64 artists>)" ] }, - "execution_count": 35, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] @@ -328,40 +283,44 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(array([1289., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 477., 0., 0., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 192., 0., 0., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 55., 0., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 28., 0., 0.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 5.,\n", - " 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", - " 2.]),\n", - " array([1. , 1.09375, 1.1875 , 1.28125, 1.375 , 1.46875, 1.5625 ,\n", - " 1.65625, 1.75 , 1.84375, 1.9375 , 2.03125, 2.125 , 2.21875,\n", - " 2.3125 , 2.40625, 2.5 , 2.59375, 2.6875 , 2.78125, 2.875 ,\n", - " 2.96875, 3.0625 , 3.15625, 3.25 , 3.34375, 3.4375 , 3.53125,\n", - " 3.625 , 3.71875, 3.8125 , 3.90625, 4. , 4.09375, 4.1875 ,\n", - " 4.28125, 4.375 , 4.46875, 4.5625 , 4.65625, 4.75 , 4.84375,\n", - " 4.9375 , 5.03125, 5.125 , 5.21875, 5.3125 , 5.40625, 5.5 ,\n", - " 5.59375, 5.6875 , 5.78125, 5.875 , 5.96875, 6.0625 , 6.15625,\n", - " 6.25 , 6.34375, 6.4375 , 6.53125, 6.625 , 6.71875, 6.8125 ,\n", - " 6.90625, 7. ]),\n", + "(array([1.488e+03, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n", + " 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n", + " 4.340e+02, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n", + " 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n", + " 0.000e+00, 1.030e+02, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n", + " 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n", + " 0.000e+00, 0.000e+00, 1.700e+01, 0.000e+00, 0.000e+00, 0.000e+00,\n", + " 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n", + " 0.000e+00, 0.000e+00, 0.000e+00, 5.000e+00, 0.000e+00, 0.000e+00,\n", + " 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n", + " 0.000e+00, 0.000e+00, 0.000e+00, 1.000e+00]),\n", + " array([1. , 1.078125, 1.15625 , 1.234375, 1.3125 , 1.390625,\n", + " 1.46875 , 1.546875, 1.625 , 1.703125, 1.78125 , 1.859375,\n", + " 1.9375 , 2.015625, 2.09375 , 2.171875, 2.25 , 2.328125,\n", + " 2.40625 , 2.484375, 2.5625 , 2.640625, 2.71875 , 2.796875,\n", + " 2.875 , 2.953125, 3.03125 , 3.109375, 3.1875 , 3.265625,\n", + " 3.34375 , 3.421875, 3.5 , 3.578125, 3.65625 , 3.734375,\n", + " 3.8125 , 3.890625, 3.96875 , 4.046875, 4.125 , 4.203125,\n", + " 4.28125 , 4.359375, 4.4375 , 4.515625, 4.59375 , 4.671875,\n", + " 4.75 , 4.828125, 4.90625 , 4.984375, 5.0625 , 5.140625,\n", + " 5.21875 , 5.296875, 5.375 , 5.453125, 5.53125 , 5.609375,\n", + " 5.6875 , 5.765625, 5.84375 , 5.921875, 6. ]),\n", " <BarContainer object of 64 artists>)" ] }, - "execution_count": 7, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] @@ -376,7 +335,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -405,7 +364,6 @@ { "cell_type": "code", "execution_count": 8, - "execution_state": "idle", "metadata": { "id": "tLOWhg_CeWzH" }, @@ -428,10 +386,9 @@ "\n", " def forward(self, src, key_padding_mask):\n", " batch_sz = src.size(0)\n", - " embed = torch.cat((self.embedding(src[:,:-1:2]), self.embedding(src[:,1::2])), dim=2)\n", - " last_dude = torch.cat((self.embedding(src[:,-1:]), torch.ones((batch_sz, 1, self.model_dim // 2), dtype=torch.bfloat16, device=device)), dim=2)\n", - " final_embed = torch.cat((embed, last_dude), dim=1)\n", - " output = self.transformer_encoder(final_embed, src_key_padding_mask=key_padding_mask[:, ::2])\n", + " src = torch.cat((src, torch.full((batch_sz, 1), MAX_VTXS + 1, device=device)), dim=1)\n", + " embed = torch.cat((self.embedding(src[:,::2]), self.embedding(src[:,1::2])), dim=2)\n", + " output = self.transformer_encoder(embed, src_key_padding_mask=key_padding_mask[:, ::2])\n", " return self.fc_out(output[:, -1, :])" ] }, @@ -446,8 +403,7 @@ }, { "cell_type": "code", - "execution_count": 9, - "execution_state": "idle", + "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -467,12 +423,12 @@ ], "source": [ "# PARAMS\n", - "VOCAB_SIZE = 1 + MAX_VTXS # one more than the max number of vertices\n", + "VOCAB_SIZE = 1 + MAX_VTXS + 1 # pad plus max number of vertices plus target token\n", "MODEL_DIM = 64 # Dimension of model (embedding and transformer)\n", "NEPOCHS = 1000\n", "BSZ = 2**15 # Batch size\n", "BPE = 16 # Batches per epoch\n", - "NHEADS = 4\n", + "NHEADS = 8\n", "NLAYERS = 16\n", "DROPOUT = 0 # 0.2\n", "model = TransformerModel(input_dim=VOCAB_SIZE, model_dim=MODEL_DIM,\n", @@ -483,17 +439,22 @@ "\n", "trainable_params = sum(p.numel() for p in model.parameters() if p.requires_grad)\n", "print(f\"Training data: {NEPOCHS*BSZ*BPE//10**6}M\")\n", - "print(f\"Trainable parameters in the model: {trainable_params//1000}K\")" + "print(f\"Trainable parameters in the model: {trainable_params//1000}K\")\n", + "\n", + "train_err = []\n", + "test_err = []\n", + "\n", + "# clear loss file\n", + "open('loss', 'w').close()" ] }, { "cell_type": "code", - "execution_count": 15, - "execution_state": "idle", + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ - "LR = 1e-4\n", + "LR = 2e-6\n", "WD = 0 # 1e-5\n", "\n", "criterion = nn.MSELoss()\n", @@ -502,7 +463,7 @@ }, { "cell_type": "code", - "execution_count": 121, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -531,7 +492,6 @@ { "cell_type": "code", "execution_count": 12, - "execution_state": "idle", "metadata": {}, "outputs": [], "source": [ @@ -557,22 +517,7 @@ }, { "cell_type": "code", - "execution_count": 13, - "execution_state": "idle", - "metadata": {}, - "outputs": [], - "source": [ - "train_err = []\n", - "test_err = []\n", - "\n", - "# clear loss file\n", - "open('loss', 'w').close()" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "execution_state": "idle", + "execution_count": 28, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -586,161 +531,217 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:10<00:00, 1.50it/s]\n" + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 2.97it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/1000 \t Train Err: 1.1650 \t Test Err: 1.1562, Test short loss: 0.0006\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.07it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 1/1000 \t Train Err: 0.1735 \t Test Err: 0.1543, Test short loss: 0.0016\n" + "Epoch 2/1000 \t Train Err: 1.1616 \t Test Err: 1.1797, Test short loss: 0.0006\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:10<00:00, 1.51it/s]\n" + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.06it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 2/1000 \t Train Err: 0.1473 \t Test Err: 0.1348, Test short loss: 0.0017\n" + "Epoch 3/1000 \t Train Err: 1.1660 \t Test Err: 1.1562, Test short loss: 0.0006\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:10<00:00, 1.51it/s]\n" + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.02it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 3/1000 \t Train Err: 0.1230 \t Test Err: 0.1133, Test short loss: 0.0016\n" + "Epoch 4/1000 \t Train Err: 1.1621 \t Test Err: 1.1719, Test short loss: 0.0007\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:10<00:00, 1.51it/s]\n" + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.02it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 4/1000 \t Train Err: 0.1041 \t Test Err: 0.0952, Test short loss: 0.0016\n" + "Epoch 5/1000 \t Train Err: 1.1597 \t Test Err: 1.1562, Test short loss: 0.0006\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:10<00:00, 1.52it/s]\n" + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.00it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 5/1000 \t Train Err: 0.0896 \t Test Err: 0.0820, Test short loss: 0.0016\n" + "Epoch 6/1000 \t Train Err: 1.1694 \t Test Err: 1.1406, Test short loss: 0.0007\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:10<00:00, 1.52it/s]\n" + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.02it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 6/1000 \t Train Err: 0.0788 \t Test Err: 0.0752, Test short loss: 0.0016\n" + "Epoch 7/1000 \t Train Err: 1.1660 \t Test Err: 1.1797, Test short loss: 0.0007\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:10<00:00, 1.51it/s]\n" + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.02it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 7/1000 \t Train Err: 0.0718 \t Test Err: 0.0684, Test short loss: 0.0014\n" + "Epoch 8/1000 \t Train Err: 1.1611 \t Test Err: 1.1562, Test short loss: 0.0007\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:10<00:00, 1.53it/s]\n" + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.02it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 8/1000 \t Train Err: 0.0639 \t Test Err: 0.0601, Test short loss: 0.0013\n" + "Epoch 9/1000 \t Train Err: 1.1665 \t Test Err: 1.1328, Test short loss: 0.0006\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:10<00:00, 1.52it/s]\n" + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.02it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 9/1000 \t Train Err: 0.0585 \t Test Err: 0.0562, Test short loss: 0.0011\n" + "Epoch 10/1000 \t Train Err: 1.1685 \t Test Err: 1.1797, Test short loss: 0.0006\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:10<00:00, 1.52it/s]\n" + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.02it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 10/1000 \t Train Err: 0.0535 \t Test Err: 0.0520, Test short loss: 0.0011\n" + "Epoch 11/1000 \t Train Err: 1.1582 \t Test Err: 1.1484, Test short loss: 0.0007\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:10<00:00, 1.52it/s]\n" + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.02it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 11/1000 \t Train Err: 0.0492 \t Test Err: 0.0481, Test short loss: 0.0010\n" + "Epoch 12/1000 \t Train Err: 1.1680 \t Test Err: 1.1641, Test short loss: 0.0007\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - " 12%|█████▌ | 2/16 [00:01<00:12, 1.12it/s]\n" + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.02it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 13/1000 \t Train Err: 1.1582 \t Test Err: 1.1562, Test short loss: 0.0006\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.01it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 14/1000 \t Train Err: 1.1689 \t Test Err: 1.1641, Test short loss: 0.0006\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 16/16 [00:05<00:00, 3.02it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 15/1000 \t Train Err: 1.1670 \t Test Err: 1.1641, Test short loss: 0.0007\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 31%|███████████████████████████████████████████████▌ | 5/16 [00:01<00:04, 2.51it/s]\n" ] }, { @@ -750,7 +751,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[22], line 10\u001b[0m\n\u001b[1;32m 8\u001b[0m output \u001b[38;5;241m=\u001b[39m model(batch_src, batch_padding_mask)\n\u001b[1;32m 9\u001b[0m loss \u001b[38;5;241m=\u001b[39m criterion(output\u001b[38;5;241m.\u001b[39msqueeze(\u001b[38;5;241m1\u001b[39m), batch_labels)\n\u001b[0;32m---> 10\u001b[0m train_loss \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[43mloss\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitem\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;241m/\u001b[39m BPE\n\u001b[1;32m 11\u001b[0m loss\u001b[38;5;241m.\u001b[39mbackward()\n\u001b[1;32m 12\u001b[0m optimizer\u001b[38;5;241m.\u001b[39mstep()\n", + "Cell \u001b[0;32mIn[28], line 10\u001b[0m\n\u001b[1;32m 8\u001b[0m output \u001b[38;5;241m=\u001b[39m model(batch_src, batch_padding_mask)\n\u001b[1;32m 9\u001b[0m loss \u001b[38;5;241m=\u001b[39m criterion(output\u001b[38;5;241m.\u001b[39msqueeze(\u001b[38;5;241m1\u001b[39m), batch_labels)\n\u001b[0;32m---> 10\u001b[0m train_loss \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[43mloss\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitem\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;241m/\u001b[39m BPE\n\u001b[1;32m 11\u001b[0m loss\u001b[38;5;241m.\u001b[39mbackward()\n\u001b[1;32m 12\u001b[0m optimizer\u001b[38;5;241m.\u001b[39mstep()\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } @@ -813,13 +814,12 @@ }, { "cell_type": "code", - "execution_count": 17, - "execution_state": "idle", + "execution_count": 24, "metadata": {}, "outputs": [ { "data": { - "image/png": "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hQoVsiIjIy3ryjbpF1980SpfvryVM2dOy8/Pzypfvrw1ZcqUG35+EUnOYaV3XlNExGYPP/wwJ06c4LfffrO7FBG5w7RGRURERFyWgoqIiIi4LAUVERERcVlaoyIiIiIuSzMqIiIi4rIUVERERMRlKaiIiIiIy1JQEREREZeloCIiIiIuS0FFREREXJaCioiIiLgsBRURERFxWQoqIiIi4rIUVERERMRlKaiIiIiIy1JQEREREZeloCIiIiIuS0FFREREXJaCioiIiLgsBRURERFxWQoqIiIi4rIUVERERMRlKaiIiIiIy1JQEREREZeloCIiIiIuS0FFREREXJaCioiIiLgsBRURERFxWQoqIiIi4rJsDSpxcXEMHDiQIkWK4OvrS7FixXjjjTewLMvOskRERMRFeNj5w0eNGsXUqVP54IMPKF26NJs2baJDhw4EBgbSu3dvO0sTERERF+CwbJy+ePzxxwkJCeH9999PeK1p06b4+voyZ86cZONjYmKIiYlJeB4fH8/JkyfJkycPDofDaXWLiIjIrbMsizNnzhAeHo6b2w1u7lg2Gj58uFWoUCFr586dlmVZ1tatW63g4GBrzpw5KY4fPHiwBeihhx566KGHHlngcfDgwRtmBVtnVOLj43nllVcYPXo07u7uxMXFMXz4cAYMGJDi+OtnVKKioihYsCAHDx4kICDAiZWLiIjIrYqOjiYiIoLTp08TGBiY5lhb16h89NFHzJ07l3nz5lG6dGm2bt3K888/T3h4OJGRkcnGe3t74+3tnez1gIAABRUREZFM5maWbdgaVF588UX69+9Pq1atAChbtiz79+9nxIgRKQYVERERyV5s3Z58/vz5ZIto3N3diY+Pt60mERERcR22zqg0atSI4cOHU7BgQUqXLs0vv/zC2LFj6dixo51liYiIiIuwdTHtmTNnGDhwIEuWLOHYsWOEh4fTunVrBg0ahJeX1w2/Pjo6msDAQKKiorRGRUREMkx8fDyxsbF2l5FpeXp64u7unur76fn329agcrsUVEREJKPFxsayd+9eLUO4Tbly5SI0NDTFBbPp+ffb1ls/IiIirsSyLA4fPoy7uzsRERE3bkYmyViWxfnz5zl27BgAYWFht/X9FFRERESuuHz5MufPnyc8PJwcOXLYXU6m5evrC8CxY8cIDg5O8zbQjSgqioiIXBEXFwdwU+skJW1Xg96lS5du6/soqIiIiFxH58fdvoz6PVRQEREREZeloCIiIiIuS0FFREREkilcuDDjxo2zuwwFldSsWQNRUXZXISIikjaHw5HmY8iQIbf0fTdu3Mizzz6b4fWml7Ynp2DaNOjeHZ54Aj7+GLSNXkREXNXhw4cTrhcuXMigQYPYuXNnwmv+/v4J15ZlERcXh4fHjf/5z5cv3x2oNv30T3AK7r0XPDxg6VIYNcruakRExC6WBefO2fO42b7xoaGhCY/AwEAcDkfC8z///JOcOXOyYsUKKlWqhLe3N2vXrmX37t08+eSThISE4O/vT5UqVVi1alWS73v9rR+Hw8F7771HkyZNyJEjByVKlOCzzz7L6N/yZBRUUlClCkyebK5ffRW+/truikRExA7nz4O/vz2P8+cz7nP079+fkSNHsmPHDsqVK8fZs2dp2LAhq1ev5pdffqF+/fo0atSIAwcOpPl9hg4dSosWLfj1119p2LAhbdu25eTJkxlXaAoUVFLRuTN06WISbevWsG+f3RWJiIjcmtdff506depQrFgxgoKCKF++PF27dqVMmTKUKFGCN954g2LFit1whqR9+/a0bt2a4sWL83//93+cPXuWDRs23NHatUYlDRMnwtatsHEjPPUUrFsHV7oCi4hINpAjB5w9a9/PziiVK1dO8vzs2bMMGTKEzz//nMOHD3P58mUuXLhwwxmVcuXKJVz7+fkREBCQcKbPnaKgkgZvb7OY9t574ZdfzALbGTNADQtFRLIHhwP8/Oyu4vb5Xfch+vXrx8qVK3nzzTcpXrw4vr6+NGvWjNjY2DS/j6enZ5LnDofjjp8yrVs/NxARAQsXmp0/s2aZHUEiIiKZ2bp162jfvj1NmjShbNmyhIaGss9F1zgoqNyERx+FkSPNde/e8NNPdlckIiJy60qUKMEnn3zC1q1b2bZtG23atLnjMyO3SkHlJvXrB82awaVL5tejR+2uSERE5NaMHTuW3Llzc99999GoUSPq1avHvffea3dZKXJY1s3u1HY90dHRBAYGEhUVRUBAwB3/eWfOQLVqsGMHPPggrFoF192uExGRTOzixYvs3buXIkWK4OPjY3c5mVpav5fp+fdbMyqpSSG/5cwJS5aYX7//Hl5+2ZbKREREsg0FlZQcOgQNGsCiRcneKlUKPvjAXL/9NixY4PzyREREsgsFlZTMmAFffQXdupnQcp0mTWDAAHPdqRNs3+78EkVERLIDBZWUvPwyVKoEJ09Cx44p3gZ64w2oU8e0OH7qKTh92pZKRUREsjQFlZR4esKHH4KPj5lZeeedZEPc3WHePChYEHbtgmeeARfd2SUiIpJpKaik5u67E49O/t//4K+/kg3Jmxc++cR0sF2+HIYPd36ZIiIiWZmCSlp69oRateDCBTNlcvlysiGVKsHUqeZ68GBYscL5ZYqIiGRVCippudo3P1cu2LABRoxIcViHDtC1q1nK0qYN7Nnj9EpFRESyJAWVGylQACZPNtdDh8KmTSkOGz/eNIM7fdosrj1/3rllioiIZEUKKjejdWto0QLi4swtoBRSiLc3LF4MwcGwbVviDIuIiMid5HA40nwMGTLktr730qVLM7Te9FJQuRkOh1mIEhYGf/4J/funOKxAAXPSsrs7zJmTOBEjIiJypxw+fDjhMW7cOAICApK81q9fP7tLvC0KKjcrKAhmzjTXEyfCypUpDnv4YRg92ly/8AKsW+fEGkVEJNsJDQ1NeAQGBuJwOJK8tmDBAu6++258fHy46667mDJlSsLXxsbG0rNnT8LCwvDx8aFQoUKMuLIes3DhwgA0adIEh8OR8NzZPGz5qZlVvXrQo4eZKunQwbSkzZ072bAXXjBrbxcuNCctb9liJmNERCSTsSz7Fh3myGFm9G/D3LlzGTRoEJMmTaJixYr88ssvdOnSBT8/PyIjI5kwYQKfffYZH330EQULFuTgwYMcPHgQgI0bNxIcHMzMmTOpX78+7u7uGfTB0kdBJb1GjzazKX/9ZULLvHnJhjgc8N578Ntv8Pvv0Lw5fPMNeHnZUrGIiNyq8+fB39+en332LPj53da3GDx4MG+99RZPPfUUAEWKFOGPP/5g2rRpREZGcuDAAUqUKMH999+Pw+GgUKFCCV+bL18+AHLlykVoaOhtfphbp1s/6ZUjh+la6+4O8+eneiqhv79pBhcQYG7/ZPJbhCIiksmcO3eO3bt306lTJ/z9/RMew4YNY/fu3QC0b9+erVu3UqpUKXr37s3XX39td9nJaEblVlStCq+9ZrYrP/ccPPAA5M+fbFjJkibTPPmkWdZSo4bZQCQiIplEjhxmZsOun30bzl6pe/r06VSrVi3Je1dv49x7773s3buXFStWsGrVKlq0aEHt2rVZvHjxbf3sjGTrjErhwoVT3ErVo0cPO8u6Oa++CpUrm8YpHTqketDPE0/AK6+Y62efhZ07nVumiIjcBofD3H6x43Gb61NCQkIIDw9nz549FC9ePMmjSJEiCeMCAgJo2bIl06dPZ+HChXz88cecPHkSAE9PT+Li4m77t/F22DqjsnHjxiS/Ab/99ht16tShefPmdpZ1czw9zR7kihXNmpUpU0zL/RQMHWpu/6xZY9arrF9/20FZRETkhoYOHUrv3r0JDAykfv36xMTEsGnTJk6dOkXfvn0ZO3YsYWFhVKxYETc3NxYtWkRoaCi5cuWCKxMKq1evpmbNmnh7e5M7hQ0kd5qtMyr58uVLsoVq+fLlFCtWjIceeijF8TExMURHRyd52KpUqcS9yC++aHqspMDDwyxnCQ42G4V693ZumSIikj117tyZ9957j5kzZ1K2bFkeeughZs2alTCjkjNnTkaPHk3lypWpUqUK+/bt44svvsDNzcSDt956i5UrVxIREUHFihVt+QwOy3KN/qmxsbGEh4fTt29fXrl6r+Q6Q4YMYejQoclej4qKIiAgwAlVpiA+HurXN7MqlSvDjz+a2ZYUrF4NdeqY3W6zZ5smtyIi4jouXrzI3r17KVKkCD4+PnaXk6ml9XsZHR1NYGDgTf377TK7fpYuXcrp06dp3759qmMGDBhAVFRUwuPqXm9bubmZRnC5c5tzgIYPT3VorVrmhGWAbt3gjz+cV6aIiEhm5DJB5f3336dBgwaEh4enOsbb25uAgIAkD5eQP79ZowIwbJjp9paK116D2rXN1vzmzeHcOeeVKSIiktm4RFDZv38/q1atonPnznaXcutatTJ7j+Pi4OmnU00gV88BCg01Myrdu+vwQhERkdS4RFCZOXMmwcHBPPbYY3aXcnsmTzazK3//DS+9lOqwkBDTJ87NzaxVuXqEkIiIiCRle1CJj49n5syZREZG4uGRyfvP5c6dmDqmTIEvv0x16EMPweuvm+sePcxuIBERcQ0uss8kU8uo30Pbg8qqVas4cOAAHTt2tLuUjFGnDvTqZa47doT//kt16IAB5pzDixfNepUzZ5xXpoiIJHe1Y2tsbKzdpWR6568c5uiZyk7Ym+Uy25NvRXq2NznV+fNw772mDW3z5uYY5VQ6DB4/bnrG/fsvtGlj1q/cZjNCERG5RZZlceDAAS5dukR4eHhCPxG5eZZlcf78eY4dO0auXLkICwtLNiY9/34rqNwpmzaZw30uXzbpo23bVIeuW2duBcXFwbRpptW+iIjYIzY2lr179xKfytEocnOunrrsSOH/fSuouIrXXzeNUwIDzSKUiIhUh44eDS+/DN7epsV+hQpOrVRERK4RHx+v2z+3wdPTM+E2WkoUVFzF5ctQs6bpq/Loo6Z7bSrTiPHx5gDDzz+H4sVh82ZwxY8kIiJyuzJlZ9osycMDPvwQfH3hm2/S7Frr5gYffGAmXXbtgs6d1V9FREREQeVOK1kSJk0y14MGwaefpjo0Tx746COTbxYtSmx2KyIikl0pqDhDx47Qs6e5fvpp+O23VIdWr554IHPfvuYWkIiISHaloOIsY8fCI4/A2bPw5JNp9ld5/nlo3BhiY83u5tOnnVqpiIiIy1BQcRZPT3Nfp3Bh2LMHWrY0i21T4HDAjBlm6N69ZkJG61VERCQ7UlBxprx54bPPwM8PVq+Gfv1SHZo7t8k1np6wZAlMmODUSkVERFyCgoqzlS1rTiIEGD8+zRMJq1SBt94y1y++aHY5i4iIZCcKKnZ46inTCA6gWzf46adUh/bsCc2awaVL0KIFnDzpvDJFRETspqBil0GDoEkTs2K2SRP4558Uhzkc8N57UKwY7N8P7dtrvYqIiGQfCip2cXMzt4DKloWjR01YuXAhxaGBgWa9irc3LFuWeDtIREQkq1NQsZO/v2kAlyePOcSwS5dUp0vuvRfGjTPX/fvDjz86t1QRERE7KKjYrUgR04bW3R3mzoU330x1aNeu0KqVOWW5eXP491+nVioiIuJ0Ciqu4JFHEqdLXn4ZVqxIcZjDAe++C3ffDYcOQaNGpn+ciIhIVqWg4ip69Eg8ibB1a9i5M8VhOXOaE5bz5YNffoG2bc0Mi4iISFakoOIqHA6YPBlq1oSoKNNmPyoqxaFFipilLd7epn/cSy85vVoRERGnUFBxJV5e8PHHUKCAmVFp3TrV6ZIaNeCDD8z12LHwzjvOLVVERMQZFFRcTUgILF0KPj5mrcorr6Q6tGVLeOMNc92zJ3z1lfPKFBERcQYFFVdUqZI5lRBg9GizGygVr74K7dqZiZcWLeC335xXpoiIyJ2moOKqWrc2DVPALLLdtCnFYVd3Aj34IERHw+OPm/5xIiIiWYGCiisbNgweewwuXoTGjeHIkRSHeXvDJ59AiRKmzf4TT6Ta5FZERCRTUVBxZVebwN11l+nu9tRTEBOT4tA8ecy25aAgc8pyZCTExzu9YhERkQyloOLqAgPNXuTAQHPKcvfuqbbZL1ECliwBT0/T7Pa115xerYiISIZSUMkMSpaEhQvNQYYzZsCkSakOffBBc9oywIgRMHOm88oUERHJaAoqmUW9emYHEMALL8Dq1akObdcucTbl2Wfh22+dVKOIiEgGU1DJTPr2hWeeMXuRmzWD7dtTHTp0qOmzcvmyWdqSSkd+ERERl6agkplc3Yt8331w+jTUrQt79qQ41M0NZs0yHWxPnzabh06ccHrFIiIit0VBJbPx8YHly6FsWbNduU6dVLct+/iYJrdFisDu3dCkSaqbhkRERFySgkpmlDu36ZdftKiZUalXz0ybpCA42OSawEBYuxY6dUp105CIiIjLUVDJrMLCYOVKCA2FX381LWnPn09x6D33wOLFiW1ZXn/d6dWKiIjcEgWVzKxoUTOzkisXrFtnFtheupTi0Nq1YepUcz1kSJrHB4mIiLgMBZXMrlw5c2/H19ectty+faotabt0gRdfNNcdO5psIyIi4spsDyr//vsvTz/9NHny5MHX15eyZcuyKZUD+CQVNWvCxx+DhwfMmwd9+qS6EGXkSLOoNjbWHB+0e7fTqxUREblptgaVU6dOUbNmTTw9PVmxYgV//PEHb731Frlz57azrMypQQOYPdtsYZ40yTRSSYGbG8yZA5Urm+3Kjz0Gp045vVoREZGb4rAs+/aA9O/fn3Xr1vHDDz/c0tdHR0cTGBhIVFQUAQEBGV5fpjRlCvToYa7Hj4fevVMcdvgwVK0K//wDjzwCX34JXl7OLVVERLKn9Pz7beuMymeffUblypVp3rw5wcHBVKxYkenTp6c6PiYmhujo6CQPuU737omzKX36pLpqNizMnLbs729a7Pft69wyRUREboatQWXPnj1MnTqVEiVK8NVXX/Hcc8/Ru3dvPvjggxTHjxgxgsDAwIRHRESE02vOFAYOTJxJiYw0iSQF5crB/PnmevJk+OQTJ9YoIiJyE2y99ePl5UXlypX58ccfE17r3bs3Gzdu5Keffko2PiYmhphrWqtGR0cTERGhWz8piY83IWXOHNOi9uuv4YEHUhz68svmvMPAQPjlF9PJVkRE5E7JNLd+wsLCuOeee5K8dvfdd3PgwIEUx3t7exMQEJDkIalwc4MZM0wjuIsXoVEj2LYtxaHDhkH16hAVBa1amR1BIiIirsDWoFKzZk12Xnes719//UWhQoVsqylL8fSEjz4yMylRUabV/q5dKQ5bsMD0jduwAV591ZZqRUREkrE1qLzwwgusX7+e//u//2PXrl3MmzePd999lx5Xd63I7fP1hc8+g/Ll4ehRc4jhoUPJhhUqBDNnmus330x1WYuIiIhT2RpUqlSpwpIlS5g/fz5lypThjTfeYNy4cbRt29bOsrKeXLlMq/3ixWHfPqhbF06eTDasceOka3D/+cf5pYqIiFzL1sW0t0t9VNJp3z7TxfbQIbMoZdUq8PNLMiQmBu67D7ZsMXeMvvnGNLwVERHJKJlmMa04WeHCZmYld25Yvx6eeirZyllvb1i4EHLmhB9+0EnLIiJiLwWV7KZMGfjiCzOT8vXX8MwzEBeXZEjx4vDuu+Z62DBYvdqeUkVERBRUsqPq1U13t6u7gnr0SHaIYatW5rRly4K2bc06XBEREWdTUMmu6tY1zeAcDpg2Dd5+O9mQcePMBMzRo/D006aHnIiIiDMpqGRnLVqYgwsBXnsN9u5N8naOHGa9So4cZt3tyJH2lCkiItmXgkp217OnOT75wgV47rlkt4DuucecA8SVI4Ru8aBrERGRW6Kgkt1dvfXj7W12BF09pfAakZFmzW18PLRuDSdO2FKpiIhkQwoqAiVKmFs/AM8/n6wZnMMBU6ZAyZLw77/Qvn2yiRcREZE7QkFFjJdeMvd5jh8319fx9zcbhLy9TXv9FNbeioiIZDgFFTG8vBKbp7z/PqxZk2xI+fJmJxDAyy+bAwxFRETuJAUVSVSzJnTtaq67djX99K/TtSs0bw6XL5teK6dPO79MERHJPhRUJKmRIyE0FHbuhBEjkr3tcMD06VCkiNnNfLUpnIiIyJ2goCJJ5coFEyaY6//7P9ixI9mQwEDTX8XTExYvhnfecX6ZIiKSPSioSHLNmsFjj8GlS+ZeTwotaatUgdGjzfULL8DWrc4vU0REsj4FFUnO4TBd3nLkMB3eZsxIcVifPvDEE2YpS8uWcOaM0ysVEZEsTkFFUlaoELzxhrl+8UU4ciTZEIfDZJgCBeCvv1JsbCsiInJbFFQkdb17w733mq09L7yQ4pA8eUwzW3d3mDsXZs1yepUiIpKFKahI6jw8zBYfNzdYsABWrEhx2P33J06+9OgBf/zh3DJFRCTrUlCRtN17r1mMAubezrlzKQ57+WWoU8ecbdiiBZw/79wyRUQka1JQkRt7/XUoWBD274chQ1Ic4uYGH35oWrD8/rs5MkhEROR2KajIjfn7m1MJwRzy88svKQ4LCTHrVK42hUvhIGYREZF0UVCRm/PYY6Z3flwcPPus+TUFjz4KAwea62efhb//dm6ZIiKStSioyM0bP960pd20CSZNSnXYoEHw0ENw9qzpr5LCkUEiIiI3RUFFbl5YGIwaZa5few0OHkxx2NWtynnzmrtEL77o3DJFRCTrUFCR9OnSxZyyfPas2YucSoe3/Plh9mxzPXEiLFni3DJFRCRrUFCR9HFzg2nTzImEy5bBJ5+kOrRBA3jpJXPdsSPs2+e8MkVEJGtQUJH0K13aNE4B6NULoqJSHTpsGFSvbprbtmplzjkUERG5WQoqcmtefRVKlIDDh+GVV1Id5ulptinnygU//2y+TERE5GYpqMit8fGBd94x11Onwk8/pTq0cOHEA5jHjIEvvnBSjSIikukpqMite/RRiIw0C2qffTbN+zpNmpi7RADt2sE//zivTBERybwUVOT2vPmm2Yf822/mOg1jxpijg/77D9q0gcuXnValiIhkUgoqcnvy5oWxY8310KGwa1eqQ729YeFCyJkTfvjBHCEkIiKSFgUVuX1PPw21apkWtN26pdpbBaB4cXj3XXM9bBisXu28MkVEJPNRUJHb53CYhbU+PiZ5zJmT5vBWrUzfOMuCtm3h6FGnVSoiIpmMrUFlyJAhOByOJI+77rrLzpLkVhUvbg75AXjhhRumj3HjoEwZM+yZZyA+3jlliohI5mL7jErp0qU5fPhwwmPt2rV2lyS3ql8/KFfOrJZt1y7N9JEjh1mv4usLK1cmHiEkIiJyLduDioeHB6GhoQmPvHnz2l2S3CpPT5g3z6SPr7+Gt95Kc/g998DkyeZ64EBQRhURkevZHlT+/vtvwsPDKVq0KG3btuXAgQOpjo2JiSE6OjrJQ1xM6dLmvg6YjrUbNqQ5vH17sxY3Lg5atzaTMSIiIlfZGlSqVavGrFmz+PLLL5k6dSp79+7lgQce4MyZMymOHzFiBIGBgQmPiIgIp9csN6FLF2je3DRKad0a0giUDgdMmQIlS5omcO3bp7lpSEREshmHZbnOPwunT5+mUKFCjB07lk6dOiV7PyYmhpiYmITn0dHRREREEBUVRUBAgJOrlTSdPg0VKsD+/aa725w5JpWkYutWc3hhTIxpy/LCC06tVkREnCg6OprAwMCb+vfb9ls/18qVKxclS5ZkVypNw7y9vQkICEjyEBeVK5dZr+Lubn794IM0h1eoAG+/ba5ffvmGd4xERCSbcKmgcvbsWXbv3k1YWJjdpUhGuO8+060WoEcP2LkzzeHdukGzZubIoFatzKSMiIhkb7YGlX79+rFmzRr27dvHjz/+SJMmTXB3d6d169Z2liUZqX9/eOQROH/epI9rbt1dz+GA6dOhSBHYuzexKZyIiGRftgaVf/75h9atW1OqVClatGhBnjx5WL9+Pfny5bOzLMlI7u5mfUrevGYhyssvpzk8Vy7TX8XTExYvNg1vRUQk+3KpxbTplZ7FOGKzzz+Hxx8318uWJV6nYuxY+N//zEGG69ebNSwiIpI1ZNrFtJKFPfYY9Oljrtu3h3//TXP4Cy+YLBMTYzYNXbzonDJFRMS1KKiI84waBRUrmq5uV7u8pcLhgJkzISQEduyAIUOcWqmIiLgIBRVxHm9vWLAA/Pzgu+9g5Mg0h+fNm7hGZcwY+Pln55QpIiKuQ0FFnKtkycQDfgYPhh9/THN448bQtq0537B9e90CEhHJbhRUxPnatTPp4+oBP6dOpTl8wgQIDYU//zTZRkREsg8FFXG+qwf8FCsGBw7csGFKUBBMm2au33zT7AISEZHsQUFF7BEQAPPng4cHfPwxvPtumsOfeMKsv42Phw4ddAtIRCS7UFAR+1SpAiNGmOvnn4fff09z+PjxibeABg1yTokiImIvBRWxV9++UK+emSJp2RIuXEh1aFBQ4sTLW2/pFpCISHagoCL2cnMzJyuHhJgZlb590xzeqBE880ziLqA0co2IiGQBCipiv5AQmD3bXL/zjlmzkobx4yEszBzGrFtAIiJZm4KKuIa6deGll8x1585mN1AqcudOegvop5+cVKOIiDidgoq4jmHDoGpVOH3aHPBz+XKqQx9/3LRjsSzdAhIRycoUVMR1eHqaLcs5c8K6dfD662kOHzcOwsPhr79g4ECnVSkiIk6koCKupWjRxO5uw4aZM4FSce0toLFjb9iNX0REMiEFFXE9rVubrm6WZVrtnziR6tDHHoPISDO0QwfdAhIRyWoUVMQ1TZwIpUrBoUNmEUp8fKpDr70F9NprTq1SRETuMAUVcU1+frBgAXh7w+efw8iRqQ7NlQumTzfXb79tlreIiEjWoKAirqtCBZg0yVwPHAirV6c6tGFDM/Fy9RbQ+fPOK1NERO4cBRVxbZ06meQRH2/Wrvz7b6pD334b8ueHv//WLSARkaxCQUVcm8MBkydD+fJw/Lg5D+jSpRSHXnsLaNw4WLvWuaWKiEjGU1AR1+frC4sXQ0CAWYDy8supDm3QIHHDkG4BiYhkfgoqkjkUL24OL+TKPZ7Fi1MdOnasuQW0axe8+qrzShQRkYynoCKZR+PG8OKL5rpDB3MqYQquvQU0fjz88IMTaxQRkQyloCKZy//9Hzz4IJw9C02bwrlzKQ5r0AA6djS3gDp21C0gEZHMSkFFMhcPD9NfJTQUfv8dunUzaSQFY8dCgQLmFtArrzi9UhERyQAKKpL5hIXBwoXg7g5z5iSeDXSdwEB47z1zPWGCbgGJiGRGCiqSOT34IIwYYa779IGNG1McVq8edO6cuAsolTtFIiLiohRUJPPq188ssI2NhWbN4L//Uhz21lsQEQG7d+sWkIhIZqOgIpmXwwEzZ0KxYnDgADzzTIqHFwYEJL0FtHKl80sVEZFbo6AimVuuXPDxx+DjAytWwPDhKQ6rW9esuwXT3Hb3bueWKSIit0ZBRTK/8uVh6lRzPXhwqlMm48ZB9epw6hQ8+SScOePcMkVEJP3SFVRGjx7NhQsXEp6vW7eOmJiYhOdnzpyhe/fuGVuhyM1o3z5x1WybNnDwYLIh3t5m8iUszOxsbtcuxTtFIiLiQhyWlUoTihS4u7tz+PBhgoODAQgICGDr1q0ULVoUgKNHjxIeHk5cXNydq/ga0dHRBAYGEhUVRUBAgFN+priwixfhvvvgl1/M1MmaNeDllWzYzz+bTUOxsWYCZsgQW6oVEcm20vPvd7pmVK7PNOnIOCJ3no+POQMoVy5Yv97sCkpBtWrw7rvmeuhQ+OQT55YpIiI3z2XWqIwcORKHw8Hzzz9vdymSmRUtCrNnm+uJE00X2xRERsLV/9TatYPt251Yo4iI3DSXCCobN25k2rRplCtXzu5SJCto1Aj69zfXnTvDjh0pDhszBmrVMk3gnnwy1TYsIiJiI4/0fsF7772Hv78/AJcvX2bWrFnkzZsXriymTa+zZ8/Stm1bpk+fzrBhw9IcGxMTk2TxbnR0dLp/nmQTb7xhFqN8+605vHDDBrjy3+1VHh6mE3/VqrBnD7RoAV99ZV4XERHXkK7FtIULF8bhcNxw3N69e2+6gMjISIKCgnj77bd5+OGHqVChAuPGjUtx7JAhQxg6dGiy17WYVlJ09ChUrAiHD0Pr1jB3rmkSd53ffjNrb8+dM934U/nPT0REMkh6FtOm6/877tu373ZrS2LBggVs2bKFjamc03K9AQMG0Ldv34Tn0dHRREREZGhNkoWEhMBHH8HDD8P8+VCzJvTokWxYmTLw4Yfw1FMwfrxpy9Khgy0Vi4jIdWxbo3Lw4EH69OnD3Llz8fHxuamv8fb2JiAgIMlDJE333w+jR5vrF14wu4FS0KRJ4jblbt1SHSYiIk6WrqDy008/sXz58iSvzZ49myJFihAcHMyzzz6bZA1JWjZv3syxY8e499578fDwwMPDgzVr1jBhwgQ8PDyc1otFsoEXXjDrVC5dMgtRjh1LcdjAgSawxMaa2ZVDh5xeqYiIXCddQeX111/n999/T3i+fft2OnXqRO3atenfvz/Lli1jxIgRN/W9atWqxfbt29m6dWvCo3LlyrRt25atW7fi7u6e/k8jkhKHA2bMgBIlTMfaxx83C1Ku4+YGH3xgbgUdPmxCy8WLtlQsIiJXpCuobN26lVq1aiU8X7BgAdWqVWP69On07duXCRMm8NFHH93U98qZMydlypRJ8vDz8yNPnjyUKVMm/Z9EJC0BAbBsGQQFwcaNZmbl0qVkw3LmhE8/NcM2bDC3gdTXUETEPukKKqdOnSIkJCTh+Zo1a2jQoEHC8ypVqnAwhTNWRFxCqVKwfDn4+sIXX6SaQooWNWtw3d3NDMv48bZUKyIi6Q0qISEhCVuPY2Nj2bJlC9WrV094/8yZM3h6et5yMd99912qW5NFMkSNGqZbrZubuR00aFCKw2rVgrfeMtf/+x+sWuXcMkVExEhXUGnYsCH9+/fnhx9+YMCAAeTIkYMHHngg4f1ff/2VYsWK3Yk6RTLOE0/AO++Y62HDEq+v07u3OZQ5Pt7cKdq927lliohIOoPKG2+8gYeHBw899BDTp0/n3Xffxeua02lnzJhB3bp170SdIhmrSxdzdDKY3ipLlyYb4nDA1KnmEMNTp0yb/VtoviwiIrchXZ1pr4qKisLf3z/ZzpyTJ0+SM2fO27r9kx7p6WwnkoxlQdeuMH26OXl51SrTFO46hw5B5cpmJ1DjxvDxx+bOkYiI3Jr0/PudrqDSsWPHmxo3Y8aMm/2Wt0VBRW7b5cumacqyZZA7N6xdC/fck2zYzz/Dgw+aHiuDByc2hxMRkfS7Y0HFzc2NQoUKUbFiRdL6siVLlqSv4lukoCIZ4vx5s3p2/XqIiICffoL8+ZMN++ADs2YFYPFi00NORETS744FlR49ejB//nwKFSpEhw4dePrppwkKCsqImm+JgopkmBMnzG2fv/6CcuXg++8hMDDZsBdeMIcW+vnBjz+aoSIikj7p+fc7XXfaJ0+ezOHDh3nppZdYtmwZERERtGjRgq+++irNGRYRl5c3L3z1FYSGwq+/msUoKRwHMWaMmXw5d84srj1xwpZqRUSyjXQvCfT29qZ169asXLmSP/74g9KlS9O9e3cKFy7M2bNn70yVIs5QuDCsWGHa0373HbRrZ/YmX8PDAxYuNE3h9u0zeea//2yrWEQky7utvQtubm44HA4sy9IhgpI1VKgAS5aAp6dpT/u//yXrXpsnj2mz7+8P69ZBlSpmEkZERDJeuoNKTEwM8+fPp06dOpQsWZLt27czadIkDhw4gL+//52pUsSZatUyK2fBLEi52qL2GmXKmJBSpAjs3Wsa3i5e7PxSRUSyunQFle7duxMWFsbIkSN5/PHHOXjwIIsWLaJhw4a4qbGEZCWtW8Obb5rrF1+EuXOTDSlXzpxvWLu22TjUvDm8+ipoclFEJOOke3tywYIFqVixIg6HI9Vxn3zySUbVlybt+pE7rm9fePttcyvoiy9MKrnO5cvQv3/ixEvDhibX5Mrl/HJFRDKD9Pz77ZGeb9yuXbs0A4pIlvPmm6Yl7YIF0KSJ2bZcsWKSIR4eZljFitC5s8kzVauadSx3321b5SIiWcIttdB3FZpREaeIiYEGDeDbbyEkxDSEK1IkxaFbtpidQAcPms1DH35otjGLiEiiO9ZHRSRb8vY2O4HKlYOjR6FevVQbqNx7L2zaBA89ZA4wbNwYhg5NtstZRERukoKKyM0IDDQ9VgoVgr//hscfN13fUhAcDCtXQq9e5vmQIeY4oeho55YsIpIVKKiI3KzwcPjySwgKMqcUtmplVtKmwNMTJkyAGTPAy8usV6le3XToFxGRm6egIpIed91lTlr28YHly0332qioVId36GDW34aHw44dZpHtF184tWIRkUxNQUUkve67z/TRd3OD+fNNeFmwIFkH26uqVYPNm82XRUWZu0YjR6Y6XERErqGgInIrnnjCLEQpUQKOHDEN4urWTfXeTmio2TTUtasJKAMGQMuWqS5zERGRKxRURG7Vo4+aQ36GDjU7g1atgrJlYdAguHAh2XAvL3jnHfPw9IRFi0zr/T17bKleRCRTUFARuR0+PiaY/Pab2bYcGwtvvGECy5dfpvglXbsmtmTZvt0carhqldMrFxHJFBRURDJC8eJm+/JHH5mVs7t3myZxzZvDv/8mG16zplm3UrUqnDxpMs7YsVq3IiJyPQUVkYzicJhgsmMHPP+8WWy7eLFZbPv228m2MufPD2vWQPv2piHc//5njhLassW2TyAi4nIUVEQyWkCACSabN5vmKWfPmsMNK1c27fev4eNjeq1MnGjWsHzzDVSqBM88AwcO2PYJRERchoKKyJ1SoQKsWwfTpkHu3LBtm9mj/Oyz5n7PFQ4H9OwJO3dCmzbmtTlzoGRJcypzGm1aRESyPAUVkTvJzc0Ek507zT0egOnToVQpmDUryaKUwoVh7lzYuBEeftichThqlFn+MnGiWacrIpLdKKiIOEO+fDBzpmlTW7q0OdSwQwdzeuHvvycZWrmyuQX02WdmecuJE9C7t/myjz/WglsRyV4UVESc6YEH4JdfzFRJjhzwww/mFtHLLyfp/uZwQKNGZvvy1KnmoMNdu6BZM7j/fli/3tZPISLiNAoqIs7m6QkvvQR//AFPPml2A40eDffcA+++C+fPJwz18IBu3UxIGTgQfH3hxx9No7gWLcwuaBGRrExBRcQuhQrB0qXmHk+hQmabT9euEBFhVtEePJgwNGdOeP11+Ptv6NjRzLgsWgR33w0vvAD//WfrJxERuWMUVETs1qiRWafy1ltmRe3Jk+bWUJEiZtpk3bqEhSn588P778PWraZJ3KVLMG4cFCsGY8bAxYt2fxgRkYyloCLiCvz8TK+VXbtgyRKz7Scuzkyb3H+/6bM/e7bZCgSUK2c69H/9NZQvb7Ywv/SSWXw7b55pICcikhUoqIi4End3aNzYHAa0bRt06mQOPNy8GSIjzS2iIUPMic1AnTrmrVmzzGzL/v3Qti1Uq2a+hXYIiUhmZ2tQmTp1KuXKlSMgIICAgABq1KjBihUr7CxJxHWUKwfvvQf//APDh5szhI4eNac1Fyxo2tdu2oS7u8kwf/1lhuXMCZs2mcOda9QwW5rj4uz+MCIit8ZhWfb9f65ly5bh7u5OiRIlsCyLDz74gDFjxvDLL79QunTpG359dHQ0gYGBREVFERAQ4JSaRWxz6ZJJHRMmJG3Ff9990KcPPPUUeHhw7JhZePveewl3iihWzNxZat/e7IoWEbFTev79tjWopCQoKIgxY8bQqVOnZO/FxMQQc/V/ea980IiICAUVyX42boTx481pzZcumdcKFIAePaBLF8iTh2PHYNIkmDw5sWN/njxmSM+epgediIgd0hNUXGaNSlxcHAsWLODcuXPUqFEjxTEjRowgMDAw4REREeH0OkVcQpUq5kCg/ftNg5V8+cwtogEDTGDp0oXgY7/x+utm1/OkSVC0qNnG/Prr5s5Rt27mdpGIiCuzfUZl+/bt1KhRg4sXL+Lv78+8efNo2LBhimM1oyKSiosXYcECM8uydWvi648+am4LPfYYcbjzySdmG/PGjeZth8P0nHvxRXMHSUTEGTLVrZ/Y2FgOHDhAVFQUixcv5r333mPNmjXcc889N/xarVERuY5lwdq1JrAsWZK4T7loUejVCzp0wAoI5Icf4M03YdmyxC+tUcMElieeMJuPRETulEwVVK5Xu3ZtihUrxrRp0244VkFFJA3798OUKea05lOnzGv+/mZFba9eULIkO3aYPnMffph4OnOJEmbhbWSkadkvIpLRMuUalavi4+OT3N4RkVtUqJDpcHvwILzzjjlL6OxZs2ClVCl47DHuPvg170232L8fXnkFcuc2bfqfe86sYxk61JzeLCJiF1uDyoABA/j+++/Zt28f27dvZ8CAAXz33Xe0bdvWzrJEshY/P3OG0G+/mVa2jz9uFqd88YXpw3/PPYQumcrwV85x4IC5a1S4sAkoQ4aYwNK9O+zYYfcHEZHsyNagcuzYMdq1a0epUqWoVasWGzdu5KuvvqJOnTp2liWSNTkcppXtsmVmu0/v3qY73J9/miRSoAD+Q1+k9xP7+Ptvsza3UiW4cAGmTjUTMtWrw7RpcPq03R9GRLILl1ujkh5aoyJym6KjTf/9CRNg927zmpub2QrUpw/WAw+y5nsHb78Nn3+e2OHW2xuaNIEOHaBWLS2+FZH0ydSLadNDQUUkg8THm1tB48fDqlWJr5cvb7Y3t27N0Sgf5s6FmTPNXaSr8ueHdu3MGt2SJW2pXkQyGQUVEbl1f/xhZlhmzzb3fQDy5jVJ5JlnsMqWY8sWMxEzb15i11uudPNv3x5atIDAQNs+gYi4OAUVEbl9J0+aA4MmTTI7h64qVw6efhpatyYmXwGWLTOhZcWKxLYtvr7m6KH27U3POTeX218oInZSUBGRjHP5MixfbpqtLF+e2HDF4YBHHjGnOD/1FIfPBTBnjrk1dO0OoYgI05MlMhKKF7ftU4iIC1FQEZE749QpWLTInDP0ww+Jr/v4mAW4zzyDVacuG7d6MmsWzJ+fdIfQAw+YWZbmzc2GIxHJnhRUROTO27cP5s41My07dya+ni8ftGoFTz/NxbJV+PQzB7NmmRYuV28N5chhck2bNlC3Lnh52fYpRMQGCioi4jyWBVu2mMAyfz4cO5b4XsmSZj1L27b8612UDz80t4auPbU5KMjMsLRpA/ffr/UsItmBgoqI2OPyZbO9+cMPzaGIV3cNcWVL0DPPYDVrzqa9eZg3zzSVO3IkcUiBAtC6tQkt5cubZTAikvUoqIiI/c6cMWFlzhxYvTrxvo+nJzRsCJ07E1enPt+t9WDePFi82PSfu+ruu01gad0aihWz7VOIyB2goCIiruXQIXNbaM4c2Lo18fX8+aFTJ+jUiYvBBVmxwvRmWbYMrj2btFo1E1patIDQUFs+gYhkIAUVEXFdv/1mGq/MmgX//Wdeczigfn149ll47DGiznuyZIkJLddOxri5mZb9bdqYFv5qKieSOSmoiIjri4kxt4amT4dvvkl8PTTUHCLUuTMULcqRI/DRRya0/Pxz4jBvb3MQdJs25k6Sj48tn0JEboGCiohkLrt2mS64M2cm3TVUpw506WL2Mnt5sXu3uYM0d6459PmqPHnMZMxzz5kGcyLi2hRURCRzio01C1TefRdWrjRbn7nSm6V9ezPLUrIklgXbtplZlnnz4N9/zTB3d9O6v08fs8lIu4ZEXJOCiohkfnv3wvvvw4wZcPhw4usPP2xmWZ56Cnx8uHzZZJsJE+C77xKH3Xsv9O4NLVvqtpCIq1FQEZGs4/Jl+PxzM8uyYkXiLEtQkDlAqEsXs5cZ+PVXE1jmzoWLF82wfPmgWzfzCA+38XOISAIFFRHJmg4cMDMs778P//yT+Pr995vA0rw5+Ppy4oRZ8jJ5cuIwDw/zdu/eUL26bZ9ARBRURCTLi4uDL780O4aWLzfPAXLlMqc5d+kCZcty+bLZWDRhAqxdm/jlVauawNK8uc4ZErGDgoqIZB+HDpndQtOnw/79ia9Xr24CS8uW4OfHli0wcaJZfBsba4aEhibeFgoJse0TiGQ7Cioikv3Ex5tzht59Fz791KxtAQgIgLZtTWipWJFjx8yQKVMS1+h6epoDn3v3hsqVbf0UItmCgoqIZG9Hj5rOt9Onw+7dia9XrmwCS+vWxHrn5JNPzG2hn35KHFKjBnTvDk2bgq+vLdWLZHkKKiIiXJll+e47M4XyySdw6ZJ53c/PtLTt0gUqV2bjJgcTJsDChYlDcueGdu1MI7l77rH1U4hkOQoqIiLXO34cZs82syw7dya+XqGCSSNt2nDkQiDTp5sdQwcOJA6pWRO6doVmzTTLIpIRFFRERFJjWfDDD2aWZfHixGOac+QwC2+7dCGuSnW+Xung3XdNM7lrNxVdnWUpXdrWTyGSqSmoiIjcjJMn4cMPTWj544/E16tWhf794cknOXTELcVNRffdZwJL8+Ym44jIzVNQERFJD8syK2qnT4cFCxLb2pYqBS+/DG3bEufuxcqVJtN89lmqrVtE5CYoqIiI3Kpjx0zDlUmT4PRp81r+/PC//5k04u/P4cOJrVv27Uv80ho1zCxLixaaZRFJi4KKiMjtOnPGTJ+MHWuaynFlK1CvXuaRN2+qrVsCA+Hpp01oKVfO1k8h4pIUVEREMkpMDMyZA6NGwd9/m9d8fc3syv/+BwULAnDkSOIsy969iV9eq5bZGa3/iRJJlJ5/v92cVpWISGbk7Q2dOsGOHWaXUKVKcOGC6RRXrJg5wfn33wkNhQEDYNcu+Pprs5XZwwNWr4bBg+3+ECKZl2ZURETSw7JM+hg50vx61RNPmJ1CNWokvPTVV1C/Pri5webNpmWLiGhGRUTkznE4oHZtszhlwwbTa9/hMFuB7rsPHnoIVqwAy6JePbN9OT7etOWPj7e7eJHMR0FFRORWValibgft2GFuD3l6wvffQ8OGZvpk/nzeHnMZf3+z+3nmTLsLFsl8FFRERG5XqVKm7/7evWaBrb8//PortGlD/scqMOrlkwC89BKcOGF3sSKZi61BZcSIEVSpUoWcOXMSHBxM48aN2XntGRwiIplJ/vzw5pumhe0bb0BQEPz+O12jx1C2rGmEO2CA3UWKZC62BpU1a9bQo0cP1q9fz8qVK7l06RJ169bl3LlzdpYlInJ7goLgtddg1iwA3KdMZPrwY4CZePnpJ5vrE8lEXGrXz/HjxwkODmbNmjU8+OCDNxyvXT8i4tIsy5wbtGkT/O9/dDz5JjNnQvny5iUPD7sLFLFHpt31ExUVBUBQUFCK78fExBAdHZ3kISLishwOeP11cz15MmP6HiZ3bti2DaZMsbs4kczBZYJKfHw8zz//PDVr1qRMmTIpjhkxYgSBgYEJj4iICKfXKSKSLvXrQ/XqcPEied4bxciR5uXXXoPDh+0uTsT1ucytn+eee44VK1awdu1aChQokOKYmJgYYmJiEp5HR0cTERGhWz8i4tpWrYI6dcDbm/i/d1OjWX42bIDWrWHePLuLE3G+THfrp2fPnixfvpxvv/021ZAC4O3tTUBAQJKHiIjLq1ULHngAYmJwG/l/TJliutXOn5+0ua2IJGdrULEsi549e7JkyRK++eYbihQpYmc5IiJ3xrVrVaZPp1K+A3Tvbp726GHOPRSRlNkaVHr06MGcOXOYN28eOXPm5MiRIxw5coQLFy7YWZaISMZ7+GF45BG4dAmGD+eNNyAkBHbuhLfesrs4Eddl6xoVh8OR4uszZ86kffv2N/x6bU8WkUxl7VpzC8jDA/76i7k/FuHpp8HHB/74AzSpLNlFplmjYllWio+bCSkiIpnO/fdD3bpw+TK88QZt2piJlosXoU8fu4sTcU0usZhWRCTbGDrU/Dp7No5dfzNliplgWbbMHMAsIkkpqIiIOFP16uZ05bg4eOMN7r4b+vUzb/XuDefP212giGtRUBERcbarsypz58Kff/Laa1CwoDnLcPhwu4sTcS0KKiIizla5Mjz5JMTHw9Ch+PnB+PHmrTFj4M8/7S5QxHUoqIiI2GHIEPPrwoXw2288+SQ89pjZvdyjhznPUEQUVERE7FGhAjRtahLJ0KE4HDBhgtmq/M03sGCB3QWKuAYFFRERuwwZYrrWLl4M27ZRtCi8+qp5q29fuHKgvEi2pqAiImKXMmWgZUtzPXgwAC++CCVKwJEjMGiQveWJuAIFFREROw0ebE4o/PRT2LwZb2+YPNm8NWkS/PKL3QWK2EtBRUTETnfdBW3amOsrsyp16piJlvh4eO4586tIdqWgIiJit0GDwN0dPv8cfv4ZgLFjIWdO8/T99+0uUMQ+CioiInYrUQKeecZcX5lVCQ+H1183L/XvDydO2FifiI0UVEREXMHAgebQn6++gnXrAOjZE8qVg5MnTVgRyY4UVEREXEHRotChg7m+st3HwwOmTDEvvf8+/PijjfWJ2ERBRUTEVbz6Knh6mo5v330HQM2a0LGjefu55+DyZXtLFHE2BRUREVdRqBB07myuBw9O6KM/ahQEBcGvv8Jbb9lbooizKaiIiLiSV14Bb2/4/ntYvRqAvHlh5Ejzdv/+ZjmLtixLdqGgIiLiSgoUgK5dzfWgQQmzKp07w0svmZeHDYNmzeDsWRvrFHESBRUREVfTv785nfCnn8wuIMyRQKNGwaxZ4OUFS5bA/ffDgQN2FytyZymoiIi4mrAw6N7dXF8zqwIQGQnffgvBwbBtG1StavKMSFaloCIi4opefhly5ICNG2H58iRv3XcfbNhgeqwcPQoPPwwffmhbpSJ3lIKKiIgrCg6GXr3M9XWzKlzZILRuHTRuDLGx0K6duWOkRbaS1SioiIi4qn79wN8ftm6FpUuTve3vDx9/bDYKcWUbc5MmcOaM80sVuVMUVEREXFXevNCnj7kePDjF6RI3Nxg+HObMMbuaP/vMNInbt8/55YrcCQoqIiKurG9fCAiA7dth8eJUh7VtC2vWQGioGVq1Kqxd69RKRe4IBRUREVcWFGTCCsCQIRAXl+rQatXMItuKFeH4cXj0UbOdWSQzU1AREXF1zz8PuXLBjh0wf36aQyMi4IcfoGlTuHTJnHPYr1+a+UbEpSmoiIi4usBAkzbAnFDYv3+abWn9/OCjjxIOYeatt+DJJyE62kn1imQgBRURkczghRfgiSfMNMmoUXDXXbBgQbJty1e5ucHQoWaIjw98/rnpv7Jnj9MrF7ktCioiIplBjhzw6aewbBkULQr//gutW5uFKL/9luqXtWxpbgWFh8Pvv5tFtmvWOLVykduioCIikpk8/rhJHK+/bqZKvvsOKlQwC26jolL8ksqVzSLbypXhv/+gdm2YPt3plYvcEgUVEZHMxscHBg40i2ubNDErZd9+G0qVgtmzU7wdlD+/mUlp2RIuX4ZnnzVrdC9ftuUTiNw0BRURkcyqcGH45BP48ksoWdIc/BMZCQ88YLrZXidHDrNp6PXXzfPx480JzH/95fzSRW6WgoqISGZXr57p8jZypNnys24dVKoEPXvCqVNJhjocZjLm44/NZqKffzZ3jqZMSXVdroitbA0q33//PY0aNSI8PByHw8HSFM6yEBGRm+DlZU5c/vNPaNXKtNufPNnMtLz3XrL2+089ZbJNrVpw4QL06AENGsChQ7Z9ApEU2RpUzp07R/ny5Zk8ebKdZYiIZB0FCpj7O99+C6VLw4kT0KULVK8OGzcmGRoRAV9/bW4B+fjAV19B2bKmB4uIq7A1qDRo0IBhw4bRpEkTO8sQEcl6Hn4YfvnFLLINCDAhpVo1s4r2xImEYW5u0Ls3bNli7hadPGkW3LZtm+yukYgtMtUalZiYGKKjo5M8REQkFZ6eZmvPzp3Qrp1ZhDJ9urkdNHVqkr76d98NP/1k1q+4u8O8eWZ2ZdUqWz+BSOYKKiNGjCAwMDDhERERYXdJIiKuLzQUPvjAHKdcoYKZKuneHapUMQtVrvD0NDuC1q6F4sVNT7k6daBPH7OORcQOmSqoDBgwgKioqITHwYMH7S5JRCTzqFkTNm0yi2xz5TK3hqpVg5kzkwyrXt3sbn7uOfN8wgS4917zpSLOlqmCire3NwEBAUkeIiKSDu7uZjZl506oX99MlXTsaI5ZPn8+YZifn9myvGIFhIWZzUQ1asAbb6hJnDhXpgoqIiKSQYKDzUmFw4ebFbWzZpnZlT//TDKsfn1zd6h5cxNQBg1SkzhxLluDytmzZ9m6dStbr3RQ3Lt3L1u3buXAgQN2liUikj24ucErr8Dq1WYdy2+/mQOB5s1LMixPHli4EObMSWwSV7GiWY+rJnFypzksy77/zL777jseeeSRZK9HRkYya9asG359dHQ0gYGBREVF6TaQiMjtOHIE2rQx/VcAunUzW5t9fJIMO3gQ2reHb74xz+vXh/ffN6czi9ys9Pz7bWtQuV0KKiIiGSguDoYOhWHDzFRJxYqwaBEUK5ZkWHw8TJwI/fvDxYsQFATvvGNuD4ncjPT8+601KiIiYri7m/3JK1ZA3rxmV9C995qDD6/h5ma2LG/ebN4+eRJatDATMkeP2la9ZFEKKiIiklS9eiak1KwJ0dHQtKlpHBcbm2TYPfeYJnGvvWbCy/z5UKqU2f18TS85kduioCIiIskVKGDWq7z0knk+fjw88ADs359kmJeX2bK8fr1pwR8VZQ5trloVNmywp3TJWhRUREQkZZ6eMGoUfPYZ5M5tkkfFirB8ebKhVaqY3UBTppidQVu2mMZx3bqZW0Mit0pBRURE0taokUkeVaqY9vuNGpmVtNd1fnN3N91srz1aaNo0czto5kyzCFckvRRURETkxgoXNocA9e5tno8aBY8+ag4Euk5IiDlaaM0aKF3aHNbcsSM8+CD8+qvzS5fMTUFFRERujpeXWauyaBHkzAk//GBuBa1cmeLwBx80a3LHjDEt+detM7uE/vc/OHPG6dVLJqWgIiIi6dOsmbkVVKECHD9udgkNHpziVh9PT+jXD3bsMJuH4uJg7Fi46y746CN1tpUbU1AREZH0K14cfvwRnn3WpI3XXzfbmefONQcdXiciAhYvNi1aihWDQ4egZUuTcXRukKRFQUVERG6Nr69ZLTtnjrm38/PP8PTTpp9+r14pLkipX98cKTRkCHh7m7tGZcvCwIEp5hsRtdAXEZEM8O+/MGOGOfjn2l4rVapAly7QqpVZ13KNXbtMnvnyS/O8SBHTmv+xx5xcuzidWuiLiIhz5c9vpkV274avvjLrWDw9YeNGc3soLAw6dzad4a78/+PixeGLL+Djj01/ub174fHHoUmTZH3lJBvTjIqIiNwZx47B7Nnw3numucpVZcqY0PL005AnDwBnz5plLm+/bdqz+PqaSZgnn4Q6dSBHDvs+hmQ8nZ4sIiKuw7JMD5b33jNbfS5eNK97eZmtQJ07w8MPg5sbv/8O3bvD998nfrmvL9Sta0LL449Dvny2fRLJIAoqIiLimk6fhnnzYPp02Lo18fVixaBTJ2jfHis0jG+/haVL4dNP4cCBxGFubnDffSa0PPkklChhy6eQ26SgIiIirm/zZjPLMnduYgc4d3czbdK5M9SqheXjy7ZtJrB8+qlpIHetu+9ODC1Vq5ogI65PQUVERDKPc+dMt9v33jPta6/y8DB7l6tWhWrVoGpVDuS4i88+d+fTT+G775IeNxQaao4hatzYdPf38bHl08hNUFAREZHM6Y8/zBbn+fPh8OHk7/v7Q+XKUK0a50pXZWVUVRasLcAXXyRty+/nZ3q2PPmk2e4cFOTUTyE3oKAiIiKZm2XBP/+YJnIbNpjHpk1m9uV64eHEV67K7jxVWfFfVaZurMyfhwMT3nZ3NxMy5cqZQxLvucf8GhwMDodzP5YYCioiIpL1xMWZGZerwWXDBti+PdkZQ5bDwcXCd7EjZ1VWnKjKJ4eqsZ2yXMIrybg8eRJDy9VfFWCcQ0FFRESyh3PnzArbq8Hl559h375kw+Ld3DmdM4KDnkXZGVOEbWeKsoci7KUIeyjKcfIBJp0EBSWGFgWYO0NBRUREsq9jx0xH3KvBZcMGOHUqzS+54O7HAfci7Iw1weVqgNl7Jcycxy9JgClWDAoWNIctFixoFvK6uzvtE2Z6CioiIiJXWZY5rnnvXvPYsyfpr//+m9DWPzVHCU4SXvZTiINEJDzOuwdQIMKREFyuDTFXrwMDNSNzlYKKiIjIzYqJMYcLpRRi9uwxTepu4Az+SYLL1cc/FEi4dsvpn2KAiYgwRyGFhmafMKOgIiIiklFOnUo+G3PgABw8aB43uK2U8G3IlWKI+YcCHCOY4+TjrFce8oZ5EhoKISEmvFz/uPp6Zj7/SEFFRETEWc6dM1uprwaXq49rX4uOvulvd4pcHCdfwuMEeZM8v/raBb98uIfmI1d4jiQBJiQE8uY1ZyLly2euc+Vyra69CioiIiKuJDo65QBz8KBZI3P8ONZ//+G4hX+Sz5EjWZg5Qd6Ex3HyccotL5dz5cWRLy9eoUEE5XNPEmSuv86b15wZeacoqIiIiGQ2cXFw8iScOAHHjyc+rntuHT+Oddy85nYpNt0/Jh4HJwlKEmauBpprn1/IkRcrbz6qNQpm5CT/DP2oCioiIiJZnWWZcwOuDzTX/nriBPHHTxB/9AScOI7HmRsvDL7e5ojGVDqwJENLT8+/3x4Z+pNFRETEORwOCAgwj2LFUh3mduUBwKVLibM21wWaqw/r2HHijp7AOnECt5MnKFI1r7M+UYoUVERERLILT0+z2jYkJNUhjuvCQdC1R1TbwIXWAIuIiIjL8bB3TkNBRURERFyWgoqIiIi4LAUVERERcVkuEVQmT55M4cKF8fHxoVq1amzYsMHukkRERMQF2B5UFi5cSN++fRk8eDBbtmyhfPny1KtXj2PHjtldmoiIiNjM9oZv1apVo0qVKkyaNAmA+Ph4IiIi6NWrF/37908yNiYmhpiYmITn0dHRREREqOGbiIhIJpKehm+2zqjExsayefNmateunViQmxu1a9fmp59+SjZ+xIgRBAYGJjwiIiKcXLGIiIg4k61B5cSJE8TFxRFyXeOZkJAQjhw5kmz8gAEDiIqKSngcPHjQidWKiIiIs2WqzrTe3t54e3vbXYaIiIg4ia0zKnnz5sXd3Z2jR48mef3o0aOEhobaVpeIiIi4BluDipeXF5UqVWL16tUJr8XHx7N69Wpq1KhhZ2kiIiLiAmy/9dO3b18iIyOpXLkyVatWZdy4cZw7d44OHTrYXZqIiIjYzPag0rJlS44fP86gQYM4cuQIFSpU4Msvv0y2wFZERESyH9v7qNyOqKgocuXKxcGDB9VHRUREJJO42gft9OnTBAYGpjnW9hmV23HmzBkA9VMRERHJhM6cOXPDoJKpZ1Ti4+M5dOgQOXPmxOFwZOj3vpr2NFtjL/05uAb9ObgG/Tm4Bv053D7Lsjhz5gzh4eG4uaW9rydTz6i4ublRoECBO/ozAgIC9B+iC9Cfg2vQn4Nr0J+Da9Cfw+250UzKVbYfSigiIiKSGgUVERERcVkKKqnw9vZm8ODBatlvM/05uAb9ObgG/Tm4Bv05OFemXkwrIiIiWZtmVERERMRlKaiIiIiIy1JQEREREZeloCIiIiIuS0ElBZMnT6Zw4cL4+PhQrVo1NmzYYHdJ2cqQIUNwOBxJHnfddZfdZWV533//PY0aNSI8PByHw8HSpUuTvG9ZFoMGDSIsLAxfX19q167N33//bVu9WdmN/izat2+f7O9I/fr1bas3KxoxYgRVqlQhZ86cBAcH07hxY3bu3JlkzMWLF+nRowd58uTB39+fpk2bcvToUdtqzqoUVK6zcOFC+vbty+DBg9myZQvly5enXr16HDt2zO7SspXSpUtz+PDhhMfatWvtLinLO3fuHOXLl2fy5Mkpvj969GgmTJjAO++8w88//4yfnx/16tXj4sWLTq81q7vRnwVA/fr1k/wdmT9/vlNrzOrWrFlDjx49WL9+PStXruTSpUvUrVuXc+fOJYx54YUXWLZsGYsWLWLNmjUcOnSIp556yta6syRLkqhatarVo0ePhOdxcXFWeHi4NWLECFvryk4GDx5slS9f3u4ysjXAWrJkScLz+Ph4KzQ01BozZkzCa6dPn7a8vb2t+fPn21Rl9nD9n4VlWVZkZKT15JNP2lZTdnTs2DELsNasWWNZV/779/T0tBYtWpQwZseOHRZg/fTTTzZWmvVoRuUasbGxbN68mdq1aye85ubmRu3atfnpp59srS27+fvvvwkPD6do0aK0bduWAwcO2F1StrZ3716OHDmS5O9GYGAg1apV098Nm3z33XcEBwdTqlQpnnvuOf777z+7S8rSoqKiAAgKCgJg8+bNXLp0KcnfibvuuouCBQvq70QGU1C5xokTJ4iLiyMkJCTJ6yEhIRw5csS2urKbatWqMWvWLL788kumTp3K3r17eeCBBzhz5ozdpWVbV//7198N11C/fn1mz57N6tWrGTVqFGvWrKFBgwbExcXZXVqWFB8fz/PPP0/NmjUpU6YMXPk74eXlRa5cuZKM1d+JjJepT0+WrKlBgwYJ1+XKlaNatWoUKlSIjz76iE6dOtlam4graNWqVcJ12bJlKVeuHMWKFeO7776jVq1attaWFfXo0YPffvtNa+VsohmVa+TNmxd3d/dkq7aPHj1KaGiobXVld7ly5aJkyZLs2rXL7lKyrav//evvhmsqWrQoefPm1d+RO6Bnz54sX76cb7/9lgIFCiS8HhoaSmxsLKdPn04yXn8nMp6CyjW8vLyoVKkSq1evTngtPj6e1atXU6NGDVtry87Onj3L7t27CQsLs7uUbKtIkSKEhoYm+bsRHR3Nzz//rL8bLuCff/7hv//+09+RDGRZFj179mTJkiV88803FClSJMn7lSpVwtPTM8nfiZ07d3LgwAH9nchguvVznb59+xIZGUnlypWpWrUq48aN49y5c3To0MHu0rKNfv360ahRIwoVKsShQ4cYPHgw7u7utG7d2u7SsrSzZ88m+X/ke/fuZevWrQQFBVGwYEGef/55hg0bRokSJShSpAgDBw4kPDycxo0b21p3VpTWn0VQUBBDhw6ladOmhIaGsnv3bl566SWKFy9OvXr1bK07K+nRowfz5s3j008/JWfOnAnrTgIDA/H19SUwMJBOnTrRt29fgoKCCAgIoFevXtSoUYPq1avbXX7WYve2I1c0ceJEq2DBgpaXl5dVtWpVa/369XaXlK20bNnSCgsLs7y8vKz8+fNbLVu2tHbt2mV3WVnet99+awHJHpGRkZZ1ZYvywIEDrZCQEMvb29uqVauWtXPnTrvLzpLS+rM4f/68VbduXStfvnyWp6enVahQIatLly7WkSNH7C47S0np9x+wZs6cmTDmwoULVvfu3a3cuXNbOXLksJo0aWIdPnzY1rqzIodl/kBEREREXI7WqIiIiIjLUlARERERl6WgIiIiIi5LQUVERERcloKKiIiIuCwFFREREXFZCioiIiLishRURERExGUpqIhIpudwOFi6dKndZYjIHaCgIiK3pX379jgcjmSP+vXr212aiGQBOpRQRG5b/fr1mTlzZpLXvL29batHRLIOzaiIyG3z9vYmNDQ0ySN37txw5bbM1KlTadCgAb6+vhQtWpTFixcn+frt27fz6KOP4uvrS548eXj22Wc5e/ZskjEzZsygdOnSeHt7ExYWRs+ePZO8f+LECZo0aUKOHDkoUaIEn332WcJ7p06dom3btuTLlw9fX19KlCiRLFiJiGtSUBGRO27gwIE0bdqUbdu20bZtW1q1asWOHTsAOHfuHPXq1SN37txs3LiRRYsWsWrVqiRBZOrUqfTo0YNnn32W7du389lnn1G8ePEkP2Po0KG0aNGCX3/9lYYNG9K2bVtOnjyZ8PP/+OMPVqxYwY4dO5g6dSp58+Z18u+CiNwSu49vFpHMLTIy0nJ3d7f8/PySPIYPH25Z5nR2q1u3bkm+plq1atZzzz1nWZZlvfvuu1bu3Lmts2fPJrz/+eefW25ubtaRI0csy7Ks8PBw69VXX021BsB67bXXEp6fPXvWAqwVK1ZYlmVZjRo1sjp06JDBn1xEnEFrVETktj3yyCNMnTo1yWtBQUEJ1zVq1EjyXo0aNdi6dSsAO3bsoHz58vj5+SW8X7NmTeLj49m5cycOh4NDhw5Rq1atNGsoV65cwrWfnx8BAQEcO3YMgOeee46mTZuyZcsW6tatS+PGjbnvvvtu81OLiDMoqIjIbfPz80t2Kyaj+Pr63tQ4T0/PJM8dDgfx8fEANGjQgP379/PFF1+wcuVKatWqRY8ePXjzzTfvSM0iknG0RkVE7rj169cne3733XcDcPfdd7Nt2zbOnTuX8P66detwc3OjVKlS5MyZk8KFC7N69erbqiFfvnxERkYyZ84cxo0bx7vvvntb309EnEMzKiJy22JiYjhy5EiS1zw8PBIWrC5atIjKlStz//33M3fuXDZs2MD7778PQNu2bRk8eDCRkZEMGTKE48eP06tXL5555hlCQkIAGDJkCN26dSM4OJgGDRpw5swZ1q1bR69evW6qvkGDBlGpUiVKly5NTEwMy5cvTwhKIuLaFFRE5LZ9+eWXhIWFJXmtVKlS/Pnnn3BlR86CBQvo3r07YWFhzJ8/n3vuuQeAHDly8NVXX9GnTx+qVKlCjhw5aNq0KWPHjk34XpGRkVy8eJG3336bfv36kTdvXpo1a3bT9Xl5eTFgwAD27duHr68vDzzwAAsWLMiwzy8id47DMivmRUTuCIfDwZIlS2jcuLHdpYhIJqQ1KiIiIuKyFFRERETEZWmNiojcUbq7LCK3QzMqIiIi4rIUVERERMRlKaiIiIiIy1JQEREREZeloCIiIiIuS0FFREREXJaCioiIiLgsBRURERFxWf8PIuzl7qPYGbYAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHgCAYAAAC/0ofgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABOL0lEQVR4nO3deXhU1f3H8fdkm+wbZGVJAiIgCCJQRFRAFkHFDQUVK6gVFVyo1V+hrSxuKIpFXBC1glYFhFaqVlTcolJRdnABlV1CCFv2feb+/rjJwJgACUwyuTOf1/PcZ2buvZn5zi195uM5555jMwzDQERERMSCArxdgIiIiMjJUpARERERy1KQEREREctSkBERERHLUpARERERy1KQEREREctSkBERERHLUpARERERy1KQEREREctSkBER8SCbzcadd97p7TJE/IaCjIiFzJ8/H5vNhs1m46uvvqpx3DAMWrVqhc1m49JLL3U7VlhYyJQpU+jcuTMRERE0a9aMs846i3vuuYesrCzXeVOnTnV9Rm1bdnZ2g3/P4zlebbfffrtXaxORxhfk7QJEpP5CQ0N58803Oe+889z2Z2Zm8uuvv2K32932V1RUcMEFF7B582ZGjx7NXXfdRWFhId9//z1vvvkmV155JampqW5/M2fOHCIjI2t8dmxsrMe/T30NGjSIG2+8scb+008/3QvViIg3KciIWNDFF1/M4sWLmT17NkFBR/5v/Oabb9K9e3cOHDjgdv7SpUtZt24db7zxBtdff73bsdLSUsrLy2t8xtVXX03z5s0b5gucotNPP50bbrjB22WISBOgriURC7ruuus4ePAgy5cvd+0rLy9nyZIlNYIKwNatWwHo06dPjWOhoaFER0d7pK7OnTvTv3//GvudTictWrTg6quvdu1buHAh3bt3JyoqiujoaM4880yefvppj9QB0K9fPzp37syaNWs499xzCQsLIyMjgxdeeKHGuTk5Odxyyy0kJSURGhpK165defXVV2v9Hk8//TRnnnkmoaGhJCQkMGTIEFavXl3j3KVLl9K5c2fsdjudOnXigw8+cDteUFDAhAkTSE9Px263k5iYyKBBg1i7dq3HroGIP1CQEbGg9PR0evfuzYIFC1z7li1bRl5eHtdee22N89PS0gB47bXXMAyjTp9x6NAhDhw44Lbl5uYe929GjhzJF198UWMczVdffUVWVpartuXLl3PdddcRFxfH448/zmOPPUa/fv1YsWJFnWorLS2tUduBAwdqtCwdPnyYiy++mO7duzNjxgxatmzJHXfcwSuvvOI6p6SkhH79+vHPf/6TUaNG8cQTTxATE8OYMWNqBKtbbrmFCRMm0KpVKx5//HEmTpxIaGgoK1eurPF9x40bx7XXXsuMGTMoLS1l+PDhHDx40HXO7bffzpw5cxg+fDjPP/889913H2FhYfz44491ugYiUsUQEcuYN2+eARirVq0ynn32WSMqKsooLi42DMMwrrnmGqN///6GYRhGWlqacckll7j+rri42Gjfvr0BGGlpacaYMWOMf/zjH8a+fftqfMaUKVMMoNatffv2x61vy5YtBmA888wzbvvHjRtnREZGumq95557jOjoaKOysrLe1+BYtQHGggULXOf17dvXAIyZM2e69pWVlRlnnXWWkZiYaJSXlxuGYRizZs0yAOP11193nVdeXm707t3biIyMNPLz8w3DMIxPP/3UAIy77767Rk1Op9OtvpCQEOOXX35x7duwYUON6xITE2OMHz++3t9fRNypRUbEokaMGEFJSQnvvfceBQUFvPfee7V2KwGEhYXxzTffcP/99wPm3U+33HILKSkp3HXXXZSVldX4m3/9618sX77cbZs3b95xazr99NM566yzWLRokWufw+FgyZIlDBs2jLCwMMAcMFxUVOTWNVYfl19+eY3ali9fXqNbKygoiNtuu831OiQkhNtuu42cnBzWrFkDwPvvv09ycjLXXXed67zg4GDuvvtuCgsLyczMdF0Pm83GlClTatRjs9ncXg8cOJC2bdu6Xnfp0oXo6Gi2bdvm2hcbG8s333zjdseYiNSfBvuKWFRCQgIDBw7kzTffpLi4GIfD4TYG5bdiYmKYMWMGM2bMYOfOnXzyySc8+eSTPPvss8TExPDwww+7nX/BBRec1GDfkSNH8pe//IU9e/bQokULPv/8c3Jychg5cqTrnHHjxvHWW28xdOhQWrRoweDBgxkxYgRDhgyp02e0bNmSgQMHnvC81NRUIiIi3PZV39m0Y8cOzjnnHHbu3Em7du0ICHD/77qOHTsCsHPnTsAcZ5Samkp8fPwJP7d169Y19sXFxXH48GHX6xkzZjB69GhatWpF9+7dufjii7nxxhtp06bNCd9fRI5Qi4yIhV1//fUs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V5BJjFCQERERa1GQEVeQaR6mICMiItaiICOuINMsVEFGRESsRUFGXEEm3q4gIyIi1lKvIDNjxgxKSkpcr1esWEFZWZnrdUFBAePGjfNcddI4qgf7hijIiIiItdQryEyaNImCggLX66FDh7Jnzx7X6+LiYubOneu56qRxVAWZmCAFGRERsZZ6BRnDMI77WiyqKshEB5pBJi/Pm8WIiIjUncbISI0WmZwcbxYjIiJSdwoycmSwb9VdS7t3e7MYERGRuguq7x+8/PLLREZGAlBZWcn8+fNp3rw5gNv4GU/Zs2cPf/7zn1m2bBnFxcWcdtppzJs3jx49enj8s/xWVZCJrWqR2bXLm8WIiIjUXb2CTOvWrXnppZdcr5OTk/nnP/9Z4xxPOXz4MH369KF///4sW7aMhIQEfv75Z+Li4jz2GYIryEQFKMiIiIi11CvI7Nixo4HKqN3jjz9Oq1atmDdvnmtfRkZGo9bgF6qCTLhx5K6lvDyIifFmUSIiIifWpMfIvPPOO/To0YNrrrmGxMREunXr5tYiVJuysjLy8/PdNjmBqiATVFZEdWOXxsmIiIgV1CvIfP3117z33ntu+1577TUyMjJITExk7NixbhPknapt27YxZ84c2rVrx4cffsgdd9zB3XffzauvvnrMv5k+fToxMTGurVWrVh6rx2dVBRmKiqjuGVT3koiIWEG9gsyDDz7I999/73q9adMmbrnlFgYOHMjEiRN59913mT59useKczqdnH322Tz66KN069aNsWPHcuutt/LCCy8c828mTZpEXl6ea9utpoUTqyXI6LKJiIgV1CvIrF+/ngEDBrheL1y4kF69evHSSy9x7733Mnv2bN566y2PFZeSksIZZ5zhtq9jx47sOk5zgd1uJzo62m2TEzgqyFQ3YKlFRkRErKBeQebw4cMkJSW5XmdmZjJ06FDX6549e3q0BaRPnz5s2bLFbd9PP/1EWlqaxz5DUNeSiIhYVr2CTFJSEtu3bwegvLyctWvXcs4557iOFxQUEBwc7LHi/vjHP7Jy5UoeffRRfvnlF958801efPFFxo8f77HPENS1JCIillWvIHPxxRczceJEvvzySyZNmkR4eDjnn3++6/jGjRtp27atx4rr2bMnb7/9NgsWLKBz58489NBDzJo1i1GjRnnsM4QjQaa0lFapDkAtMiIiYg31mkfmoYce4qqrrqJv375ERkYyf/58QkJCXMdfeeUVBg8e7NECL730Ui699FKPvqf8RnWQAdISioEofv0VnE4IaNI36IuIiL+zGSexhHVeXh6RkZEEBga67T906BBRUVEe7V46Vfn5+cTExJCXl6eBv8diGBAYCIZB5e692NOScTohKwtSUrxdnIiI+KO6/n7Xq0Xm5ptvrtN5r7zySn3eVrzNZoPwcCgqIqisiNRU+PVXs3tJQUZERJqyegWZ+fPnk5aWRrdu3TiJhhxpyiIioKjINeD311/NAb+9enm7MBERkWOrV5C54447WLBgAdu3b+emm27ihhtuID4+vqFqk8akuWRERMSC6jWU87nnnmPv3r383//9H++++y6tWrVixIgRfPjhh2qhsTrNJSMiIhZU73tS7HY71113HcuXL+eHH36gU6dOjBs3jvT0dAoLCxuiRmkMmktGREQs6JRurg0ICMBms2EYBg6Hw1M1iTeoa0lERCyo3kGmrKyMBQsWMGjQIE4//XQ2bdrEs88+y65du4iMjGyIGqUxqGtJREQsqF6DfceNG8fChQtp1aoVN998MwsWLKB58+YNVZs0plqCTE4OlJZCaKj3yhIRETmeegWZF154gdatW9OmTRsyMzPJzMys9bx///vfHilOGtFRQSY+HsLCoKTEvA37tNO8W5qIiMix1CvI3HjjjdhstoaqRbzpqCBjs0Hr1rBlizngV0FGRESaqnpPiCc+6qggA0eCjMbJiIhIU6YlAcX0myCjO5dERMQKFGTEVEuLDGguGRERadoUZMR0jCCjFhkREWnKFGTEpK4lERGxIAUZMR2na0nLaImISFOlICOm3wSZli3Nl4WFkJvrnZJEREROREFGTL8JMuHhUD1ps7qXRESkqVKQEdNvggzoziUREWn6FGTEVEuQ0YBfERFp6hRkxFQdZIqLXaN7dQu2iIg0dQoyYqoOMoZhrhaJupZERKTpU5ARU3j4keeaS0ZERCxCQUZMgYEQGmo+1zIFIiJiEQoycsQxJsX79VdwOLxUk4iIyHEoyMgRvwkyyckQFGSGmL17vViXiIjIMSjIyBG/CTKBgdCihblL3UsiItIUKcjIEceZFE8DfkVEpClSkJEjNCmeiIhYjIKMHKFlCkRExGIUZOQIdS2JiIjFKMjIEepaEhERi1GQkSPUtSQiIhajICNHxMebj/v3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6jLGOAhiU+D0lAaoIABIrdrOrfWMCKBFA3yyp9RxrV0RERGRpkdBRkRERCxLQUZEREQsS0FGRERELEtBRkRERCxLQUZEREQsS0FGRERELEtBRkRERCxLQUZEREQsS0FGRERELEtBRkRERCxLQUZEREQsS0FGRERELEtBRkRERCwryNsFNDTDMADIz8/3ciUiIiJSV9W/29W/48fi80GmoKAAgFatWnm5EhEREamvgoICYmJijnncZpwo6lic0+kkKyuLqKgobDabx943Pz+fVq1asXv3bqKjoz32vnKErnHD0vVteLrGDUvXt+F58xobhkFBQQGpqakEBBx7JIzPt8gEBATQsmXLBnv/6Oho/R+ogekaNyxd34ana9ywdH0bnreu8fFaYqppsK+IiIhYloKMiIiIWJaCzEmy2+1MmTIFu93u7VJ8lq5xw9L1bXi6xg1L17fhWeEa+/xgXxEREfFdapERERERy1KQEREREctSkBERERHLUpARERERy1KQOUnPPfcc6enphIaG0qtXL7799ltvl2RZX3zxBcOGDSM1NRWbzcbSpUvdjhuGweTJk0lJSSEsLIyBAwfy888/e6dYC5o+fTo9e/YkKiqKxMRErrjiCrZs2eJ2TmlpKePHj6dZs2ZERkYyfPhw9u3b56WKrWXOnDl06dLFNWFY7969WbZsmeu4rq1nPfbYY9hsNiZMmODap2t8aqZOnYrNZnPbOnTo4Dre1K+vgsxJWLRoEffeey9Tpkxh7dq1dO3alYsuuoicnBxvl2ZJRUVFdO3aleeee67W4zNmzGD27Nm88MILfPPNN0RERHDRRRdRWlrayJVaU2ZmJuPHj2flypUsX76ciooKBg8eTFFRkeucP/7xj7z77rssXryYzMxMsrKyuOqqq7xYtXW0bNmSxx57jDVr1rB69WouvPBCLr/8cr7//ntA19aTVq1axdy5c+nSpYvbfl3jU9epUyf27t3r2r766ivXsSZ/fQ2pt9/97nfG+PHjXa8dDoeRmppqTJ8+3YtV+QbAePvtt12vnU6nkZycbDzxxBOufbm5uYbdbjcWLFjghQqtLycnxwCMzMxMwzDM6xkcHGwsXrzYdc6PP/5oAMbXX3/trTItLS4uznj55Zd1bT2ooKDAaNeunbF8+XKjb9++xj333GMYhv79esKUKVOMrl271nrMCtdXLTL1VF5ezpo1axg4cKBrX0BAAAMHDuTrr7/2YmW+afv27WRnZ7td75iYGHr16qXrfZLy8vIAiI+PB2DNmjVUVFS4XeMOHTrQunVrXeN6cjgcLFy4kKKiInr37q1r60Hjx4/nkksucbuWoH+/nvLzzz+TmppKmzZtGDVqFLt27QKscX19ftFITztw4AAOh4OkpCS3/UlJSWzevNlLVfmu7OxsgFqvd/UxqTun08mECRPo06cPnTt3BsxrHBISQmxsrNu5usZ1t2nTJnr37k1paSmRkZG8/fbbnHHGGaxfv17X1gMWLlzI2rVrWbVqVY1j+vd76nr16sX8+fNp3749e/fuZdq0aZx//vl89913lri+CjIifmT8+PF89913bv3fcurat2/P+vXrycvLY8mSJYwePZrMzExvl+UTdu/ezT333MPy5csJDQ31djk+aejQoa7nXbp0oVevXqSlpfHWW28RFhbmxcrqRl1L9dS8eXMCAwNrjNjet28fycnJXqrKd1VfU13vU3fnnXfy3nvv8dlnn9GyZUvX/uTkZMrLy8nNzXU7X9e47kJCQjjttNPo3r0706dPp2vXrjz99NO6th6wZs0acnJyOPvsswkKCiIoKIjMzExmz55NUFAQSUlJusYeFhsby+mnn84vv/xiiX/DCjL1FBISQvfu3fnkk09c+5xOJ5988gm9e/f2YmW+KSMjg+TkZLfrnZ+fzzfffKPrXUeGYXDnnXfy9ttv8+mnn5KRkeF2vHv37gQHB7td4y1btrBr1y5d45PkdDopKyvTtfWAAQMGsGnTJtavX+/aevTowahRo1zPdY09q7CwkK1bt5KSkmKNf8PeHm1sRQsXLjTsdrsxf/5844cffjDGjh1rxMbGGtnZ2d4uzZIKCgqMdevWGevWrTMA46mnnjLWrVtn7Ny50zAMw3jssceM2NhY4z//+Y+xceNG4/LLLzcyMjKMkpISL1duDXfccYcRExNjfP7558bevXtdW3Fxseuc22+/3WjdurXx6aefGqtXrzZ69+5t9O7d24tVW8fEiRONzMxMY/v27cbGjRuNiRMnGjabzfjoo48Mw9C1bQhH37VkGLrGp+pPf/qT8fnnnxvbt283VqxYYQwcONBo3ry5kZOTYxhG07++CjIn6ZlnnjFat25thISEGL/73e+MlStXersky/rss88MoMY2evRowzDMW7AfeOABIykpybDb7caAAQOMLVu2eLdoC6nt2gLGvHnzXOeUlJQY48aNM+Li4ozw8HDjyiuvNPbu3eu9oi3k5ptvNtLS0oyQkBAjISHBGDBggCvEGIaubUP4bZDRNT41I0eONFJSUoyQkBCjRYsWxsiRI41ffvnFdbypX1+bYRiGd9qCRERERE6NxsiIiIiIZSnIiIiIiGUpyIiIiIhlKciIiIiIZSnIiIiIiGUpyIiIiIhlKciIiIiIZSnIiIiIiGUpyIiIz7PZbCxdutTbZYhIA1CQEZEGNWbMGGw2W41tyJAh3i5NRHxAkLcLEBHfN2TIEObNm+e2z263e6kaEfElapERkQZnt9tJTk522+Li4gCz22fOnDkMHTqUsLAw2rRpw5IlS9z+ftOmTVx44YWEhYXRrFkzxo4dS2Fhods5r7zyCp06dcJut5OSksKdd97pdvzAgQNceeWVhIeH065dO9555x3XscOHDzNq1CgSEhIICwujXbt2NYKXiDRNCjIi4nUPPPAAw4cPZ8OGDYwaNYprr72WH3/8EYCioiIuuugi4uLiWLVqFYsXL+bjjz92Cypz5sxh/PjxjB07lk2bNvHOO+9w2mmnuX3GtGnTGDFiBBs3buTiiy9m1KhRHDp0yPX5P/zwA8uWLePHH39kzpw5NG/evPEugIicPG8vvy0ivm306NFGYGCgERER4bY98sgjhmEYBmDcfvvtbn/Tq1cv44477jAMwzBefPFFIy4uzigsLHQd/+9//2sEBAQY2dnZhmEYRmpqqvHXv/71mDUAxt/+9jfX68LCQgMwli1bZhiGYQwbNsy46aabPPOFRaRRaYyMiDS4/v37M2fOHLd98fHxrue9e/d2O9a7d2/Wr18PwI8//kjXrl2JiIhwHe/Tpw9Op5MtW7Zgs9nIyspiwIABx62hS5curucRERFER0eTk5MDwB133MHw4cNZu3YtgwcP5oorruDcc889qe8qIo1LQUZEGlxERESNrh5PCQsLq9N5wcHBbq9tNhtOpxOAoUOHsnPnTt5//32WL1/OgAEDGD9+PE8++aTH6xURz9IYGRHxupUrV9Z43bFjRwA6duzIhg0bKCoqch1fsWIFAQEBtG/fnqioKNLT0/nkk09OqYaEhARGjx7N66+/zqxZs3jxxRdP6f1EpHGoRUZEGlxZWRnZ2dlu+4KCglwDahcvXkyPHj0477zzeOONN/j222/5xz/+AcCoUaOYMmUKo0ePZurUqezfv5+77rqL3//+9yQlJQEwdepUbr/9dhITExk6dCgFBQWsWLGCu+66q071TZ48me7du9OpUyfKysp47733XEFKRJo2BRkRaXAffPABKSkpbvvat2/P5s2bAfOOooULFzJu3DhSUlJYsGABZ5xxBgDh4eF8+OGH3HPPPfTs2ZPw8HCGDx/OU0895Xqv0aNHU1payt///nfuu+8+mjdvztVXX13n+kJCQpg0aRI7duwgLCyM888/n4ULF3rgm4tIQ7MZhmF4uwgR8V82m423336bK664wtuliIgFaYyMiIiIWJaCjIiIiFiWxsiIiFepd1tEToVaZERERMSyFGRERETEshRkRERExLIUZERERMSyFGRERETEshRkRERExLIUZERERMSyFGRERETEsv4frCfIlEAJvBwAAAAASUVORK5CYII=", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] @@ -840,8 +840,7 @@ }, { "cell_type": "code", - "execution_count": 23, - "execution_state": "idle", + "execution_count": 29, "metadata": { "id": "LoGEmM5lH7_A" }, @@ -849,36 +848,35 @@ { "data": { "text/plain": [ - "(array([[1084., 317., 12., ..., 0., 0., 0.],\n", + "(array([[1273., 144., 13., ..., 0., 0., 0.],\n", " [ 0., 0., 0., ..., 0., 0., 0.],\n", " [ 0., 0., 0., ..., 0., 0., 0.],\n", " ...,\n", " [ 0., 0., 0., ..., 0., 0., 0.],\n", " [ 0., 0., 0., ..., 0., 0., 0.],\n", - " [ 0., 0., 0., ..., 31., 119., 1237.]]),\n", - " array([1. , 1.08 , 1.16 , 1.24 , 1.32 , 1.4 , 1.48 , 1.561, 1.641,\n", - " 1.721, 1.801, 1.881, 1.96 , 2.04 , 2.121, 2.2 , 2.281, 2.36 ,\n", - " 2.441, 2.52 , 2.602, 2.68 , 2.762, 2.84 , 2.92 , 3. , 3.08 ,\n", - " 3.16 , 3.24 , 3.32 , 3.4 , 3.48 , 3.56 , 3.64 , 3.72 , 3.8 ,\n", - " 3.88 , 3.96 , 4.04 , 4.12 , 4.203, 4.28 , 4.36 , 4.44 , 4.523,\n", - " 4.6 , 4.68 , 4.76 , 4.84 , 4.92 , 5. ], dtype=float16),\n", - " array([0.9453, 1.022 , 1.1 , 1.178 , 1.255 , 1.332 , 1.409 , 1.486 ,\n", - " 1.564 , 1.641 , 1.719 , 1.796 , 1.873 , 1.95 , 2.027 , 2.105 ,\n", - " 2.184 , 2.26 , 2.336 , 2.414 , 2.492 , 2.57 , 2.646 , 2.723 ,\n", - " 2.8 , 2.879 , 2.955 , 3.033 , 3.111 , 3.188 , 3.266 , 3.342 ,\n", - " 3.42 , 3.498 , 3.574 , 3.652 , 3.729 , 3.807 , 3.885 , 3.96 ,\n", - " 4.04 , 4.117 , 4.195 , 4.273 , 4.348 , 4.426 , 4.5 , 4.58 ,\n", - " 4.656 , 4.734 , 4.812 ], dtype=float16),\n", - " <matplotlib.collections.QuadMesh at 0x7f9cc006c980>)" + " [ 0., 0., 0., ..., 16., 21., 197.]]),\n", + " array([1. , 1.14 , 1.28 , 1.42 , 1.561, 1.7 , 1.84 , 1.98 , 2.121,\n", + " 2.26 , 2.4 , 2.54 , 2.68 , 2.82 , 2.96 , 3.1 , 3.24 , 3.38 ,\n", + " 3.52 , 3.66 , 3.8 , 3.94 , 4.08 , 4.22 , 4.36 , 4.5 , 4.64 ,\n", + " 4.78 , 4.92 , 5.06 , 5.2 , 5.34 , 5.48 , 5.62 , 5.76 , 5.902,\n", + " 6.04 , 6.18 , 6.32 , 6.46 , 6.6 , 6.742, 6.88 , 7.02 , 7.16 ,\n", + " 7.3 , 7.44 , 7.582, 7.72 , 7.86 , 8. ], dtype=float16),\n", + " array([0.949, 1.032, 1.115, 1.198, 1.281, 1.363, 1.446, 1.529, 1.612,\n", + " 1.695, 1.778, 1.861, 1.943, 2.027, 2.11 , 2.191, 2.275, 2.36 ,\n", + " 2.441, 2.523, 2.607, 2.69 , 2.773, 2.855, 2.938, 3.021, 3.104,\n", + " 3.188, 3.27 , 3.354, 3.436, 3.52 , 3.602, 3.684, 3.768, 3.85 ,\n", + " 3.934, 4.016, 4.1 , 4.18 , 4.266, 4.348, 4.43 , 4.516, 4.594,\n", + " 4.68 , 4.76 , 4.844, 4.93 , 5.01 , 5.094], dtype=float16),\n", + " <matplotlib.collections.QuadMesh at 0x7e0eafbe4950>)" ] }, - "execution_count": 23, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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aqqCwaC+/fZbjR071rHeYik9PV0vv/yybrzxRoVCIb322mtasGCBPvvsM82dO9fp9iLS3d2t4uJi3XrrrZo5c2a/df3NuWnX95wX7rizs7O1detW5eTkKBAIaNOmTcrNzVVTU5MyMjKGteehaGxslM/n09mzZzVu3DhVVlZq+vTpfdbG01zbGXe8zHVFRYUOHjyo+vr6sOrjZb7tjjte5vuWW25RWVmZsrOz1draqvXr1+snP/mJDh8+rOTk5IvqozXfxgWXkSo7O1vZ2dk9r3Nzc3Xs2DFt3rxZb775pqO9RaqoqEiHDx8e8DvReBTuuH0+X6//Qs/NzdX111+v0tJSPffcc8PQaXRkZ2eroaFBgUBAb7/9tlavXq2ampp+P8TjhZ1xx8Nct7S0aN26daqqqjLyQtNIRTLueJhvSVqyZEnP/87JydEtt9yiKVOm6K233tIDDzwQs/MaF1zS0tLU3t7ea197e7s8Hk/crrb05+abbzb2Q3/t2rXauXOnamtrB/0vjP7mPC0tLcZdRp+dcV9ozJgxmjNnjo4ePRqz/mIhMTFRWVlZkqR58+apvr5eL7zwgkpLSy+qjae5tjPuC5k41wcOHNDJkyd7rQB3dXWptrZWL774okKhkEaNGtXrmHiY70jGfSET57svV1xxha677rp+xxGt+TbuGhefz6fdu3f32ldVVTXgd8fxqqGhQenp6U63YYtlWVq7dq0qKyu1Z88eXXPNNYMeEw9zHsm4L9TV1aXGxkbj5vxC3d3dCoVCff4tHua6PwON+0ImzvUdd9yhxsZGNTQ09Gw33nijVq1apYaGhj4/vONhviMZ94VMnO++dHR06NixY/2OI2rzbetS3hg4c+aMdejQIevQoUOWJOt3v/uddejQIevEiROWZVnWk08+ad1777099V9++aV12WWXWY899pj1+eefWy+99JI1atQo68MPP3RwFPbZHffmzZutHTt2WF988YXV2NhorVu3zkpISLA+/vhjB0dh38MPP2x5vV6rurraam1t7dm++eabnpp7773XevLJJ3tef/rpp9bo0aOtTZs2WZ9//rn1zDPPWGPGjLEaGxsdGoV9kYx7/fr11q5du6xjx45ZBw4csO655x4rKSnJampqcmgU9j355JNWTU2Ndfz4ceuvf/2r9eSTT1oul8v66KOPLCtO59qKYNzxMNd9ufDumnid7wsNNu54me9HH33Uqq6uto4fP259+umn1sKFC62rrrrKOnnypGXFcL4dDy7nb/O9cFu9erVlWZa1evVqKy8v76JjZs+ebSUmJlrXXnuttW3bNoe6j5zdcf/2t7+1fvzjH1tJSUnWhAkTrAULFlh79uxxcASR6WvMknrNYV5eXs8/h/Peeust67rrrrMSExOtGTNmWO+9954D3UcuknEXFxdbkydPthITE63U1FTrrrvusg4ePOjQCCJz//33W1OmTLESExOtq6++2rrjjjt6PrytOJ1rK4Jxx8Nc9+XCD/B4ne8LDTbueJnvFStWWOnp6VZiYqI1adIka8WKFdbRo0d7/h6r+XZZ//kvVQAAgEuecde4AACAkYvgAgAAjEFwAQAAxiC4AAAAYxBcAACAMQguAADAGAQXAABgDIILAAAwBsEFAAAYg+ACAACMQXABAADGILgAAABj/H/iqtxtcx9+3AAAAABJRU5ErkJggg==", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAnyElEQVR4nO3df3SU9YHv8c8kIRPEzEhY8gOSIDZKJBB+SWVCa7SCNMvhkPaerMtlNyjoufaGNUilNm53/e3gpSxLl94AVoldTbOiEloEMUIDlw1oAmRPoqfUKJKISehRmSFRB0jm/tFt2kh+zEwIz3eS9+uc54958n2e55OnNPn4zfPD5vf7/QIAADBIhNUBAAAAvo6CAgAAjENBAQAAxqGgAAAA41BQAACAcSgoAADAOBQUAABgHAoKAAAwTpTVAQLR2dmpTz75RLGxsbLZbFbHAQAAAfD7/Tp37pzGjRuniIjg5kTCoqB88sknSklJsToGAAAIQVNTk5KTk4PaJiwKSmxsrKQ/foMOh8PiNDDdrf97U79jKv/vyiuQxBzffOTnAY1757GCQU5ilvn7/7nfMRXfefwKJDHH9w49FNC4Hd96ZpCTmGN59f0BjXt+9s8GOYlZAjkvF9rP69eLf9X1ezwYYVFQ/vRnHYfDQUFBvyKjY/odM9z+HUXa+z8n0vA7L1Gj7P2O4Zz0bDidlxGjogMaN5zOiRT4eZEU0uUZXCQLAACME1RBefTRR2Wz2bot6enpfW6zfft2paenKyYmRlOnTtXu3bsHFBgAAAx9Qc+gZGRkqLm5uWs5dOhQr2Orqqq0ZMkSrVixQsePH1dubq5yc3NVX18/oNAAAGBoC7qgREVFKTExsWv5q7/6q17Hbty4Ud/97ne1Zs0a3XjjjXriiSc0c+ZMbdrU/0WMAABg+Ar6Itn3339f48aNU0xMjFwul9xut1JTU3sce/jwYa1evbrbugULFqi8vLzPY/h8Pvl8vq7PXq832JjDQk7amoDG7WlYN8hJzNI+jmflfN1VZ/xWRzDS6Y/HWB3BOB8cmRDYwOzBzWGSo/tuDGzgnMHNYZrjb/R/Xjp8X4W8/6BmUG6++WaVlJTojTfeUHFxsU6ePKlvf/vbOnfuXI/jW1palJCQ0G1dQkKCWlpa+jyO2+2W0+nsWngGCgAAw0tQBSUnJ0d5eXnKzMzUggULtHv3bp09e1Yvv/zyZQ1VVFQkj8fTtTQ1NV3W/QMAALMN6Dko11xzjW644QY1NDT0+PXExES1trZ2W9fa2qrExMQ+92u322W3B3YvPgAAGHoG9ByUtrY2ffDBB0pKSurx6y6XS/v27eu2rqKiQi6XayCHBQAAQ1xQBeXBBx/UgQMH9NFHH6mqqkrf+973FBkZqSVLlkiS8vPzVVRU1DW+sLBQb7zxhtavX6/f/e53evTRR1VTU6OVK4fXY8YBAEBwgvoTz8cff6wlS5bo008/1dixY/Wtb31LR44c0dixYyVJjY2N3d5WmJWVpdLSUv3kJz/Rww8/rOuvv17l5eWaMmXK5f0uAADAkBJUQSkrK+vz65WVlZesy8vLU15eXlChEJiOuOBfvjQcRJy3OgHCRfQnI6yOYJzRJ7gl/evG1HdaHcFIUV/0P8bm639Mb3gXDwAAMA4FBQAAGIeCAgAAjENBAQAAxqGgAAAA41BQAACAcSgoAADAOAN6Fw+sFflZz2+RHu7GvHvB6gjGibhodQIz2T+zOoF5HB8N4MEVQ9ThX/3Q6ghGSqj5qt8xFy9+pd+FuH9mUAAAgHEoKAAAwDgUFAAAYBwKCgAAMA4FBQAAGIeCAgAAjMNtxhhyPBNHWB3BOCPaeV18T67+hPPydb7R/P/n627/jjugcfv2Fw1yErNEN/Z/n35EZ+i3rTODAgAAjENBAQAAxqGgAAAA41BQAACAcSgoAADAOBQUAABgHAoKAAAwDs9BwZBj9/qtjmCczyZFWh0BYeKqpi+sjmCcyLYLVkcw0rlpCf2OuXjhK+lkaPtnBgUAABiHggIAAIxDQQEAAMahoAAAAONQUAAAgHEoKAAAwDjcZhzGLn74kdURECbGr60KbODTDwxuEMNcU91idQTjvPnOP1sdwTj+mjqrIxhp5I63+x1z0R/6LdrMoAAAAONQUAAAgHEoKAAAwDgDKihr166VzWbTqlWreh1TUlIim83WbYmJiRnIYQEAwBAX8kWy1dXV2rJlizIzM/sd63A4dOLEia7PNpst1MMCAIBhIKQZlLa2Ni1dulTPPvusRo8e3e94m82mxMTEriUhof8XDAEAgOErpBmUgoICLVy4UPPmzdOTTz7Z7/i2tjZNmDBBnZ2dmjlzpp5++mllZGSEcmj8hajrrrU6gpEiLvA24687e5fL6ghG2tOwzuoIxslJWxPQuOF07vhZa42gC0pZWZmOHTum6urqgMZPmjRJzz//vDIzM+XxePTTn/5UWVlZevfdd5WcnNzjNj6fTz6fr+uz1+sNNiYAAAhjQf2Jp6mpSYWFhXrppZcCvtDV5XIpPz9f06dPV3Z2tl577TWNHTtWW7Zs6XUbt9stp9PZtaSkpAQTEwAAhLmgCsrRo0d15swZzZw5U1FRUYqKitKBAwf0s5/9TFFRUero6Oh3HyNGjNCMGTPU0NDQ65iioiJ5PJ6upampKZiYAAAgzAX1J57bb79ddXXdH/l79913Kz09XQ899JAiIyP73UdHR4fq6ur013/9172OsdvtstvtwUQDAABDSFAFJTY2VlOmTOm2btSoURozZkzX+vz8fI0fP15ut1uS9Pjjj2vOnDlKS0vT2bNntW7dOp06dUr33HPPZfoWAADAUHPZXxbY2NioiIg//+Xo888/17333quWlhaNHj1as2bNUlVVlSZPnny5Dw0AAIaIAReUysrKPj9v2LBBGzZsGOhhAADAMHLZZ1Bw5Vz88COrIxjpqtbzVkcwzmdT+h8zHAXyzI/h9LwPiZ8rPemIi7U6gpEqOrf3O8br9crpdIa0f14WCAAAjENBAQAAxqGgAAAA41BQAACAcSgoAADAOBQUAABgHG4zDmO8Arxn3mt5TcLXXXT0/56s4eiLSWOtjmCc8zmzrY5gHH9NXf+DcNkxgwIAAIxDQQEAAMahoAAAAONQUAAAgHEoKAAAwDgUFAAAYBwKCgAAMA7PQcGQE/Wl3+oIxhl5mv+rIzDRe6qtjgBIYgYFAAAYiIICAACMQ0EBAADGoaAAAADjUFAAAIBxKCgAAMA43HsYxjriYq2OYKRob4fVEYzj5z9FenTViT9YHcE4FZ3brY5gnKjrrrU6wrDEjy0AAGAcCgoAADAOBQUAABiHggIAAIxDQQEAAMahoAAAAONwm3EY842NsTqCkb5I4J/119m487pH51PjrI6AMLCnYZ3VEYYlZlAAAIBxKCgAAMA4FBQAAGAcCgoAADDOgArK2rVrZbPZtGrVqj7Hbd++Xenp6YqJidHUqVO1e/fugRwWAAAMcSEXlOrqam3ZskWZmZl9jquqqtKSJUu0YsUKHT9+XLm5ucrNzVV9fX2ohwYAAENcSAWlra1NS5cu1bPPPqvRo0f3OXbjxo367ne/qzVr1ujGG2/UE088oZkzZ2rTpk0hBQYAAENfSA+MKCgo0MKFCzVv3jw9+eSTfY49fPiwVq9e3W3dggULVF5e3us2Pp9PPp+v67PX6w0l5pAX9SUPt+iJ4yNf/4OGG5vVAcwUUXnM6gjGyUlbE9C44fRsEM6JNYIuKGVlZTp27Jiqq6sDGt/S0qKEhIRu6xISEtTS0tLrNm63W4899liw0QAAwBAR1J94mpqaVFhYqJdeekkxMYP3FNOioiJ5PJ6upampadCOBQAAzBPUDMrRo0d15swZzZw5s2tdR0eHDh48qE2bNsnn8ykyMrLbNomJiWptbe22rrW1VYmJib0ex263y263BxMNAAAMIUHNoNx+++2qq6tTbW1t13LTTTdp6dKlqq2tvaScSJLL5dK+ffu6rauoqJDL5RpYcgAAMGQFNYMSGxurKVOmdFs3atQojRkzpmt9fn6+xo8fL7fbLUkqLCxUdna21q9fr4ULF6qsrEw1NTXaunXrZfoWAADAUHPZnyTb2Nio5ubmrs9ZWVkqLS3V1q1bNW3aNL3yyisqLy+/pOgAAAD8yYDfS19ZWdnnZ0nKy8tTXl7eQA+Fr4lu/MzqCEZqS+b6JQSm89aZ/Q/CsHfxw4+sjmCk+RH9/16/6L8Q8v55Fw8AADAOBQUAABiHggIAAIxDQQEAAMahoAAAAONQUAAAgHEoKAAAwDgDfg4KrMOrvXs2or3T6gjGcX7gtzoCwgQ/VxCois7t/Y7xer1yOp0h7Z8ZFAAAYBwKCgAAMA4FBQAAGIeCAgAAjENBAQAAxqGgAAAA43CbcRgL5FXXUmC3gg0lVzV9YXUE43wx1mZ1BCNFN35mdQSEgajrrrU6gpHu+Obj/Y652PFVyPtnBgUAABiHggIAAIxDQQEAAMahoAAAAONQUAAAgHEoKAAAwDjcZhzGbDdNtTqCkb5IucrqCMZJ+n/nrI5gpIsffmR1BIQB3vDcM39NXf9j/BdC3j8zKAAAwDgUFAAAYBwKCgAAMA4FBQAAGIeCAgAAjENBAQAAxqGgAAAA4/AclDAW+RnPtuhJR7TN6gjGCeR5BcNRRed2qyMYZ35EXkDjhtO545z0LOq6a/sf1OmTToa2f2ZQAACAcSgoAADAOBQUAABgHAoKAAAwTlAFpbi4WJmZmXI4HHI4HHK5XNqzZ0+v40tKSmSz2botMTExAw4NAACGtqDu4klOTtbatWt1/fXXy+/364UXXtDixYt1/PhxZWRk9LiNw+HQiRMnuj7bbNxhAQAA+hZUQVm0aFG3z0899ZSKi4t15MiRXguKzWZTYmJi6AnRq/OpcVZHMNL5WP5y+XUB3Q4IaPjdKhsIzknP9jSs63eM1+uV0/lvIe0/5J/kHR0dKisrU3t7u1wuV6/j2traNGHCBKWkpGjx4sV69913+923z+eT1+vttgAAgOEj6IJSV1enq6++Wna7Xffdd5927NihyZMn9zh20qRJev7557Vz5069+OKL6uzsVFZWlj7++OM+j+F2u+V0OruWlJSUYGMCAIAwFnRBmTRpkmpra/X222/rBz/4gZYtW6b33nuvx7Eul0v5+fmaPn26srOz9dprr2ns2LHasmVLn8coKiqSx+PpWpqamoKNCQAAwljQj7qPjo5WWlqaJGnWrFmqrq7Wxo0b+y0dkjRixAjNmDFDDQ0NfY6z2+2y2+3BRgMAAEPEgK8m7OzslM/nC2hsR0eH6urqlJSUNNDDAgCAISyoGZSioiLl5OQoNTVV586dU2lpqSorK7V3715JUn5+vsaPHy+32y1JevzxxzVnzhylpaXp7NmzWrdunU6dOqV77rnn8n8nAABgyAiqoJw5c0b5+flqbm6W0+lUZmam9u7dq/nz50uSGhsbFRHx50mZzz//XPfee69aWlo0evRozZo1S1VVVb1eVAsAACAFWVCee+65Pr9eWVnZ7fOGDRu0YcOGoEMhMBGVx6yOYKSzN/itjoAwMT8ir98xw+0ZGIGcE2n4nRdcKpB/Kxf9F0LeP0+0AgAAxqGgAAAA41BQAACAcSgoAADAOBQUAABgHAoKAAAwTtCPuoc5bDdNtTqCkUa02ayOgDARdd21VkdAGMhJWxPQuD0N6wY5iVkCudXc6/XK6XSGtH9mUAAAgHEoKAAAwDgUFAAAYBwKCgAAMA4FBQAAGIeCAgAAjMNtxmEs8rNzVkcw0vlJX1odwTifZSVZHcFIFz/8yOoICAPD7fZhUzCDAgAAjENBAQAAxqGgAAAA41BQAACAcSgoAADAOBQUAABgHAoKAAAwDs9BCWPnU+OsjmAke8wFqyMY52KMzeoIRgrkdfEAejY/Iq/fMRf9of88ZgYFAAAYh4ICAACMQ0EBAADGoaAAAADjUFAAAIBxKCgAAMA43GaMIedLb4zVEYwz8tMOqyMY6Y5vPt7vmDff+ecrkMQc3Hp9qUD+nUjD79/KYGMGBQAAGIeCAgAAjENBAQAAxqGgAAAA4wRVUIqLi5WZmSmHwyGHwyGXy6U9e/b0uc327duVnp6umJgYTZ06Vbt37x5QYAAAMPQFVVCSk5O1du1aHT16VDU1NfrOd76jxYsX69133+1xfFVVlZYsWaIVK1bo+PHjys3NVW5ururr6y9LeAAAMDTZ/H6/fyA7iIuL07p167RixYpLvnbnnXeqvb1du3bt6lo3Z84cTZ8+XZs3bw74GF6vV06nUx6PRw6HYyBxh5Rv/Y+fBjTu0KsPDnISs2Qv/D/9jjnw+o+uQBJz5KStCWjcnoZ1g5wEwHAykN/fIV+D0tHRobKyMrW3t8vlcvU45vDhw5o3b163dQsWLNDhw4f73LfP55PX6+22AACA4SPoglJXV6err75adrtd9913n3bs2KHJkyf3OLalpUUJCQnd1iUkJKilpaXPY7jdbjmdzq4lJSUl2JgAACCMBV1QJk2apNraWr399tv6wQ9+oGXLlum99967rKGKiork8Xi6lqampsu6fwAAYLagH3UfHR2ttLQ0SdKsWbNUXV2tjRs3asuWLZeMTUxMVGtra7d1ra2tSkxM7PMYdrtddrs92GgAAGCIGPBzUDo7O+Xz+Xr8msvl0r59+7qtq6io6PWaFQAAACnIGZSioiLl5OQoNTVV586dU2lpqSorK7V3715JUn5+vsaPHy+32y1JKiwsVHZ2ttavX6+FCxeqrKxMNTU12rp16+X/TgAAwJARVEE5c+aM8vPz1dzcLKfTqczMTO3du1fz58+XJDU2Nioi4s+TMllZWSotLdVPfvITPfzww7r++utVXl6uKVOmXN7vAgAADClBFZTnnnuuz69XVlZesi4vL095eXlBhQIGIurLDqsjGIfnm/RsfkT/P5sqOrdfgSTmCOScSMPvvODK4108AADAOBQUAABgHAoKAAAwDgUFAAAYh4ICAACMQ0EBAADGCfpR9zCHz0m/7El042dWR0CY4FbZS3FOEKictDX9jrnY2fOT5gPBbzgAAGAcCgoAADAOBQUAABiHggIAAIxDQQEAAMahoAAAAONQUAAAgHF4DkoYs3s6rY5gpHPTEqyOAGAImR+RF9C44fYMmT0N6/od4/V65XT+W0j7ZwYFAAAYh4ICAACMQ0EBAADGoaAAAADjUFAAAIBxKCgAAMA43GYcxr4cE2l1BCO1JXFevo7bJAGEG2ZQAACAcSgoAADAOBQUAABgHAoKAAAwDgUFAAAYh4ICAACMw23GGHJGfspbngFcPtx+bw1mUAAAgHEoKAAAwDgUFAAAYBwKCgAAMA4FBQAAGCeoguJ2uzV79mzFxsYqPj5eubm5OnHiRJ/blJSUyGazdVtiYmIGFBoAAAxtQRWUAwcOqKCgQEeOHFFFRYUuXLigO+64Q+3t7X1u53A41Nzc3LWcOnVqQKEBAMDQFtRzUN54441un0tKShQfH6+jR4/qlltu6XU7m82mxMTE0BKiV1/FWZ3ATFe1nrc6gnF4jkPP5kfk9TuGcwdYY0DXoHg8HklSXFzfvynb2to0YcIEpaSkaPHixXr33Xf7HO/z+eT1erstAABg+Ai5oHR2dmrVqlWaO3eupkyZ0uu4SZMm6fnnn9fOnTv14osvqrOzU1lZWfr444973cbtdsvpdHYtKSkpocYEAABhKOSCUlBQoPr6epWVlfU5zuVyKT8/X9OnT1d2drZee+01jR07Vlu2bOl1m6KiInk8nq6lqakp1JgAACAMhfQunpUrV2rXrl06ePCgkpOTg9p2xIgRmjFjhhoaGnodY7fbZbfbQ4kGAACGgKBmUPx+v1auXKkdO3Zo//79mjhxYtAH7OjoUF1dnZKSkoLeFgAADA9BzaAUFBSotLRUO3fuVGxsrFpaWiRJTqdTI0eOlCTl5+dr/PjxcrvdkqTHH39cc+bMUVpams6ePat169bp1KlTuueeey7ztwIAAIaKoApKcXGxJOnWW2/ttn7btm266667JEmNjY2KiPjzxMznn3+ue++9Vy0tLRo9erRmzZqlqqoqTZ48eWDJIX9If6ADAMB8Qf2K8/v9/Y6prKzs9nnDhg3asGFDUKEAAMDwxrt4AACAcSgoAADAOBQUAABgHAoKAAAwDgUFAAAYh4ICAACMw5M0wthXY/q/7Xs4im78zOoICBMVndutjgCgF8ygAAAA41BQAACAcSgoAADAOBQUAABgHAoKAAAwDgUFAAAYh9uMw1kktxn35OKHH1kdAQhb8yPyAhrHLdoYbMygAAAA41BQAACAcSgoAADAOBQUAABgHAoKAAAwDgUFAAAYh4ICAACMw3NQwljUuC+sjgBgiOH5JjAFMygAAMA4FBQAAGAcCgoAADAOBQUAABiHggIAAIxDQQEAAMbhNuMwdn38H6yOYCRukwSA8McMCgAAMA4FBQAAGIeCAgAAjENBAQAAxgmqoLjdbs2ePVuxsbGKj49Xbm6uTpw40e9227dvV3p6umJiYjR16lTt3r075MAAAGDoC6qgHDhwQAUFBTpy5IgqKip04cIF3XHHHWpvb+91m6qqKi1ZskQrVqzQ8ePHlZubq9zcXNXX1w84PAAAGJpsfr/fH+rGf/jDHxQfH68DBw7olltu6XHMnXfeqfb2du3atatr3Zw5czR9+nRt3rw5oON4vV45nU55PB45HI5Q4w458ysfCGhcxa0bBjkJTDc/Ii+gcdyiDeByGsjv7wFdg+LxeCRJcXFxvY45fPiw5s2b123dggULdPjw4YEcGgAADGEhP6its7NTq1at0ty5czVlypRex7W0tCghIaHbuoSEBLW0tPS6jc/nk8/n6/rs9XpDjQkAAMJQyDMoBQUFqq+vV1lZ2eXMI+mPF+M6nc6uJSUl5bIfAwAAmCukgrJy5Urt2rVLv/3tb5WcnNzn2MTERLW2tnZb19raqsTExF63KSoqksfj6VqamppCiQkAAMJUUAXF7/dr5cqV2rFjh/bv36+JEyf2u43L5dK+ffu6rauoqJDL5ep1G7vdLofD0W0BAADDR1DXoBQUFKi0tFQ7d+5UbGxs13UkTqdTI0eOlCTl5+dr/PjxcrvdkqTCwkJlZ2dr/fr1WrhwocrKylRTU6OtW7de5m8FAAAMFUHNoBQXF8vj8ejWW29VUlJS1/If//EfXWMaGxvV3Nzc9TkrK0ulpaXaunWrpk2bpldeeUXl5eV9XlgLAACGtwE9B+VK4TkoPcs5WBjQuD23bBzkJAAAXMqy56AAAAAMBgoKAAAwDgUFAAAYh4ICAACMQ0EBAADGoaAAAADjhPyyQFjvxMcJ/Q8CACAMMYMCAACMQ0EBAADGoaAAAADjUFAAAIBxKCgAAMA4FBQAAGAcbjMOYwm/sQc28H8Obg4AAC43ZlAAAIBxKCgAAMA4FBQAAGAcCgoAADAOBQUAABiHggIAAIxDQQEAAMahoAAAAONQUAAAgHEoKAAAwDgUFAAAYBwKCgAAMA4FBQAAGIeCAgAAjBNldQCE7vCvfmh1BAAABgUzKAAAwDgUFAAAYBwKCgAAMA4FBQAAGIeCAgAAjBN0QTl48KAWLVqkcePGyWazqby8vM/xlZWVstlslywtLS2hZgYAAENc0AWlvb1d06ZN089//vOgtjtx4oSam5u7lvj4+GAPDQAAhomgn4OSk5OjnJycoA8UHx+va665JujtAADA8HPFrkGZPn26kpKSNH/+fP3nf/5nn2N9Pp+8Xm+3BQAADB+DXlCSkpK0efNmvfrqq3r11VeVkpKiW2+9VceOHet1G7fbLafT2bWkpKQMdkwAAGAQm9/v94e8sc2mHTt2KDc3N6jtsrOzlZqaqn//93/v8es+n08+n6/rs9frVUpKijwejxwOR6hxAQDAFeT1euV0OkP6/W3Ju3i++c1v6tChQ71+3W63y263X8FEAADAJJY8B6W2tlZJSUlWHBoAAISBoGdQ2tra1NDQ0PX55MmTqq2tVVxcnFJTU1VUVKTTp0/rl7/8pSTpX//1XzVx4kRlZGToq6++0i9+8Qvt379fb7755uX7LgAAwJASdEGpqanRbbfd1vV59erVkqRly5appKREzc3Namxs7Pr6+fPn9cMf/lCnT5/WVVddpczMTL311lvd9gEAAPCXBnSR7JUykItsAACANQby+5t38QAAAONQUAAAgHEoKAAAwDgUFAAAYBwKCgAAMA4FBQAAGIeCAgAAjENBAQAAxqGgAAAA41BQAACAcSgoAADAOBQUAABgHAoKAAAwTpTVAYKx2JmvKNuIPsdUdG6/QmkAAMBgYQYFAAAYh4ICAACMQ0EBAADGoaAAAADjUFAAAIBxKCgAAMA4YXWb8R/+182KtMdYHQMAAAwyZlAAAIBxKCgAAMA4FBQAAGAcCgoAADAOBQUAABiHggIAAIwTVrcZj154WlGj7FbHAAAAg4wZFAAAYBwKCgAAMA4FBQAAGIeCAgAAjENBAQAAxqGgAAAA4wRdUA4ePKhFixZp3LhxstlsKi8v73ebyspKzZw5U3a7XWlpaSopKQkhKgAAGC6Cfg5Ke3u7pk2bpuXLl+v73/9+v+NPnjyphQsX6r777tNLL72kffv26Z577lFSUpIWLFgQ1LF/k75HjtjIfkatD2qfAADAPEEXlJycHOXk5AQ8fvPmzZo4caLWr/9jcbjxxht16NAhbdiwIeiCAgAAhodBvwbl8OHDmjdvXrd1CxYs0OHDh3vdxufzyev1dlsAAMDwMegFpaWlRQkJCd3WJSQkyOv16ssvv+xxG7fbLafT2bWkpKQMdkwAAGAQI+/iKSoqksfj6VqampqsjgQAAK6gQX9ZYGJiolpbW7uta21tlcPh0MiRI3vcxm63y27npYAAAAxXg15QXC6Xdu/e3W1dRUWFXC5XwPvw+/2SJG9bZ79jI67iehUAAEzwp2tI//R7PBhBF5S2tjY1NDR0fT558qRqa2sVFxen1NRUFRUV6fTp0/rlL38pSbrvvvu0adMm/ehHP9Ly5cu1f/9+vfzyy3r99dcDPuann34qSZow86MARjuD+XYAAMAg+/TTT+V0Bvf7OeiCUlNTo9tuu63r8+rVqyVJy5YtU0lJiZqbm9XY2Nj19YkTJ+r111/XAw88oI0bNyo5OVm/+MUvgrrFOC4uTpLU2NgY9Dc41Hm9XqWkpKipqUkOh8PqOMbgvPSOc9M7zk3vODe949z0zuPxKDU1tev3eDBs/lDmXa4wr9crp9Mpj8fD//hfw7npGeeld5yb3nFuese56R3npncDOTdG3sUDAACGNwoKAAAwTlgUFLvdrkceeYRbj3vAuekZ56V3nJvecW56x7npHeemdwM5N2FxDQoAABhewmIGBQAADC8UFAAAYBwKCgAAMA4FBQAAGMfognLw4EEtWrRI48aNk81mU3l5udWRjOB2uzV79mzFxsYqPj5eubm5OnHihNWxjFBcXKzMzEw5HA45HA65XC7t2bPH6lhGWrt2rWw2m1atWmV1FMs9+uijstls3Zb09HSrYxnj9OnT+ru/+zuNGTNGI0eO1NSpU1VTU2N1LMtde+21l/y7sdlsKigosDqapTo6OvRP//RPmjhxokaOHKlvfOMbeuKJJ4J+H8+gvyxwINrb2zVt2jQtX75c3//+962OY4wDBw6ooKBAs2fP1sWLF/Xwww/rjjvu0HvvvadRo0ZZHc9SycnJWrt2ra6//nr5/X698MILWrx4sY4fP66MjAyr4xmjurpaW7ZsUWZmptVRjJGRkaG33nqr63NUlNE/Hq+Yzz//XHPnztVtt92mPXv2aOzYsXr//fc1evRoq6NZrrq6Wh0dHV2f6+vrNX/+fOXl5VmYynrPPPOMiouL9cILLygjI0M1NTW6++675XQ6df/99we8H6P/H5iTk6OcnByrYxjnjTfe6Pa5pKRE8fHxOnr0qG655RaLUplh0aJF3T4/9dRTKi4u1pEjRygo/62trU1Lly7Vs88+qyeffNLqOMaIiopSYmKi1TGM88wzzyglJUXbtm3rWjdx4kQLE5lj7Nix3T6vXbtW3/jGN5SdnW1RIjNUVVVp8eLFWrhwoaQ/zjT96le/0jvvvBPUfoz+Ew8C4/F4JCmklzENZR0dHSorK1N7e7tcLpfVcYxRUFCghQsXat68eVZHMcr777+vcePG6brrrtPSpUu7vfR0OPv1r3+tm266SXl5eYqPj9eMGTP07LPPWh3LOOfPn9eLL76o5cuXy2azWR3HUllZWdq3b59+//vfS5L+67/+S4cOHQp6wsHoGRT0r7OzU6tWrdLcuXM1ZcoUq+MYoa6uTi6XS1999ZWuvvpq7dixQ5MnT7Y6lhHKysp07NgxVVdXWx3FKDfffLNKSko0adIkNTc367HHHtO3v/1t1dfXKzY21up4lvrwww9VXFys1atX6+GHH1Z1dbXuv/9+RUdHa9myZVbHM0Z5ebnOnj2ru+66y+oolvvxj38sr9er9PR0RUZGqqOjQ0899ZSWLl0a1H4oKGGuoKBA9fX1OnTokNVRjDFp0iTV1tbK4/HolVde0bJly3TgwIFhX1KamppUWFioiooKxcTEWB3HKH/5X3aZmZm6+eabNWHCBL388stasWKFhcms19nZqZtuuklPP/20JGnGjBmqr6/X5s2bKSh/4bnnnlNOTo7GjRtndRTLvfzyy3rppZdUWlqqjIwM1dbWatWqVRo3blxQ/2YoKGFs5cqV2rVrlw4ePKjk5GSr4xgjOjpaaWlpkqRZs2apurpaGzdu1JYtWyxOZq2jR4/qzJkzmjlzZte6jo4OHTx4UJs2bZLP51NkZKSFCc1xzTXX6IYbblBDQ4PVUSyXlJR0Sbm/8cYb9eqrr1qUyDynTp3SW2+9pddee83qKEZYs2aNfvzjH+tv//ZvJUlTp07VqVOn5Ha7KShDnd/v1z/8wz9ox44dqqys5IK1fnR2dsrn81kdw3K333676urquq27++67lZ6eroceeohy8hfa2tr0wQcf6O///u+tjmK5uXPnXvIYg9///veaMGGCRYnMs23bNsXHx3ddFDrcffHFF4qI6H6Ja2RkpDo7O4Paj9EFpa2trdt/wZw8eVK1tbWKi4tTamqqhcmsVVBQoNLSUu3cuVOxsbFqaWmRJDmdTo0cOdLidNYqKipSTk6OUlNTde7cOZWWlqqyslJ79+61OprlYmNjL7lOadSoURozZsywv37pwQcf1KJFizRhwgR98skneuSRRxQZGaklS5ZYHc1yDzzwgLKysvT000/rb/7mb/TOO+9o69at2rp1q9XRjNDZ2alt27Zp2bJl3Jr+3xYtWqSnnnpKqampysjI0PHjx/Uv//IvWr58eXA78hvst7/9rV/SJcuyZcusjmapns6JJP+2bdusjma55cuX+ydMmOCPjo72jx071n/77bf733zzTatjGSs7O9tfWFhodQzL3Xnnnf6kpCR/dHS0f/z48f4777zT39DQYHUsY/zmN7/xT5kyxW+32/3p6en+rVu3Wh3JGHv37vVL8p84ccLqKMbwer3+wsJCf2pqqj8mJsZ/3XXX+f/xH//R7/P5gtqPze8P8tFuAAAAg4znoAAAAONQUAAAgHEoKAAAwDgUFAAAYBwKCgAAMA4FBQAAGIeCAgAAjENBAQAAxqGgAAAA41BQAACAcSgoAADAOBQUAABgnP8PZxaERTu8tggAAAAASUVORK5CYII=", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] @@ -889,7 +887,9 @@ ], "source": [ "batch_src, batch_labels, batch_padding_mask = mkbatch(4096)\n", - "output = model(batch_src, batch_padding_mask)\n", + "model.eval()\n", + "with torch.no_grad():\n", + " output = model(batch_src, batch_padding_mask)\n", "batch_src[0], batch_labels[0], output[0]\n", "x = batch_labels.detach().to(torch.float16).cpu().numpy().flatten()\n", "y = output.detach().to(torch.float16).cpu().numpy().flatten()\n", @@ -908,7 +908,6 @@ { "cell_type": "code", "execution_count": 24, - "execution_state": "idle", "metadata": {}, "outputs": [], "source": [ @@ -923,7 +922,6 @@ { "cell_type": "code", "execution_count": 27, - "execution_state": "idle", "metadata": {}, "outputs": [], "source": [ @@ -940,147 +938,1457 @@ { "cell_type": "code", "execution_count": 28, - "execution_state": "idle", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:13<00:00, 1.19it/s]\n" + "1", + "0", + "0", + "%", + "|", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "|", + " ", + "1", + "6", + "/", + "1", + "6", + " ", + "[", + "0", + "0", + ":", + "1", + "3", + "<", + "0", + "0", + ":", + "0", + "0", + ",", + " ", + " ", + "1", + ".", + "1", + "9", + "i", + "t", + "/", + "s", + "]", + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 1/1000 \t Train Err: 0.2001 \t Test Err: 0.1592\n" + "E", + "p", + "o", + "c", + "h", + " ", + "1", + "/", + "1", + "0", + "0", + "0", + " ", + "\t", + " ", + "T", + "r", + "a", + "i", + "n", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "2", + "0", + "0", + "1", + " ", + "\t", + " ", + "T", + "e", + "s", + "t", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "1", + "5", + "9", + "2", + "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:13<00:00, 1.20it/s]\n" + "1", + "0", + "0", + "%", + "|", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "|", + " ", + "1", + "6", + "/", + "1", + "6", + " ", + "[", + "0", + "0", + ":", + "1", + "3", + "<", + "0", + "0", + ":", + "0", + "0", + ",", + " ", + " ", + "1", + ".", + "2", + "0", + "i", + "t", + "/", + "s", + "]", + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 2/1000 \t Train Err: 0.1355 \t Test Err: 0.1152\n" + "E", + "p", + "o", + "c", + "h", + " ", + "2", + "/", + "1", + "0", + "0", + "0", + " ", + "\t", + " ", + "T", + "r", + "a", + "i", + "n", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "1", + "3", + "5", + "5", + " ", + "\t", + " ", + "T", + "e", + "s", + "t", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "1", + "1", + "5", + "2", + "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:13<00:00, 1.17it/s]\n" + "1", + "0", + "0", + "%", + "|", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "|", + " ", + "1", + "6", + "/", + "1", + "6", + " ", + "[", + "0", + "0", + ":", + "1", + "3", + "<", + "0", + "0", + ":", + "0", + "0", + ",", + " ", + " ", + "1", + ".", + "1", + "7", + "i", + "t", + "/", + "s", + "]", + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 3/1000 \t Train Err: 0.1039 \t Test Err: 0.0962\n" + "E", + "p", + "o", + "c", + "h", + " ", + "3", + "/", + "1", + "0", + "0", + "0", + " ", + "\t", + " ", + "T", + "r", + "a", + "i", + "n", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "1", + "0", + "3", + "9", + " ", + "\t", + " ", + "T", + "e", + "s", + "t", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "9", + "6", + "2", + "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:13<00:00, 1.17it/s]\n" + "1", + "0", + "0", + "%", + "|", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "|", + " ", + "1", + "6", + "/", + "1", + "6", + " ", + "[", + "0", + "0", + ":", + "1", + "3", + "<", + "0", + "0", + ":", + "0", + "0", + ",", + " ", + " ", + "1", + ".", + "1", + "7", + "i", + "t", + "/", + "s", + "]", + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 4/1000 \t Train Err: 0.0877 \t Test Err: 0.0815\n" + "E", + "p", + "o", + "c", + "h", + " ", + "4", + "/", + "1", + "0", + "0", + "0", + " ", + "\t", + " ", + "T", + "r", + "a", + "i", + "n", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "8", + "7", + "7", + " ", + "\t", + " ", + "T", + "e", + "s", + "t", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "8", + "1", + "5", + "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:13<00:00, 1.18it/s]\n" + "1", + "0", + "0", + "%", + "|", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "|", + " ", + "1", + "6", + "/", + "1", + "6", + " ", + "[", + "0", + "0", + ":", + "1", + "3", + "<", + "0", + "0", + ":", + "0", + "0", + ",", + " ", + " ", + "1", + ".", + "1", + "8", + "i", + "t", + "/", + "s", + "]", + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 5/1000 \t Train Err: 0.0775 \t Test Err: 0.0728\n" + "E", + "p", + "o", + "c", + "h", + " ", + "5", + "/", + "1", + "0", + "0", + "0", + " ", + "\t", + " ", + "T", + "r", + "a", + "i", + "n", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "7", + "7", + "5", + " ", + "\t", + " ", + "T", + "e", + "s", + "t", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "7", + "2", + "8", + "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:13<00:00, 1.18it/s]\n" + "1", + "0", + "0", + "%", + "|", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "|", + " ", + "1", + "6", + "/", + "1", + "6", + " ", + "[", + "0", + "0", + ":", + "1", + "3", + "<", + "0", + "0", + ":", + "0", + "0", + ",", + " ", + " ", + "1", + ".", + "1", + "8", + "i", + "t", + "/", + "s", + "]", + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 6/1000 \t Train Err: 0.0682 \t Test Err: 0.0635\n" + "E", + "p", + "o", + "c", + "h", + " ", + "6", + "/", + "1", + "0", + "0", + "0", + " ", + "\t", + " ", + "T", + "r", + "a", + "i", + "n", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "6", + "8", + "2", + " ", + "\t", + " ", + "T", + "e", + "s", + "t", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "6", + "3", + "5", + "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:13<00:00, 1.19it/s]\n" + "1", + "0", + "0", + "%", + "|", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "|", + " ", + "1", + "6", + "/", + "1", + "6", + " ", + "[", + "0", + "0", + ":", + "1", + "3", + "<", + "0", + "0", + ":", + "0", + "0", + ",", + " ", + " ", + "1", + ".", + "1", + "9", + "i", + "t", + "/", + "s", + "]", + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 7/1000 \t Train Err: 0.0605 \t Test Err: 0.0581\n" + "E", + "p", + "o", + "c", + "h", + " ", + "7", + "/", + "1", + "0", + "0", + "0", + " ", + "\t", + " ", + "T", + "r", + "a", + "i", + "n", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "6", + "0", + "5", + " ", + "\t", + " ", + "T", + "e", + "s", + "t", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "5", + "8", + "1", + "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:13<00:00, 1.17it/s]\n" + "1", + "0", + "0", + "%", + "|", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "|", + " ", + "1", + "6", + "/", + "1", + "6", + " ", + "[", + "0", + "0", + ":", + "1", + "3", + "<", + "0", + "0", + ":", + "0", + "0", + ",", + " ", + " ", + "1", + ".", + "1", + "7", + "i", + "t", + "/", + "s", + "]", + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 8/1000 \t Train Err: 0.0548 \t Test Err: 0.0513\n" + "E", + "p", + "o", + "c", + "h", + " ", + "8", + "/", + "1", + "0", + "0", + "0", + " ", + "\t", + " ", + "T", + "r", + "a", + "i", + "n", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "5", + "4", + "8", + " ", + "\t", + " ", + "T", + "e", + "s", + "t", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "5", + "1", + "3", + "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:13<00:00, 1.17it/s]\n" + "1", + "0", + "0", + "%", + "|", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "|", + " ", + "1", + "6", + "/", + "1", + "6", + " ", + "[", + "0", + "0", + ":", + "1", + "3", + "<", + "0", + "0", + ":", + "0", + "0", + ",", + " ", + " ", + "1", + ".", + "1", + "7", + "i", + "t", + "/", + "s", + "]", + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 9/1000 \t Train Err: 0.0494 \t Test Err: 0.0457\n" + "E", + "p", + "o", + "c", + "h", + " ", + "9", + "/", + "1", + "0", + "0", + "0", + " ", + "\t", + " ", + "T", + "r", + "a", + "i", + "n", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "4", + "9", + "4", + " ", + "\t", + " ", + "T", + "e", + "s", + "t", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "4", + "5", + "7", + "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "100%|███████████████████████████████████████████| 16/16 [00:13<00:00, 1.17it/s]\n" + "1", + "0", + "0", + "%", + "|", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "█", + "|", + " ", + "1", + "6", + "/", + "1", + "6", + " ", + "[", + "0", + "0", + ":", + "1", + "3", + "<", + "0", + "0", + ":", + "0", + "0", + ",", + " ", + " ", + "1", + ".", + "1", + "7", + "i", + "t", + "/", + "s", + "]", + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 10/1000 \t Train Err: 0.0445 \t Test Err: 0.0403\n" + "E", + "p", + "o", + "c", + "h", + " ", + "1", + "0", + "/", + "1", + "0", + "0", + "0", + " ", + "\t", + " ", + "T", + "r", + "a", + "i", + "n", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "4", + "4", + "5", + " ", + "\t", + " ", + "T", + "e", + "s", + "t", + " ", + "E", + "r", + "r", + ":", + " ", + "0", + ".", + "0", + "4", + "0", + "3", + "\n" ] } ], @@ -1118,7 +2426,6 @@ { "cell_type": "code", "execution_count": 29, - "execution_state": "idle", "metadata": {}, "outputs": [ { @@ -1145,7 +2452,6 @@ { "cell_type": "code", "execution_count": 30, - "execution_state": "idle", "metadata": {}, "outputs": [ { @@ -1191,7 +2497,9 @@ ], "source": [ "batch_src, batch_labels, batch_padding_mask = mktunebatch(2048)\n", - "output = model(batch_src, batch_padding_mask)\n", + "model.eval()\n", + "with torch.no_grad():\n", + " output = model(batch_src, batch_padding_mask)\n", "x = batch_labels.detach().to(torch.float16).cpu().numpy().flatten()\n", "y = output.detach().to(torch.float16).cpu().numpy().flatten()\n", "plt.hist2d(x, y, bins=50, norm=mpl.colors.LogNorm())" @@ -1227,7 +2535,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.12.3" } }, "nbformat": 4, |