nn/chapter5.ipynb
2026-04-01 23:21:14 +08:00

5308 lines
463 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"id": "initial_id",
"metadata": {
"collapsed": true,
"ExecuteTime": {
"end_time": "2026-03-29T09:05:27.116778011Z",
"start_time": "2026-03-29T09:05:25.689631294Z"
}
},
"source": [
"\n",
"import torch\n",
"import d2l\n",
"import numpy\n",
"import torch.nn as nn\n",
"import torch.nn.functional as F"
],
"outputs": [],
"execution_count": 1
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:27.211229222Z",
"start_time": "2026-03-29T09:05:27.119198350Z"
}
},
"cell_type": "code",
"source": [
"net = nn.Sequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10))\n",
"X = torch.rand(2, 20)\n",
"net(X)"
],
"id": "dcd5590e7795eec1",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[-0.0620, 0.3494, -0.2706, 0.0934, 0.1624, 0.0507, 0.0276, 0.1200,\n",
" 0.1418, 0.1422],\n",
" [-0.2129, 0.3243, -0.3727, -0.0147, 0.1620, -0.0534, 0.0918, 0.0569,\n",
" 0.0515, -0.0515]], grad_fn=<AddmmBackward0>)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 2
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:28.023879514Z",
"start_time": "2026-03-29T09:05:27.503008526Z"
}
},
"cell_type": "code",
"source": [
"class MLP(nn.Module):\n",
" def __init__(self):\n",
" super().__init__()\n",
" self.hidden=nn.Linear(20,256)\n",
" self.out=nn.Linear(256,10)\n",
" def forward(self,X):\n",
" return self.out(F.relu(self.hidden(X)))\n"
],
"id": "4ae330604b643cb4",
"outputs": [],
"execution_count": 3
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:28.598152494Z",
"start_time": "2026-03-29T09:05:28.312949801Z"
}
},
"cell_type": "code",
"source": [
"net=MLP()\n",
"net(X)"
],
"id": "cca55c6c0c7da12f",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[-0.0426, -0.0041, 0.0686, 0.0151, -0.0754, 0.0269, 0.2757, 0.0227,\n",
" 0.2260, 0.0424],\n",
" [ 0.0319, 0.0394, 0.0179, 0.0704, -0.1369, -0.0294, 0.2276, 0.0702,\n",
" 0.1313, 0.2124]], grad_fn=<AddmmBackward0>)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 4
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:28.833430055Z",
"start_time": "2026-03-29T09:05:28.633643058Z"
}
},
"cell_type": "code",
"source": [
"class FixedHiddenMLP(nn.Module):\n",
" def __init__(self):\n",
" super().__init__()\n",
" # 不计算梯度的随机权重参数。因此其在训练期间保持不变\n",
" self.rand_weight = torch.rand((20, 20), requires_grad=False)\n",
" self.linear = nn.Linear(20, 20)\n",
" def forward(self, X):\n",
" X = self.linear(X)\n",
" # 使用创建的常量参数以及relu和mm函数\n",
" X = F.relu(torch.mm(X, self.rand_weight) + 1)\n",
" # 复用全连接层。这相当于两个全连接层共享参数\n",
" X = self.linear(X)\n",
" # 控制流\n",
" while X.abs().sum() > 1:\n",
" X /= 2\n",
" return X.sum()"
],
"id": "4518d62611d5e749",
"outputs": [],
"execution_count": 5
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:28.918094363Z",
"start_time": "2026-03-29T09:05:28.865853300Z"
}
},
"cell_type": "code",
"source": [
"net = FixedHiddenMLP()\n",
"net(X)"
],
"id": "fae0187ece4ed5c6",
"outputs": [
{
"data": {
"text/plain": [
"tensor(-0.0847, grad_fn=<SumBackward0>)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 6
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:29.031399095Z",
"start_time": "2026-03-29T09:05:28.937762813Z"
}
},
"cell_type": "code",
"source": [
"class NestMLP(nn.Module):\n",
" def __init__(self):\n",
" super().__init__()\n",
" self.net = nn.Sequential(nn.Linear(20, 64), nn.ReLU(),\n",
" nn.Linear(64, 32), nn.ReLU())\n",
" self.linear = nn.Linear(32, 16)\n",
" def forward(self, X):\n",
" return self.linear(self.net(X))\n",
" chimera = nn.Sequential(NestMLP(), nn.Linear(16, 20), FixedHiddenMLP())\n",
" chimera(X)"
],
"id": "407ef13a86453aae",
"outputs": [],
"execution_count": 7
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:29.115640738Z",
"start_time": "2026-03-29T09:05:29.033684765Z"
}
},
"cell_type": "code",
"source": [
"net = nn.Sequential(nn.Linear(4, 8), nn.ReLU(), nn.Linear(8, 1))\n",
"X = torch.rand(size=(2, 4))\n",
"net(X)"
],
"id": "9f3526f263c7a249",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[-0.5641],\n",
" [-0.5857]], grad_fn=<AddmmBackward0>)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 8
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:29.228591089Z",
"start_time": "2026-03-29T09:05:29.144124890Z"
}
},
"cell_type": "code",
"source": "print(net[2].state_dict())",
"id": "8c73f8daa02ba28b",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"OrderedDict([('weight', tensor([[-0.3334, 0.0416, -0.3501, -0.1285, 0.0512, 0.2549, -0.2154, -0.2633]])), ('bias', tensor([-0.0772]))])\n"
]
}
],
"execution_count": 9
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:29.323152541Z",
"start_time": "2026-03-29T09:05:29.255547310Z"
}
},
"cell_type": "code",
"source": "net[2].state_dict()",
"id": "b6fee6b64fb96e3c",
"outputs": [
{
"data": {
"text/plain": [
"OrderedDict([('weight',\n",
" tensor([[-0.3334, 0.0416, -0.3501, -0.1285, 0.0512, 0.2549, -0.2154, -0.2633]])),\n",
" ('bias', tensor([-0.0772]))])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 10
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:29.379782432Z",
"start_time": "2026-03-29T09:05:29.328071536Z"
}
},
"cell_type": "code",
"source": "print(type(net[2].bias))",
"id": "b38e8dc384e038c5",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'torch.nn.parameter.Parameter'>\n"
]
}
],
"execution_count": 11
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:29.451394790Z",
"start_time": "2026-03-29T09:05:29.397103231Z"
}
},
"cell_type": "code",
"source": [
"print(net[2].bias)\n",
"print(net[2].bias.data)\n"
],
"id": "73f12ca3669d9ede",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Parameter containing:\n",
"tensor([-0.0772], requires_grad=True)\n",
"tensor([-0.0772])\n"
]
}
],
"execution_count": 12
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:29.518076804Z",
"start_time": "2026-03-29T09:05:29.463897541Z"
}
},
"cell_type": "code",
"source": "net[2].weight.grad==None",
"id": "db0fe33018c16fac",
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 13
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:29.588672960Z",
"start_time": "2026-03-29T09:05:29.534910431Z"
}
},
"cell_type": "code",
"source": [
"print(*[(name, param.shape) for name, param in net[0].named_parameters()])\n",
"print(*[(name, param.shape) for name, param in net.named_parameters()])"
],
"id": "75847a1c608ee5c7",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('weight', torch.Size([8, 4])) ('bias', torch.Size([8]))\n",
"('0.weight', torch.Size([8, 4])) ('0.bias', torch.Size([8])) ('2.weight', torch.Size([1, 8])) ('2.bias', torch.Size([1]))\n"
]
}
],
"execution_count": 14
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:29.642447216Z",
"start_time": "2026-03-29T09:05:29.589891260Z"
}
},
"cell_type": "code",
"source": "net.state_dict()['2.bias'].data",
"id": "cc74913e8742da7d",
"outputs": [
{
"data": {
"text/plain": [
"tensor([-0.0772])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 15
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:29.708774862Z",
"start_time": "2026-03-29T09:05:29.659219518Z"
}
},
"cell_type": "code",
"source": [
"def block1():\n",
" return nn.Sequential(nn.Linear(4, 8), nn.ReLU(), nn.Linear(8, 4),nn.ReLU())\n",
"def block2():\n",
" net = nn.Sequential()\n",
" for i in range(4):\n",
" net.add_module(f'block{i}', block1())\n",
" return net"
],
"id": "53c39c5e61fa7bf5",
"outputs": [],
"execution_count": 16
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:29.765983699Z",
"start_time": "2026-03-29T09:05:29.710778796Z"
}
},
"cell_type": "code",
"source": [
"rgnet = nn.Sequential(block2(),nn.Linear(4,1))\n",
"rgnet(X)"
],
"id": "d3ac7759b619aca",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[0.2190],\n",
" [0.2190]], grad_fn=<AddmmBackward0>)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 17
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:30.160316585Z",
"start_time": "2026-03-29T09:05:29.826193253Z"
}
},
"cell_type": "code",
"source": "print(rgnet)",
"id": "8fc60f64b07781e6",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sequential(\n",
" (0): Sequential(\n",
" (block0): Sequential(\n",
" (0): Linear(in_features=4, out_features=8, bias=True)\n",
" (1): ReLU()\n",
" (2): Linear(in_features=8, out_features=4, bias=True)\n",
" (3): ReLU()\n",
" )\n",
" (block1): Sequential(\n",
" (0): Linear(in_features=4, out_features=8, bias=True)\n",
" (1): ReLU()\n",
" (2): Linear(in_features=8, out_features=4, bias=True)\n",
" (3): ReLU()\n",
" )\n",
" (block2): Sequential(\n",
" (0): Linear(in_features=4, out_features=8, bias=True)\n",
" (1): ReLU()\n",
" (2): Linear(in_features=8, out_features=4, bias=True)\n",
" (3): ReLU()\n",
" )\n",
" (block3): Sequential(\n",
" (0): Linear(in_features=4, out_features=8, bias=True)\n",
" (1): ReLU()\n",
" (2): Linear(in_features=8, out_features=4, bias=True)\n",
" (3): ReLU()\n",
" )\n",
" )\n",
" (1): Linear(in_features=4, out_features=1, bias=True)\n",
")\n"
]
}
],
"execution_count": 18
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:30.301122409Z",
"start_time": "2026-03-29T09:05:30.198111011Z"
}
},
"cell_type": "code",
"source": "rgnet[0][1][0].bias.data",
"id": "e590aaafca787b50",
"outputs": [
{
"data": {
"text/plain": [
"tensor([-0.3955, 0.0030, -0.0100, 0.3198, -0.4639, -0.4023, -0.3653, 0.0766])"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 19
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:30.342375999Z",
"start_time": "2026-03-29T09:05:30.305643495Z"
}
},
"cell_type": "code",
"source": [
"def init_normal(m):\n",
" if type(m) == nn.Linear:\n",
" nn.init.normal_(m.weight, mean=0, std=0.01)\n",
" nn.init.zeros_(m.bias)\n",
"net.apply(init_normal)\n",
"net[0].weight.data[0], net[0].bias.data[0]"
],
"id": "925ca33221d0a87e",
"outputs": [
{
"data": {
"text/plain": [
"(tensor([-0.0059, -0.0004, -0.0091, 0.0014]), tensor(0.))"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 20
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:30.413353915Z",
"start_time": "2026-03-29T09:05:30.350001341Z"
}
},
"cell_type": "code",
"source": [
"def init_xavier(m):\n",
" if type(m) == nn.Linear:\n",
" nn.init.xavier_uniform_(m.weight)\n",
"def init_42(m):\n",
" if type(m) == nn.Linear:\n",
" nn.init.constant_(m.weight, 42)\n",
"\n",
"net[0].apply(init_xavier)\n",
"net[2].apply(init_42)\n",
"print(net[0].weight.data[0])\n",
"print(net[2].weight.data)"
],
"id": "81e2de84a8c4ef32",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([ 0.1297, -0.3070, -0.2955, 0.3630])\n",
"tensor([[42., 42., 42., 42., 42., 42., 42., 42.]])\n"
]
}
],
"execution_count": 21
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:30.481562932Z",
"start_time": "2026-03-29T09:05:30.431139492Z"
}
},
"cell_type": "code",
"source": [
"x = torch.arange(4)\n",
"torch.save(x, 'x-file')"
],
"id": "f05bb378bb60ab9e",
"outputs": [],
"execution_count": 22
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:30.535399376Z",
"start_time": "2026-03-29T09:05:30.483767993Z"
}
},
"cell_type": "code",
"source": [
"x2 = torch.load('x-file')\n",
"x2"
],
"id": "a74ecaaac0d826c6",
"outputs": [
{
"data": {
"text/plain": [
"tensor([0, 1, 2, 3])"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 23
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:30.599578181Z",
"start_time": "2026-03-29T09:05:30.548047255Z"
}
},
"cell_type": "code",
"source": [
"class MLP(nn.Module):\n",
" def __init__(self):\n",
" super().__init__()\n",
" self.hidden = nn.Linear(20, 256)\n",
" self.output = nn.Linear(256, 10)\n",
" def forward(self, x):\n",
" return self.output(F.relu(self.hidden(x)))\n",
"\n",
"net = MLP()\n",
"X = torch.randn(size=(2, 20))\n",
"Y = net(X)"
],
"id": "b42598f0c4a8e801",
"outputs": [],
"execution_count": 24
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:30.650496800Z",
"start_time": "2026-03-29T09:05:30.601298115Z"
}
},
"cell_type": "code",
"source": "torch.save(net.state_dict(), 'mlp.params')",
"id": "aaa22eef549caa6f",
"outputs": [],
"execution_count": 25
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:30.706861993Z",
"start_time": "2026-03-29T09:05:30.652573915Z"
}
},
"cell_type": "code",
"source": [
"clone = MLP()\n",
"clone.load_state_dict(torch.load('mlp.params'))\n",
"clone.eval()"
],
"id": "b92f920229abeeae",
"outputs": [
{
"data": {
"text/plain": [
"MLP(\n",
" (hidden): Linear(in_features=20, out_features=256, bias=True)\n",
" (output): Linear(in_features=256, out_features=10, bias=True)\n",
")"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 26
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:30.786547453Z",
"start_time": "2026-03-29T09:05:30.723425498Z"
}
},
"cell_type": "code",
"source": [
"Y_clone = clone(X)\n",
"Y_clone == Y"
],
"id": "646c9eb6d7cc81c2",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[True, True, True, True, True, True, True, True, True, True],\n",
" [True, True, True, True, True, True, True, True, True, True]])"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 27
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:30.901224528Z",
"start_time": "2026-03-29T09:05:30.851425725Z"
}
},
"cell_type": "code",
"source": [
"def corr2d(X,K):\n",
" h,w=K.shape\n",
" Y=torch.ones((X.shape[0]-h+1,X.shape[1]-w+1))\n",
" for i in range(Y.shape[0]):\n",
" for j in range(Y.shape[1]):\n",
" Y[i,j]=(X[i:i+h,j:j+w]*K).sum()\n",
" return Y\n"
],
"id": "d45f9adfe47fce20",
"outputs": [],
"execution_count": 28
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:31.060500958Z",
"start_time": "2026-03-29T09:05:30.961112847Z"
}
},
"cell_type": "code",
"source": [
"X = torch.tensor([[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]])\n",
"K = torch.tensor([[0.0, 1.0], [2.0, 3.0]])\n",
"corr2d(X,K)"
],
"id": "db7279e13647c315",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[19., 25.],\n",
" [37., 43.]])"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 29
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:31.226121987Z",
"start_time": "2026-03-29T09:05:31.161589982Z"
}
},
"cell_type": "code",
"source": [
"class Conv2D(nn.Module):\n",
" def __init__(self, kernel_size):\n",
" super().__init__()\n",
" self.weight = nn.Parameter(torch.rand(kernel_size))\n",
" self.bias = nn.Parameter(torch.zeros(1))\n",
" def forward(self, x):\n",
" return corr2d(x, self.weight) + self.bias\n"
],
"id": "d60be1bd12a1f37e",
"outputs": [],
"execution_count": 30
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:31.353964548Z",
"start_time": "2026-03-29T09:05:31.284845417Z"
}
},
"cell_type": "code",
"source": [
"X = torch.ones((6, 8))\n",
"X[:, 2:6] = 0\n",
"X"
],
"id": "5083789b7a728442",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[1., 1., 0., 0., 0., 0., 1., 1.],\n",
" [1., 1., 0., 0., 0., 0., 1., 1.],\n",
" [1., 1., 0., 0., 0., 0., 1., 1.],\n",
" [1., 1., 0., 0., 0., 0., 1., 1.],\n",
" [1., 1., 0., 0., 0., 0., 1., 1.],\n",
" [1., 1., 0., 0., 0., 0., 1., 1.]])"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 31
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:31.497133186Z",
"start_time": "2026-03-29T09:05:31.413547301Z"
}
},
"cell_type": "code",
"source": [
"K = torch.tensor([[1.0, -1.0]])\n",
"Y = corr2d(X, K)\n",
"Y"
],
"id": "ee8d6bedbde886ad",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[ 0., 1., 0., 0., 0., -1., 0.],\n",
" [ 0., 1., 0., 0., 0., -1., 0.],\n",
" [ 0., 1., 0., 0., 0., -1., 0.],\n",
" [ 0., 1., 0., 0., 0., -1., 0.],\n",
" [ 0., 1., 0., 0., 0., -1., 0.],\n",
" [ 0., 1., 0., 0., 0., -1., 0.]])"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 32
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:31.722341828Z",
"start_time": "2026-03-29T09:05:31.614326731Z"
}
},
"cell_type": "code",
"source": "corr2d(X.t(), K)",
"id": "a8278c3837fa9a1c",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[0., 0., 0., 0., 0.],\n",
" [0., 0., 0., 0., 0.],\n",
" [0., 0., 0., 0., 0.],\n",
" [0., 0., 0., 0., 0.],\n",
" [0., 0., 0., 0., 0.],\n",
" [0., 0., 0., 0., 0.],\n",
" [0., 0., 0., 0., 0.],\n",
" [0., 0., 0., 0., 0.]])"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 33
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:31.872242267Z",
"start_time": "2026-03-29T09:05:31.806910138Z"
}
},
"cell_type": "code",
"source": "conv2d = nn.Conv2d(1,1, kernel_size=(1, 2), bias=False)",
"id": "ec61cdb61a8cabff",
"outputs": [],
"execution_count": 34
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:31.992426160Z",
"start_time": "2026-03-29T09:05:31.931105219Z"
}
},
"cell_type": "code",
"source": [
"X = X.reshape((1, 1, 6, 8))\n",
"Y = Y.reshape((1, 1, 6, 7))\n",
"lr = 3e-2"
],
"id": "d2fc19d84c79a10",
"outputs": [],
"execution_count": 35
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:32.264274507Z",
"start_time": "2026-03-29T09:05:31.995396351Z"
}
},
"cell_type": "code",
"source": [
"for i in range(100):\n",
" Y_hat = conv2d(X)\n",
" l = (Y_hat - Y) ** 2\n",
" conv2d.zero_grad()\n",
" l.sum().backward()\n",
" # 迭代卷积核\n",
" conv2d.weight.data[:] -= lr * conv2d.weight.grad\n",
" if (i + 1) % 20 == 0:\n",
" print(f'epoch {i+1}, loss {l.sum():.3f}')"
],
"id": "51fbb2e6398a9bd5",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch 20, loss 0.000\n",
"epoch 40, loss 0.000\n",
"epoch 60, loss 0.000\n",
"epoch 80, loss 0.000\n",
"epoch 100, loss 0.000\n"
]
}
],
"execution_count": 36
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:32.346542597Z",
"start_time": "2026-03-29T09:05:32.281931301Z"
}
},
"cell_type": "code",
"source": "conv2d.weight.data.reshape((1, 2))\n",
"id": "bf53a423f429dfe4",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[ 1.0000, -1.0000]])"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 37
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:32.474945924Z",
"start_time": "2026-03-29T09:05:32.410988598Z"
}
},
"cell_type": "code",
"source": [
"\n",
"# 为了方便起见,我们定义了一个计算卷积层的函数。\n",
"# 此函数初始化卷积层权重,并对输入和输出提高和缩减相应的维数\n",
"def comp_conv2d(conv2d, X):\n",
"# 这里的11表示批量大小和通道数都是1\n",
" X = X.reshape((1, 1) + X.shape)\n",
" Y = conv2d(X)\n",
" # 省略前两个维度:批量大小和通道\n",
" return Y.reshape(Y.shape[2:])\n",
"# 请注意这里每边都填充了1行或1列因此总共添加了2行或2列\n",
"conv2d = nn.Conv2d(1, 1, kernel_size=3, padding=1)"
],
"id": "77b61d8c9a2363cc",
"outputs": [],
"execution_count": 38
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:32.610536979Z",
"start_time": "2026-03-29T09:05:32.537011140Z"
}
},
"cell_type": "code",
"source": [
"X = torch.rand(size=(8, 8))\n",
"comp_conv2d(conv2d, X).shape"
],
"id": "beda6ffa67ec2677",
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([8, 8])"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 39
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:32.680637151Z",
"start_time": "2026-03-29T09:05:32.618558400Z"
}
},
"cell_type": "code",
"source": [
"conv2d = nn.Conv2d(1, 1, kernel_size=(5, 3), padding=(2, 1))\n",
"comp_conv2d(conv2d, X).shape"
],
"id": "8c51095daea1432d",
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([8, 8])"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 40
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:32.771287457Z",
"start_time": "2026-03-29T09:05:32.697379946Z"
}
},
"cell_type": "code",
"source": [
"conv2d = nn.Conv2d(1, 1, kernel_size=3, padding=1, stride=2)\n",
"comp_conv2d(conv2d, X).shape"
],
"id": "581bf1b15162cbf6",
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([4, 4])"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 41
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:32.831539044Z",
"start_time": "2026-03-29T09:05:32.773186750Z"
}
},
"cell_type": "code",
"source": [
"conv2d = nn.Conv2d(1, 1, kernel_size=(3, 5), padding=(0, 1), stride=(3, 4))\n",
"comp_conv2d(conv2d, X).shape"
],
"id": "6f7a2411247baff0",
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([2, 2])"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 42
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:32.896336773Z",
"start_time": "2026-03-29T09:05:32.842010971Z"
}
},
"cell_type": "code",
"source": [
"def corr2d_multi_in(X,K):\n",
" return sum(corr2d(x,k) for x,k in zip(X,K))\n",
"X = torch.tensor([[[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]],\n",
"[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]])\n",
"K = torch.tensor([[[0.0, 1.0], [2.0, 3.0]], [[1.0, 2.0], [3.0, 4.0]]])\n",
"corr2d_multi_in(X, K)"
],
"id": "7ac0f17f97b2daa8",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[ 56., 72.],\n",
" [104., 120.]])"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 43
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:33.000406757Z",
"start_time": "2026-03-29T09:05:32.949274100Z"
}
},
"cell_type": "code",
"source": [
"def corr2d_multi_in_out(X,K) ->torch.Tensor :\n",
" return torch.stack([corr2d_multi_in(X,k) for k in K],0)\n"
],
"id": "d409110d0d6b4b49",
"outputs": [],
"execution_count": 44
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:33.125525859Z",
"start_time": "2026-03-29T09:05:33.060398301Z"
}
},
"cell_type": "code",
"source": [
"K = torch.stack((K, K + 1, K + 2), 0)\n",
"K.shape"
],
"id": "4114cd871a627075",
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([3, 2, 2, 2])"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 45
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:33.198169422Z",
"start_time": "2026-03-29T09:05:33.131159996Z"
}
},
"cell_type": "code",
"source": "corr2d_multi_in_out(X, K)",
"id": "ce52f41dc9585f8c",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[[ 56., 72.],\n",
" [104., 120.]],\n",
"\n",
" [[ 76., 100.],\n",
" [148., 172.]],\n",
"\n",
" [[ 96., 128.],\n",
" [192., 224.]]])"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 46
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:33.249073Z",
"start_time": "2026-03-29T09:05:33.199594667Z"
}
},
"cell_type": "code",
"source": [
"def corr2d_multi_in_out_1x1(X, K):\n",
" h_i,h,w=X.shape\n",
" h_o=K.shape[0]\n",
" X=X.reshape((h_i,h*w))\n",
" print(X.shape)\n",
" K=K.reshape((h_o,h_i))\n",
" print(K.shape)\n",
" Y=torch.matmul(K,X)\n",
" return Y.reshape((h_o,h,w))"
],
"id": "362d8c692b3c1d75",
"outputs": [],
"execution_count": 47
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:33.298538943Z",
"start_time": "2026-03-29T09:05:33.250967377Z"
}
},
"cell_type": "code",
"source": [
"X = torch.normal(0, 1, (3, 3, 3))\n",
"K = torch.normal(0, 1, (2, 3, 1, 1))"
],
"id": "28e761f677df8b16",
"outputs": [],
"execution_count": 48
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:33.354138870Z",
"start_time": "2026-03-29T09:05:33.300557739Z"
}
},
"cell_type": "code",
"source": "Y1 = corr2d_multi_in_out_1x1(X, K)",
"id": "8eb276fed751a6b9",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"torch.Size([3, 9])\n",
"torch.Size([2, 3])\n"
]
}
],
"execution_count": 49
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:33.417520891Z",
"start_time": "2026-03-29T09:05:33.369461725Z"
}
},
"cell_type": "code",
"source": [
"Y2 = corr2d_multi_in_out(X, K)\n",
"assert float(torch.abs(Y1 - Y2).sum()) < 1e-6"
],
"id": "be28e27d30f36e2c",
"outputs": [],
"execution_count": 50
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:33.468327774Z",
"start_time": "2026-03-29T09:05:33.419539671Z"
}
},
"cell_type": "code",
"source": [
"def pool2d(X,pool_size,mode='max'):\n",
" p_h,p_w =pool_size\n",
" Y = torch.zeros((X.shape[0]-p_h+1,X.shape[1]-p_w+1))\n",
" for i in range(Y.shape[0]):\n",
" for j in range(Y.shape[1]):\n",
" match mode:\n",
" case 'max':\n",
" Y[i,j]=X[i:i+p_h,j:j+p_w].max()\n",
" case 'avg':\n",
" Y[i,j]=X[i:i+p_h,j:j+p_w].mean()\n",
"\n",
" return Y"
],
"id": "3c3f71349a2e54c0",
"outputs": [],
"execution_count": 51
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:33.526566195Z",
"start_time": "2026-03-29T09:05:33.470337819Z"
}
},
"cell_type": "code",
"source": [
"X = torch.tensor([[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]])\n",
"pool2d(X, (2, 2))"
],
"id": "a67207c861cf0cfd",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[4., 5.],\n",
" [7., 8.]])"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 52
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:33.680166201Z",
"start_time": "2026-03-29T09:05:33.578598740Z"
}
},
"cell_type": "code",
"source": "pool2d(X, (2, 2), 'avg')",
"id": "e387b48df3831b85",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[2., 3.],\n",
" [5., 6.]])"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 53
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:33.855460170Z",
"start_time": "2026-03-29T09:05:33.765585069Z"
}
},
"cell_type": "code",
"source": [
"X = torch.arange(16, dtype=torch.float32).reshape((1, 1, 4, 4))\n",
"X"
],
"id": "41b618b3a48522b4",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[[[ 0., 1., 2., 3.],\n",
" [ 4., 5., 6., 7.],\n",
" [ 8., 9., 10., 11.],\n",
" [12., 13., 14., 15.]]]])"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 54
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:34.023104664Z",
"start_time": "2026-03-29T09:05:33.949683264Z"
}
},
"cell_type": "code",
"source": [
"pool2d=nn.MaxPool2d(3)\n",
"pool2d(X)"
],
"id": "c77484a8d1267259",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[[[10.]]]])"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 55
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:34.093370019Z",
"start_time": "2026-03-29T09:05:34.026511981Z"
}
},
"cell_type": "code",
"source": [
"pool2d = nn.MaxPool2d(3, padding=1, stride=2)\n",
"pool2d(X)"
],
"id": "847a2bacfb6f2bd7",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[[[ 5., 7.],\n",
" [13., 15.]]]])"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 56
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:34.146680689Z",
"start_time": "2026-03-29T09:05:34.094779518Z"
}
},
"cell_type": "code",
"source": [
"pool2d = nn.MaxPool2d((2, 3), stride=(2, 3), padding=(0, 1))\n",
"pool2d(X)"
],
"id": "5efad1e0b616fff7",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[[[ 5., 7.],\n",
" [13., 15.]]]])"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 57
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:34.239200323Z",
"start_time": "2026-03-29T09:05:34.159117900Z"
}
},
"cell_type": "code",
"source": [
"X = torch.cat((X, X + 1), 1)\n",
"X"
],
"id": "386d4b3eb8069328",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[[[ 0., 1., 2., 3.],\n",
" [ 4., 5., 6., 7.],\n",
" [ 8., 9., 10., 11.],\n",
" [12., 13., 14., 15.]],\n",
"\n",
" [[ 1., 2., 3., 4.],\n",
" [ 5., 6., 7., 8.],\n",
" [ 9., 10., 11., 12.],\n",
" [13., 14., 15., 16.]]]])"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 58
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:34.331040051Z",
"start_time": "2026-03-29T09:05:34.248225619Z"
}
},
"cell_type": "code",
"source": [
"pool2d = nn.MaxPool2d(3, padding=1, stride=2)\n",
"pool2d(X)"
],
"id": "ba5f57a8ca2a3b06",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[[[ 5., 7.],\n",
" [13., 15.]],\n",
"\n",
" [[ 6., 8.],\n",
" [14., 16.]]]])"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 59
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:34.425299189Z",
"start_time": "2026-03-29T09:05:34.352449123Z"
}
},
"cell_type": "code",
"source": [
"net = nn.Sequential(\n",
" nn.Conv2d(1,6,kernel_size=5,padding=2), #1*1*28*28 -> 1*6*28*28\n",
" nn.Sigmoid(),\n",
" nn.AvgPool2d(kernel_size=2, stride=2), #1*6*28*28 -> 1*6*14*14\n",
" nn.Conv2d(6, 16, kernel_size=5), nn.Sigmoid(), #1*6*14*14 -> 1*16*10*10\n",
" nn.AvgPool2d(kernel_size=2, stride=2), #1*16*10*10 -> 1*16*5*5\n",
" nn.Flatten(),\n",
" nn.Linear(16 * 5 * 5, 120), nn.Sigmoid(),\n",
" nn.Linear(120, 84), nn.Sigmoid(),\n",
" nn.Linear(84, 10)\n",
")\n",
"X = torch.rand(size=(1,1,28,28),dtype=torch.float32)\n",
"for layer in net:\n",
" X=layer(X)\n",
" print(layer.__class__.__name__,'output shape: \\t',X.shape)"
],
"id": "1eabc29f9c838842",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Conv2d output shape: \t torch.Size([1, 6, 28, 28])\n",
"Sigmoid output shape: \t torch.Size([1, 6, 28, 28])\n",
"AvgPool2d output shape: \t torch.Size([1, 6, 14, 14])\n",
"Conv2d output shape: \t torch.Size([1, 16, 10, 10])\n",
"Sigmoid output shape: \t torch.Size([1, 16, 10, 10])\n",
"AvgPool2d output shape: \t torch.Size([1, 16, 5, 5])\n",
"Flatten output shape: \t torch.Size([1, 400])\n",
"Linear output shape: \t torch.Size([1, 120])\n",
"Sigmoid output shape: \t torch.Size([1, 120])\n",
"Linear output shape: \t torch.Size([1, 84])\n",
"Sigmoid output shape: \t torch.Size([1, 84])\n",
"Linear output shape: \t torch.Size([1, 10])\n"
]
}
],
"execution_count": 60
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:35.484128366Z",
"start_time": "2026-03-29T09:05:34.438360644Z"
}
},
"cell_type": "code",
"source": [
"import d2l.torch as d2l\n",
"batch_size = 256\n",
"train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size=batch_size)"
],
"id": "e372f75817ad4a0f",
"outputs": [],
"execution_count": 61
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:35.582060752Z",
"start_time": "2026-03-29T09:05:35.533014324Z"
}
},
"cell_type": "code",
"source": [
"lr, num_epochs = 0.9, 10\n",
"#d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())"
],
"id": "9aaeb948f3353955",
"outputs": [],
"execution_count": 62
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:35.632954849Z",
"start_time": "2026-03-29T09:05:35.583695074Z"
}
},
"cell_type": "code",
"source": [
"class Inception(nn.Module):\n",
" def __init__(self,in_channels,c1,c2,c3,c4,**kwargs):\n",
" super(Inception,self).__init__(**kwargs)\n",
" self.p1_1 = nn.Conv2d(in_channels,c1,kernel_size=1)\n",
" self.p2_1 = nn.Conv2d(in_channels,c2[0],kernel_size=1)\n",
" self.p2_2 = nn.Conv2d(c2[0],c2[1],kernel_size=3,padding=1)\n",
" self.p3_1 = nn.Conv2d(in_channels,c3[0],kernel_size=1)\n",
" self.p3_2 = nn.Conv2d(c3[0],c3[1],kernel_size=5,padding=2)\n",
" self.p4_1 = nn.MaxPool2d(kernel_size=3, stride=1, padding=1)\n",
" self.p4_2 = nn.Conv2d(in_channels, c4, kernel_size=1)\n",
" def forward(self,x):\n",
" p1 = F.relu(self.p1_1(x))\n",
" p2 = F.relu(self.p2_2(F.relu(self.p2_1(x))))\n",
" p3 = F.relu(self.p3_2(F.relu(self.p3_1(x))))\n",
" p4 = F.relu(self.p4_2(self.p4_1(x)))\n",
" return torch.cat((p1,p2,p3,p4),dim=1)"
],
"id": "6d3bb3f70f297dba",
"outputs": [],
"execution_count": 63
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:35.690181474Z",
"start_time": "2026-03-29T09:05:35.634277862Z"
}
},
"cell_type": "code",
"source": [
"b1 = nn.Sequential(nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3),\n",
" nn.ReLU(),\n",
" nn.MaxPool2d(kernel_size=3, stride=2, padding=1))\n",
"b2 = nn.Sequential(nn.Conv2d(64, 64, kernel_size=1),\n",
" nn.ReLU(),\n",
" nn.Conv2d(64, 192, kernel_size=3, padding=1),\n",
" nn.ReLU(),\n",
" nn.MaxPool2d(kernel_size=3, stride=2, padding=1))\n",
"b3 = nn.Sequential(Inception(192, 64, (96, 128), (16, 32), 32),\n",
" Inception(256, 128, (128, 192), (32, 96), 64),\n",
" nn.MaxPool2d(kernel_size=3, stride=2, padding=1))\n",
"b4 = nn.Sequential(Inception(480, 192, (96, 208), (16, 48), 64),\n",
" Inception(512, 160, (112, 224), (24, 64), 64),\n",
" Inception(512, 128, (128, 256), (24, 64), 64),\n",
" Inception(512, 112, (144, 288), (32, 64), 64),\n",
" Inception(528, 256, (160, 320), (32, 128), 128),\n",
" nn.MaxPool2d(kernel_size=3, stride=2, padding=1))\n",
"b5 = nn.Sequential(Inception(832, 256, (160, 320), (32, 128), 128),\n",
" Inception(832, 384, (192, 384), (48, 128), 128),\n",
" nn.AdaptiveAvgPool2d((1,1)),\n",
" nn.Flatten())\n",
"net = nn.Sequential(b1, b2, b3, b4, b5, nn.Linear(1024, 10))\n",
"X = torch.rand(size=(1, 1, 96, 96))\n",
"for layer in net:\n",
" X = layer(X)\n",
" print(layer.__class__.__name__,'output shape:\\t', X.shape)"
],
"id": "6ef7022bcb288d65",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sequential output shape:\t torch.Size([1, 64, 24, 24])\n",
"Sequential output shape:\t torch.Size([1, 192, 12, 12])\n",
"Sequential output shape:\t torch.Size([1, 480, 6, 6])\n",
"Sequential output shape:\t torch.Size([1, 832, 3, 3])\n",
"Sequential output shape:\t torch.Size([1, 1024])\n",
"Linear output shape:\t torch.Size([1, 10])\n"
]
}
],
"execution_count": 64
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:36.618596478Z",
"start_time": "2026-03-29T09:05:35.704418296Z"
}
},
"cell_type": "code",
"source": [
"import torchinfo\n",
"torchinfo.summary(net,(1,1,96,96))"
],
"id": "acc019ce7afa4470",
"outputs": [
{
"data": {
"text/plain": [
"==========================================================================================\n",
"Layer (type:depth-idx) Output Shape Param #\n",
"==========================================================================================\n",
"Sequential [1, 10] --\n",
"├─Sequential: 1-1 [1, 64, 24, 24] --\n",
"│ └─Conv2d: 2-1 [1, 64, 48, 48] 3,200\n",
"│ └─ReLU: 2-2 [1, 64, 48, 48] --\n",
"│ └─MaxPool2d: 2-3 [1, 64, 24, 24] --\n",
"├─Sequential: 1-2 [1, 192, 12, 12] --\n",
"│ └─Conv2d: 2-4 [1, 64, 24, 24] 4,160\n",
"│ └─ReLU: 2-5 [1, 64, 24, 24] --\n",
"│ └─Conv2d: 2-6 [1, 192, 24, 24] 110,784\n",
"│ └─ReLU: 2-7 [1, 192, 24, 24] --\n",
"│ └─MaxPool2d: 2-8 [1, 192, 12, 12] --\n",
"├─Sequential: 1-3 [1, 480, 6, 6] --\n",
"│ └─Inception: 2-9 [1, 256, 12, 12] --\n",
"│ │ └─Conv2d: 3-1 [1, 64, 12, 12] 12,352\n",
"│ │ └─Conv2d: 3-2 [1, 96, 12, 12] 18,528\n",
"│ │ └─Conv2d: 3-3 [1, 128, 12, 12] 110,720\n",
"│ │ └─Conv2d: 3-4 [1, 16, 12, 12] 3,088\n",
"│ │ └─Conv2d: 3-5 [1, 32, 12, 12] 12,832\n",
"│ │ └─MaxPool2d: 3-6 [1, 192, 12, 12] --\n",
"│ │ └─Conv2d: 3-7 [1, 32, 12, 12] 6,176\n",
"│ └─Inception: 2-10 [1, 480, 12, 12] --\n",
"│ │ └─Conv2d: 3-8 [1, 128, 12, 12] 32,896\n",
"│ │ └─Conv2d: 3-9 [1, 128, 12, 12] 32,896\n",
"│ │ └─Conv2d: 3-10 [1, 192, 12, 12] 221,376\n",
"│ │ └─Conv2d: 3-11 [1, 32, 12, 12] 8,224\n",
"│ │ └─Conv2d: 3-12 [1, 96, 12, 12] 76,896\n",
"│ │ └─MaxPool2d: 3-13 [1, 256, 12, 12] --\n",
"│ │ └─Conv2d: 3-14 [1, 64, 12, 12] 16,448\n",
"│ └─MaxPool2d: 2-11 [1, 480, 6, 6] --\n",
"├─Sequential: 1-4 [1, 832, 3, 3] --\n",
"│ └─Inception: 2-12 [1, 512, 6, 6] --\n",
"│ │ └─Conv2d: 3-15 [1, 192, 6, 6] 92,352\n",
"│ │ └─Conv2d: 3-16 [1, 96, 6, 6] 46,176\n",
"│ │ └─Conv2d: 3-17 [1, 208, 6, 6] 179,920\n",
"│ │ └─Conv2d: 3-18 [1, 16, 6, 6] 7,696\n",
"│ │ └─Conv2d: 3-19 [1, 48, 6, 6] 19,248\n",
"│ │ └─MaxPool2d: 3-20 [1, 480, 6, 6] --\n",
"│ │ └─Conv2d: 3-21 [1, 64, 6, 6] 30,784\n",
"│ └─Inception: 2-13 [1, 512, 6, 6] --\n",
"│ │ └─Conv2d: 3-22 [1, 160, 6, 6] 82,080\n",
"│ │ └─Conv2d: 3-23 [1, 112, 6, 6] 57,456\n",
"│ │ └─Conv2d: 3-24 [1, 224, 6, 6] 226,016\n",
"│ │ └─Conv2d: 3-25 [1, 24, 6, 6] 12,312\n",
"│ │ └─Conv2d: 3-26 [1, 64, 6, 6] 38,464\n",
"│ │ └─MaxPool2d: 3-27 [1, 512, 6, 6] --\n",
"│ │ └─Conv2d: 3-28 [1, 64, 6, 6] 32,832\n",
"│ └─Inception: 2-14 [1, 512, 6, 6] --\n",
"│ │ └─Conv2d: 3-29 [1, 128, 6, 6] 65,664\n",
"│ │ └─Conv2d: 3-30 [1, 128, 6, 6] 65,664\n",
"│ │ └─Conv2d: 3-31 [1, 256, 6, 6] 295,168\n",
"│ │ └─Conv2d: 3-32 [1, 24, 6, 6] 12,312\n",
"│ │ └─Conv2d: 3-33 [1, 64, 6, 6] 38,464\n",
"│ │ └─MaxPool2d: 3-34 [1, 512, 6, 6] --\n",
"│ │ └─Conv2d: 3-35 [1, 64, 6, 6] 32,832\n",
"│ └─Inception: 2-15 [1, 528, 6, 6] --\n",
"│ │ └─Conv2d: 3-36 [1, 112, 6, 6] 57,456\n",
"│ │ └─Conv2d: 3-37 [1, 144, 6, 6] 73,872\n",
"│ │ └─Conv2d: 3-38 [1, 288, 6, 6] 373,536\n",
"│ │ └─Conv2d: 3-39 [1, 32, 6, 6] 16,416\n",
"│ │ └─Conv2d: 3-40 [1, 64, 6, 6] 51,264\n",
"│ │ └─MaxPool2d: 3-41 [1, 512, 6, 6] --\n",
"│ │ └─Conv2d: 3-42 [1, 64, 6, 6] 32,832\n",
"│ └─Inception: 2-16 [1, 832, 6, 6] --\n",
"│ │ └─Conv2d: 3-43 [1, 256, 6, 6] 135,424\n",
"│ │ └─Conv2d: 3-44 [1, 160, 6, 6] 84,640\n",
"│ │ └─Conv2d: 3-45 [1, 320, 6, 6] 461,120\n",
"│ │ └─Conv2d: 3-46 [1, 32, 6, 6] 16,928\n",
"│ │ └─Conv2d: 3-47 [1, 128, 6, 6] 102,528\n",
"│ │ └─MaxPool2d: 3-48 [1, 528, 6, 6] --\n",
"│ │ └─Conv2d: 3-49 [1, 128, 6, 6] 67,712\n",
"│ └─MaxPool2d: 2-17 [1, 832, 3, 3] --\n",
"├─Sequential: 1-5 [1, 1024] --\n",
"│ └─Inception: 2-18 [1, 832, 3, 3] --\n",
"│ │ └─Conv2d: 3-50 [1, 256, 3, 3] 213,248\n",
"│ │ └─Conv2d: 3-51 [1, 160, 3, 3] 133,280\n",
"│ │ └─Conv2d: 3-52 [1, 320, 3, 3] 461,120\n",
"│ │ └─Conv2d: 3-53 [1, 32, 3, 3] 26,656\n",
"│ │ └─Conv2d: 3-54 [1, 128, 3, 3] 102,528\n",
"│ │ └─MaxPool2d: 3-55 [1, 832, 3, 3] --\n",
"│ │ └─Conv2d: 3-56 [1, 128, 3, 3] 106,624\n",
"│ └─Inception: 2-19 [1, 1024, 3, 3] --\n",
"│ │ └─Conv2d: 3-57 [1, 384, 3, 3] 319,872\n",
"│ │ └─Conv2d: 3-58 [1, 192, 3, 3] 159,936\n",
"│ │ └─Conv2d: 3-59 [1, 384, 3, 3] 663,936\n",
"│ │ └─Conv2d: 3-60 [1, 48, 3, 3] 39,984\n",
"│ │ └─Conv2d: 3-61 [1, 128, 3, 3] 153,728\n",
"│ │ └─MaxPool2d: 3-62 [1, 832, 3, 3] --\n",
"│ │ └─Conv2d: 3-63 [1, 128, 3, 3] 106,624\n",
"│ └─AdaptiveAvgPool2d: 2-20 [1, 1024, 1, 1] --\n",
"│ └─Flatten: 2-21 [1, 1024] --\n",
"├─Linear: 1-6 [1, 10] 10,250\n",
"==========================================================================================\n",
"Total params: 5,977,530\n",
"Trainable params: 5,977,530\n",
"Non-trainable params: 0\n",
"Total mult-adds (Units.MEGABYTES): 276.66\n",
"==========================================================================================\n",
"Input size (MB): 0.04\n",
"Forward/backward pass size (MB): 4.74\n",
"Params size (MB): 23.91\n",
"Estimated Total Size (MB): 28.69\n",
"=========================================================================================="
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 65
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:36.729050116Z",
"start_time": "2026-03-29T09:05:36.672212588Z"
}
},
"cell_type": "code",
"source": [
"lr, num_epochs, batch_size = 0.1, 10, 128\n",
"train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=96)\n",
"#d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())"
],
"id": "3760a5e5813405f7",
"outputs": [],
"execution_count": 66
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:36.793463633Z",
"start_time": "2026-03-29T09:05:36.742329034Z"
}
},
"cell_type": "code",
"source": [
"class Residual(nn.Module):\n",
" def __init__(self,input_channels,num_channels,use_1x1conv=False,strides=1):\n",
" super().__init__()\n",
" self.conv1 = nn.Conv2d(input_channels,num_channels,kernel_size=3,padding=1,stride=strides)\n",
" self.conv2 = nn.Conv2d(num_channels,num_channels,kernel_size=3,padding=1)\n",
" if use_1x1conv:\n",
" self.conv3 = nn.Conv2d(input_channels,num_channels,kernel_size=1,stride=strides)\n",
" else:\n",
" self.conv3= None\n",
" self.bn1=nn.BatchNorm2d(num_channels)\n",
" self.bn2=nn.BatchNorm2d(num_channels)\n",
" def forward(self,X):\n",
" Y=F.relu(self.bn1(self.conv1(X)))\n",
" Y=self.bn2(self.conv2(Y))\n",
" if self.conv3:\n",
" X = self.conv3(X)\n",
" Y+=X\n",
" return F.relu(Y)\n"
],
"id": "9300979845ba6916",
"outputs": [],
"execution_count": 67
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:36.854913593Z",
"start_time": "2026-03-29T09:05:36.806531736Z"
}
},
"cell_type": "code",
"source": [
"blk = Residual(3,3)\n",
"X = torch.rand(4, 3, 6, 6)"
],
"id": "1248323517ff3228",
"outputs": [],
"execution_count": 68
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:36.923726941Z",
"start_time": "2026-03-29T09:05:36.856121115Z"
}
},
"cell_type": "code",
"source": [
"blk = Residual(3,6, use_1x1conv=True, strides=2)\n",
"blk(X).shape"
],
"id": "82cdbd71a157b51c",
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([4, 6, 3, 3])"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 69
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:36.973017126Z",
"start_time": "2026-03-29T09:05:36.924981665Z"
}
},
"cell_type": "code",
"source": [
"b1 = nn.Sequential(nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3),\n",
"nn.BatchNorm2d(64), nn.ReLU(),\n",
"nn.MaxPool2d(kernel_size=3, stride=2, padding=1))"
],
"id": "727da1d2d363ac62",
"outputs": [],
"execution_count": 70
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:37.023199935Z",
"start_time": "2026-03-29T09:05:36.974467726Z"
}
},
"cell_type": "code",
"source": [
"def resnet_block(input_channels, num_channels, num_residuals,\n",
" first_block=False):\n",
" blk = []\n",
" for i in range(num_residuals):\n",
" if i == 0 and not first_block:\n",
" blk.append(Residual(input_channels, num_channels,\n",
" use_1x1conv=True, strides=2))\n",
" else:\n",
" blk.append(Residual(num_channels, num_channels))\n",
" return blk"
],
"id": "124134971f8441c0",
"outputs": [],
"execution_count": 71
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:37.072041927Z",
"start_time": "2026-03-29T09:05:37.024683317Z"
}
},
"cell_type": "code",
"source": [
"b2 = nn.Sequential(*resnet_block(64, 64, 2, first_block=True))\n",
"b3 = nn.Sequential(*resnet_block(64, 128, 2))\n",
"b4 = nn.Sequential(*resnet_block(128, 256, 2))\n",
"b5 = nn.Sequential(*resnet_block(256, 512, 2))"
],
"id": "ca1f1c69fba3e913",
"outputs": [],
"execution_count": 72
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:37.121767680Z",
"start_time": "2026-03-29T09:05:37.073541025Z"
}
},
"cell_type": "code",
"source": [
"net = nn.Sequential(b1, b2, b3, b4, b5,\n",
"nn.AdaptiveAvgPool2d((1,1)),\n",
"nn.Flatten(), nn.Linear(512, 10))"
],
"id": "f21db27de5dbdec1",
"outputs": [],
"execution_count": 73
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:37.202821371Z",
"start_time": "2026-03-29T09:05:37.123064637Z"
}
},
"cell_type": "code",
"source": [
"X = torch.rand(size=(1, 1, 224, 224))\n",
"for layer in net:\n",
" X = layer(X)\n",
" print(layer.__class__.__name__,'output shape:\\t', X.shape)"
],
"id": "6f8851a2bfd18c4e",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sequential output shape:\t torch.Size([1, 64, 56, 56])\n",
"Sequential output shape:\t torch.Size([1, 64, 56, 56])\n",
"Sequential output shape:\t torch.Size([1, 128, 28, 28])\n",
"Sequential output shape:\t torch.Size([1, 256, 14, 14])\n",
"Sequential output shape:\t torch.Size([1, 512, 7, 7])\n",
"AdaptiveAvgPool2d output shape:\t torch.Size([1, 512, 1, 1])\n",
"Flatten output shape:\t torch.Size([1, 512])\n",
"Linear output shape:\t torch.Size([1, 10])\n"
]
}
],
"execution_count": 74
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:37.251179948Z",
"start_time": "2026-03-29T09:05:37.204125947Z"
}
},
"cell_type": "code",
"source": [
"lr, num_epochs, batch_size = 0.05, 10, 256\n",
"train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=96)\n",
"#d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())"
],
"id": "e095d74b29dffef6",
"outputs": [],
"execution_count": 75
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:37.324948458Z",
"start_time": "2026-03-29T09:05:37.256990577Z"
}
},
"cell_type": "code",
"source": [
"import torch\n",
"import d2l.torch as d2l\n",
"import numpy\n",
"import torch.nn as nn\n",
"import torch.nn.functional as F\n",
"print(torch.version.__version__)"
],
"id": "3fd6d22221f87bea",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.10.0+cu128\n"
]
}
],
"execution_count": 76
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:37.375981476Z",
"start_time": "2026-03-29T09:05:37.328240979Z"
}
},
"cell_type": "code",
"source": [
"A=torch.Tensor([[1,2,0,0],[0,2,0,0],[0,0,2,1],[0,0,0,3]])\n",
"C=torch.Tensor([[1,0,0,0],[0,1,0,0],[0,0,-2,3],[0,0,0,-3]])"
],
"id": "254f5d3d659dbe0f",
"outputs": [],
"execution_count": 77
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:37.425553458Z",
"start_time": "2026-03-29T09:05:37.377516460Z"
}
},
"cell_type": "code",
"source": "B=torch.Tensor([[2,0,0,0],[-2,1,0,0],[0,0,-3,0],[0,0,0,-3]])",
"id": "a13d9c27c2fdbfad",
"outputs": [],
"execution_count": 78
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:37.480263855Z",
"start_time": "2026-03-29T09:05:37.427439519Z"
}
},
"cell_type": "code",
"source": "torch.mm(A,C)",
"id": "e513a37beaa85f8f",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[ 1., 2., 0., 0.],\n",
" [ 0., 2., 0., 0.],\n",
" [ 0., 0., -4., 3.],\n",
" [ 0., 0., 0., -9.]])"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 79
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:37.626602811Z",
"start_time": "2026-03-29T09:05:37.543653646Z"
}
},
"cell_type": "code",
"source": "torch.det(torch.mm(torch.mm(A,C),B))",
"id": "9a85eceac652875f",
"outputs": [
{
"data": {
"text/plain": [
"tensor(1296.)"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 80
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:37.767593515Z",
"start_time": "2026-03-29T09:05:37.692991032Z"
}
},
"cell_type": "code",
"source": "1296**5\n",
"id": "6dc27d79722da58f",
"outputs": [
{
"data": {
"text/plain": [
"3656158440062976"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 81
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:37.817415051Z",
"start_time": "2026-03-29T09:05:37.779730510Z"
}
},
"cell_type": "code",
"source": "torch.mm(C,B)",
"id": "ec5a170d775f4705",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[ 2., 0., 0., 0.],\n",
" [-2., 1., 0., 0.],\n",
" [ 0., 0., 6., -9.],\n",
" [ 0., 0., 0., 9.]])"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 82
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:38.035076815Z",
"start_time": "2026-03-29T09:05:37.870776022Z"
}
},
"cell_type": "code",
"source": [
"T = 1000 # 总共产生1000个点\n",
"time = torch.arange(1, T + 1, dtype=torch.float32)\n",
"x = torch.sin(0.01 * time) + torch.normal(0, 0.2, (T,))\n",
"d2l.plot(time, [x], 'time', 'x', xlim=[1, 1000], figsize=(6, 3))"
],
"id": "c3884b10464c6baa",
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 600x300 with 1 Axes>"
],
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"406.885938pt\" height=\"211.07625pt\" viewBox=\"0 0 406.885938 211.07625\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <cc:Work>\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n <dc:date>2026-03-29T17:05:37.982813</dc:date>\n <dc:format>image/svg+xml</dc:format>\n <dc:creator>\n <cc:Agent>\n <dc:title>Matplotlib v3.7.2, https://matplotlib.org/</dc:title>\n </cc:Agent>\n </dc:creator>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs>\n <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n <g id=\"patch_1\">\n <path d=\"M 0 211.07625 \nL 406.885938 211.07625 \nL 406.885938 0 \nL 0 0 \nz\n\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 52.160938 173.52 \nL 386.960938 173.52 \nL 386.960938 7.2 \nL 52.160938 7.2 \nz\n\"/>\n </g>\n <g id=\"matplotlib.axis_1\">\n <g id=\"xtick_1\">\n <g id=\"line2d_1\">\n <path d=\"M 118.852829 173.52 \nL 118.852829 7.2 \n\" clip-path=\"url(#p7343e200b2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_2\">\n <defs>\n <path id=\"m1e127b037b\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m1e127b037b\" x=\"118.852829\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_1\">\n <!-- 200 -->\n <g style=\"fill: #ffffff\" transform=\"translate(109.309079 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-32\" d=\"M 1228 531 \nL 3431 531 \nL 3431 0 \nL 469 0 \nL 469 531 \nQ 828 903 1448 1529 \nQ 2069 2156 2228 2338 \nQ 2531 2678 2651 2914 \nQ 2772 3150 2772 3378 \nQ 2772 3750 2511 3984 \nQ 2250 4219 1831 4219 \nQ 1534 4219 1204 4116 \nQ 875 4013 500 3803 \nL 500 4441 \nQ 881 4594 1212 4672 \nQ 1544 4750 1819 4750 \nQ 2544 4750 2975 4387 \nQ 3406 4025 3406 3419 \nQ 3406 3131 3298 2873 \nQ 3191 2616 2906 2266 \nQ 2828 2175 2409 1742 \nQ 1991 1309 1228 531 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \nQ 1547 4250 1301 3770 \nQ 1056 3291 1056 2328 \nQ 1056 1369 1301 889 \nQ 1547 409 2034 409 \nQ 2525 409 2770 889 \nQ 3016 1369 3016 2328 \nQ 3016 3291 2770 3770 \nQ 2525 4250 2034 4250 \nz\nM 2034 4750 \nQ 2819 4750 3233 4129 \nQ 3647 3509 3647 2328 \nQ 3647 1150 3233 529 \nQ 2819 -91 2034 -91 \nQ 1250 -91 836 529 \nQ 422 1150 422 2328 \nQ 422 3509 836 4129 \nQ 1250 4750 2034 4750 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-32\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_2\">\n <g id=\"line2d_3\">\n <path d=\"M 185.879856 173.52 \nL 185.879856 7.2 \n\" clip-path=\"url(#p7343e200b2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_4\">\n <g>\n <use xlink:href=\"#m1e127b037b\" x=\"185.879856\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_2\">\n <!-- 400 -->\n <g style=\"fill: #ffffff\" transform=\"translate(176.336106 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-34\" d=\"M 2419 4116 \nL 825 1625 \nL 2419 1625 \nL 2419 4116 \nz\nM 2253 4666 \nL 3047 4666 \nL 3047 1625 \nL 3713 1625 \nL 3713 1100 \nL 3047 1100 \nL 3047 0 \nL 2419 0 \nL 2419 1100 \nL 313 1100 \nL 313 1709 \nL 2253 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-34\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_3\">\n <g id=\"line2d_5\">\n <path d=\"M 252.906883 173.52 \nL 252.906883 7.2 \n\" clip-path=\"url(#p7343e200b2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_6\">\n <g>\n <use xlink:href=\"#m1e127b037b\" x=\"252.906883\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_3\">\n <!-- 600 -->\n <g style=\"fill: #ffffff\" transform=\"translate(243.363133 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-36\" d=\"M 2113 2584 \nQ 1688 2584 1439 2293 \nQ 1191 2003 1191 1497 \nQ 1191 994 1439 701 \nQ 1688 409 2113 409 \nQ 2538 409 2786 701 \nQ 3034 994 3034 1497 \nQ 3034 2003 2786 2293 \nQ 2538 2584 2113 2584 \nz\nM 3366 4563 \nL 3366 3988 \nQ 3128 4100 2886 4159 \nQ 2644 4219 2406 4219 \nQ 1781 4219 1451 3797 \nQ 1122 3375 1075 2522 \nQ 1259 2794 1537 2939 \nQ 1816 3084 2150 3084 \nQ 2853 3084 3261 2657 \nQ 3669 2231 3669 1497 \nQ 3669 778 3244 343 \nQ 2819 -91 2113 -91 \nQ 1303 -91 875 529 \nQ 447 1150 447 2328 \nQ 447 3434 972 4092 \nQ 1497 4750 2381 4750 \nQ 2619 4750 2861 4703 \nQ 3103 4656 3366 4563 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-36\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_4\">\n <g id=\"line2d_7\">\n <path d=\"M 319.93391 173.52 \nL 319.93391 7.2 \n\" clip-path=\"url(#p7343e200b2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_8\">\n <g>\n <use xlink:href=\"#m1e127b037b\" x=\"319.93391\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_4\">\n <!-- 800 -->\n <g style=\"fill: #ffffff\" transform=\"translate(310.39016 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-38\" d=\"M 2034 2216 \nQ 1584 2216 1326 1975 \nQ 1069 1734 1069 1313 \nQ 1069 891 1326 650 \nQ 1584 409 2034 409 \nQ 2484 409 2743 651 \nQ 3003 894 3003 1313 \nQ 3003 1734 2745 1975 \nQ 2488 2216 2034 2216 \nz\nM 1403 2484 \nQ 997 2584 770 2862 \nQ 544 3141 544 3541 \nQ 544 4100 942 4425 \nQ 1341 4750 2034 4750 \nQ 2731 4750 3128 4425 \nQ 3525 4100 3525 3541 \nQ 3525 3141 3298 2862 \nQ 3072 2584 2669 2484 \nQ 3125 2378 3379 2068 \nQ 3634 1759 3634 1313 \nQ 3634 634 3220 271 \nQ 2806 -91 2034 -91 \nQ 1263 -91 848 271 \nQ 434 634 434 1313 \nQ 434 1759 690 2068 \nQ 947 2378 1403 2484 \nz\nM 1172 3481 \nQ 1172 3119 1398 2916 \nQ 1625 2713 2034 2713 \nQ 2441 2713 2670 2916 \nQ 2900 3119 2900 3481 \nQ 2900 3844 2670 4047 \nQ 2441 4250 2034 4250 \nQ 1625 4250 1398 4047 \nQ 1172 3844 1172 3481 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-38\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_5\">\n <g id=\"line2d_9\">\n <path d=\"M 386.960938 173.52 \nL 386.960938 7.2 \n\" clip-path=\"url(#p7343e200b2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_10\">\n <g>\n <use xlink:href=\"#m1e127b037b\" x=\"386.960938\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_5\">\n <!-- 1000 -->\n <g style=\"fill: #ffffff\" transform=\"translate(374.235937 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-31\" d=\"M 794 531 \nL 1825 531 \nL 1825 4091 \nL 703 3866 \nL 703 4441 \nL 1819 4666 \nL 2450 4666 \nL 2450 531 \nL 3481 531 \nL 3481 0 \nL 794 0 \nL 794 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n </g>\n </g>\n </g>\n <g id=\"text_6\">\n <!-- time -->\n <g style=\"fill: #ffffff\" transform=\"translate(208.264844 201.796563) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-74\" d=\"M 1172 4494 \nL 1172 3500 \nL 2356 3500 \nL 2356 3053 \nL 1172 3053 \nL 1172 1153 \nQ 1172 725 1289 603 \nQ 1406 481 1766 481 \nL 2356 481 \nL 2356 0 \nL 1766 0 \nQ 1100 0 847 248 \nQ 594 497 594 1153 \nL 594 3053 \nL 172 3053 \nL 172 3500 \nL 594 3500 \nL 594 4494 \nL 1172 4494 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-69\" d=\"M 603 3500 \nL 1178 3500 \nL 1178 0 \nL 603 0 \nL 603 3500 \nz\nM 603 4863 \nL 1178 4863 \nL 1178 4134 \nL 603 4134 \nL 603 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6d\" d=\"M 3328 2828 \nQ 3544 3216 3844 3400 \nQ 4144 3584 4550 3584 \nQ 5097 3584 5394 3201 \nQ 5691 2819 5691 2113 \nL 5691 0 \nL 5113 0 \nL 5113 2094 \nQ 5113 2597 4934 2840 \nQ 4756 3084 4391 3084 \nQ 3944 3084 3684 2787 \nQ 3425 2491 3425 1978 \nL 3425 0 \nL 2847 0 \nL 2847 2094 \nQ 2847 2600 2669 2842 \nQ 2491 3084 2119 3084 \nQ 1678 3084 1418 2786 \nQ 1159 2488 1159 1978 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1356 3278 1631 3431 \nQ 1906 3584 2284 3584 \nQ 2666 3584 2933 3390 \nQ 3200 3197 3328 2828 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-65\" d=\"M 3597 1894 \nL 3597 1613 \nL 953 1613 \nQ 991 1019 1311 708 \nQ 1631 397 2203 397 \nQ 2534 397 2845 478 \nQ 3156 559 3463 722 \nL 3463 178 \nQ 3153 47 2828 -22 \nQ 2503 -91 2169 -91 \nQ 1331 -91 842 396 \nQ 353 884 353 1716 \nQ 353 2575 817 3079 \nQ 1281 3584 2069 3584 \nQ 2775 3584 3186 3129 \nQ 3597 2675 3597 1894 \nz\nM 3022 2063 \nQ 3016 2534 2758 2815 \nQ 2500 3097 2075 3097 \nQ 1594 3097 1305 2825 \nQ 1016 2553 972 2059 \nL 3022 2063 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-6d\" x=\"66.992188\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"164.404297\"/>\n </g>\n </g>\n </g>\n <g id=\"matplotlib.axis_2\">\n <g id=\"ytick_1\">\n <g id=\"line2d_11\">\n <path d=\"M 52.160938 160.014472 \nL 386.960938 160.014472 \n\" clip-path=\"url(#p7343e200b2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_12\">\n <defs>\n <path id=\"m0a9480ec35\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m0a9480ec35\" x=\"52.160938\" y=\"160.014472\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_7\">\n <!-- 1.5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 163.813691) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-2212\" d=\"M 678 2272 \nL 4684 2272 \nL 4684 1741 \nL 678 1741 \nL 678 2272 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-2e\" d=\"M 684 794 \nL 1344 794 \nL 1344 0 \nL 684 0 \nL 684 794 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-35\" d=\"M 691 4666 \nL 3169 4666 \nL 3169 4134 \nL 1269 4134 \nL 1269 2991 \nQ 1406 3038 1543 3061 \nQ 1681 3084 1819 3084 \nQ 2600 3084 3056 2656 \nQ 3513 2228 3513 1497 \nQ 3513 744 3044 326 \nQ 2575 -91 1722 -91 \nQ 1428 -91 1123 -41 \nQ 819 9 494 109 \nL 494 744 \nQ 775 591 1075 516 \nQ 1375 441 1709 441 \nQ 2250 441 2565 725 \nQ 2881 1009 2881 1497 \nQ 2881 1984 2565 2268 \nQ 2250 2553 1709 2553 \nQ 1456 2553 1204 2497 \nQ 953 2441 691 2322 \nL 691 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-31\" x=\"83.789062\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"147.412109\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"179.199219\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_2\">\n <g id=\"line2d_13\">\n <path d=\"M 52.160938 135.253565 \nL 386.960938 135.253565 \n\" clip-path=\"url(#p7343e200b2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_14\">\n <g>\n <use xlink:href=\"#m0a9480ec35\" x=\"52.160938\" y=\"135.253565\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_8\">\n <!-- 1.0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 139.052784) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-31\" x=\"83.789062\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"147.412109\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"179.199219\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_3\">\n <g id=\"line2d_15\">\n <path d=\"M 52.160938 110.492659 \nL 386.960938 110.492659 \n\" clip-path=\"url(#p7343e200b2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_16\">\n <g>\n <use xlink:href=\"#m0a9480ec35\" x=\"52.160938\" y=\"110.492659\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_9\">\n <!-- 0.5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 114.291877) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"83.789062\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"147.412109\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"179.199219\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_4\">\n <g id=\"line2d_17\">\n <path d=\"M 52.160938 85.731752 \nL 386.960938 85.731752 \n\" clip-path=\"url(#p7343e200b2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_18\">\n <g>\n <use xlink:href=\"#m0a9480ec35\" x=\"52.160938\" y=\"85.731752\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_10\">\n <!-- 0.0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(29.257812 89.530971) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_5\">\n <g id=\"line2d_19\">\n <path d=\"M 52.160938 60.970846 \nL 386.960938 60.970846 \n\" clip-path=\"url(#p7343e200b2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_20\">\n <g>\n <use xlink:href=\"#m0a9480ec35\" x=\"52.160938\" y=\"60.970846\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_11\">\n <!-- 0.5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(29.257812 64.770064) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_6\">\n <g id=\"line2d_21\">\n <path d=\"M 52.160938 36.209939 \nL 386.960938 36.209939 \n\" clip-path=\"url(#p7343e200b2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_22\">\n <g>\n <use xlink:href=\"#m0a9480ec35\" x=\"52.160938\" y=\"36.209939\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_12\">\n <!-- 1.0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(29.257812 40.009158) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_7\">\n <g id=\"line2d_23\">\n <path d=\"M 52.160938 11.449033 \nL 386.960938 11.449033 \n\" clip-path=\"url(#p7343e200b2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_24\">\n <g>\n <use xlink:href=\"#m0a9480ec35\" x=\"52.160938\" y=\"11.449033\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_13\">\n <!-- 1.5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(29.257812 15.248251) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"text_14\">\n <!-- x -->\n <g style=\"fill: #ffffff\" transform=\"translate(14.798438 93.319375) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-78\" d=\"M 3513 3500 \nL 2247 1797 \nL 3578 0 \nL 2900 0 \nL 1881 1375 \nL 863 0 \nL 184 0 \nL 1544 1831 \nL 300 3500 \nL 978 3500 \nL 1906 2253 \nL 2834 3500 \nL 3513 3500 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-78\"/>\n </g>\n </g>\n </g>\n <g id=\"line2d_25\">\n <path d=\"M 52.160938 82.540677 \nL 52.496073 87.160423 \nL 52.831208 74.607543 \nL 53.166343 94.258802 \nL 53.501478 82.445828 \nL 53.836613 90.863697 \nL 54.171748 81.330838 \nL 54.842019 75.670799 \nL 55.177154 74.733618 \nL 55.512289 65.807545 \nL 55.847424 76.72342 \nL 56.182559 81.06327 \nL 56.852829 72.295303 \nL 57.187965 87.03634 \nL 57.5231 79.138321 \nL 57.858235 90.460968 \nL 58.19337 64.462533 \nL 58.528505 71.006654 \nL 58.86364 72.753178 \nL 59.198775 72.955888 \nL 59.53391 72.744931 \nL 59.869046 65.909052 \nL 60.539316 85.912494 \nL 60.874451 83.456658 \nL 61.209586 71.295397 \nL 61.544721 71.743413 \nL 61.879856 70.266077 \nL 62.214992 65.917637 \nL 62.550127 78.751082 \nL 62.885262 65.059452 \nL 63.220397 68.782683 \nL 63.555532 87.972918 \nL 63.890667 71.434823 \nL 64.225802 66.491534 \nL 64.560938 68.479991 \nL 64.896073 55.083077 \nL 65.231208 54.756356 \nL 65.566343 73.928592 \nL 65.901478 61.643549 \nL 66.236613 68.095091 \nL 66.571748 79.896328 \nL 66.906883 66.742312 \nL 67.242019 63.115723 \nL 67.912289 72.614255 \nL 68.247424 55.526052 \nL 68.917694 48.203952 \nL 69.9231 73.532097 \nL 70.59337 52.807662 \nL 70.928505 54.436046 \nL 71.26364 57.624012 \nL 71.598775 70.095237 \nL 71.93391 49.245848 \nL 72.604181 41.950363 \nL 72.939316 48.052445 \nL 73.274451 64.165698 \nL 73.609586 46.531596 \nL 73.944721 65.413633 \nL 74.279856 68.834042 \nL 74.614992 33.118014 \nL 74.950127 37.002609 \nL 75.285262 49.346513 \nL 75.620397 51.149176 \nL 75.955532 68.835633 \nL 76.290667 49.456513 \nL 76.960938 54.22281 \nL 77.296073 35.690807 \nL 77.631208 51.063172 \nL 77.966343 27.778865 \nL 78.301478 55.721312 \nL 78.636613 41.431316 \nL 78.971748 60.36791 \nL 79.306883 49.217727 \nL 79.642019 55.102142 \nL 79.977154 47.863446 \nL 80.312289 53.449159 \nL 80.647424 32.802344 \nL 80.982559 34.137222 \nL 81.317694 37.231421 \nL 81.652829 32.618262 \nL 81.987965 58.862088 \nL 82.3231 39.718749 \nL 82.658235 64.236646 \nL 82.99337 61.994168 \nL 83.328505 28.643728 \nL 83.66364 48.422215 \nL 83.998775 58.542304 \nL 84.33391 58.977587 \nL 84.669046 60.103512 \nL 85.004181 71.333481 \nL 85.674451 43.063791 \nL 86.009586 37.83007 \nL 86.344721 55.625017 \nL 86.679856 50.958084 \nL 87.014992 33.48234 \nL 87.350127 46.475625 \nL 87.685262 40.120701 \nL 88.020397 42.420831 \nL 88.355532 36.629445 \nL 88.690667 55.528983 \nL 89.025802 48.594067 \nL 89.360938 51.523627 \nL 89.696073 57.601528 \nL 90.031208 50.788862 \nL 90.366343 46.693581 \nL 90.701478 37.24184 \nL 91.036613 36.685959 \nL 91.371748 46.579066 \nL 91.706883 38.109498 \nL 92.042019 43.469917 \nL 92.377154 44.678701 \nL 92.712289 49.475106 \nL 93.047424 51.721115 \nL 93.382559 22.51475 \nL 93.717694 23.608466 \nL 94.052829 30.026926 \nL 94.387965 17.068495 \nL 94.7231 41.600808 \nL 95.058235 45.90696 \nL 95.39337 22.479565 \nL 96.06364 54.775678 \nL 96.398775 30.549702 \nL 96.73391 38.552084 \nL 97.069046 38.45545 \nL 97.404181 46.235738 \nL 97.739316 34.754069 \nL 98.074451 56.918197 \nL 98.409586 25.439123 \nL 98.744721 34.268675 \nL 99.079856 39.172977 \nL 99.414992 30.926708 \nL 99.750127 38.741284 \nL 100.085262 43.614466 \nL 100.420397 39.258008 \nL 100.755532 26.202122 \nL 101.090667 37.748706 \nL 101.425802 34.337025 \nL 101.760938 28.664054 \nL 102.096073 34.446989 \nL 102.431208 23.42161 \nL 102.766343 38.047642 \nL 103.101478 30.951875 \nL 103.436613 54.33636 \nL 103.771748 42.995052 \nL 104.106883 43.966826 \nL 104.442019 54.379355 \nL 104.777154 19.321137 \nL 105.447424 49.687391 \nL 105.782559 22.910376 \nL 106.117694 42.762417 \nL 106.452829 24.673368 \nL 106.787965 32.648275 \nL 107.1231 50.104748 \nL 107.458235 29.297944 \nL 107.79337 37.662952 \nL 108.128505 27.120441 \nL 108.46364 36.437538 \nL 108.798775 50.649224 \nL 109.13391 35.022045 \nL 109.469046 37.562156 \nL 109.804181 45.945409 \nL 110.139316 35.633874 \nL 110.474451 45.139554 \nL 110.809586 48.127992 \nL 111.479856 30.474167 \nL 111.814992 37.870963 \nL 112.150127 50.658221 \nL 112.485262 25.184666 \nL 112.820397 46.413916 \nL 113.490667 29.211659 \nL 113.825802 42.186118 \nL 114.160938 41.06596 \nL 114.496073 42.793014 \nL 114.831208 21.924026 \nL 115.166343 25.843003 \nL 115.501478 21.628735 \nL 115.836613 54.451501 \nL 116.171748 58.108143 \nL 116.842019 18.598359 \nL 117.177154 41.632294 \nL 117.512289 31.028242 \nL 117.847424 36.559757 \nL 118.182559 24.658532 \nL 118.852829 70.0135 \nL 119.187965 47.71838 \nL 119.5231 53.496929 \nL 119.858235 41.349751 \nL 120.19337 52.04515 \nL 120.528505 35.241695 \nL 120.86364 48.142886 \nL 121.198775 38.873108 \nL 121.53391 43.09255 \nL 121.869046 44.555779 \nL 122.204181 48.696303 \nL 122.539316 38.161378 \nL 122.874451 43.009385 \nL 123.209586 38.802116 \nL 123.544721 59.575864 \nL 123.879856 32.723356 \nL 124.550127 43.884352 \nL 124.885262 41.928916 \nL 125.220397 60.586625 \nL 125.555532 39.958748 \nL 125.890667 56.513423 \nL 126.225802 46.016124 \nL 126.560938 46.895648 \nL 126.896073 56.63796 \nL 127.231208 50.608738 \nL 127.566343 48.289847 \nL 127.901478 61.250348 \nL 128.236613 47.332944 \nL 128.571748 53.864786 \nL 128.906883 48.568954 \nL 129.242019 49.171219 \nL 129.577154 42.723321 \nL 129.912289 58.617033 \nL 130.247424 53.490781 \nL 130.582559 33.467416 \nL 130.917694 46.658585 \nL 131.252829 41.220463 \nL 131.9231 58.752644 \nL 132.258235 44.870894 \nL 132.928505 78.171031 \nL 133.26364 50.687824 \nL 133.598775 57.103397 \nL 133.93391 55.933069 \nL 134.269046 61.792159 \nL 134.604181 54.032913 \nL 134.939316 41.007203 \nL 135.274451 70.486189 \nL 135.609586 34.808227 \nL 135.944721 73.910925 \nL 136.279856 57.096481 \nL 136.614992 87.397833 \nL 136.950127 64.683626 \nL 137.285262 57.331604 \nL 137.620397 63.868828 \nL 137.955532 51.740077 \nL 138.290667 55.062288 \nL 138.625802 72.89974 \nL 138.960938 74.653049 \nL 139.296073 55.790943 \nL 139.631208 67.04038 \nL 139.966343 56.494972 \nL 140.301478 66.950269 \nL 140.971748 54.657992 \nL 141.306883 52.973806 \nL 141.642019 64.180988 \nL 141.977154 65.910359 \nL 142.312289 71.167851 \nL 142.647424 63.040606 \nL 142.982559 67.401126 \nL 143.317694 68.801932 \nL 143.652829 76.392327 \nL 143.987965 51.45512 \nL 144.658235 84.5268 \nL 144.99337 59.585442 \nL 145.328505 81.239005 \nL 145.66364 77.686774 \nL 145.998775 72.297682 \nL 146.33391 75.708424 \nL 146.669046 89.86747 \nL 147.004181 66.159065 \nL 147.339316 56.640357 \nL 147.674451 69.434946 \nL 148.009586 73.391482 \nL 148.344721 71.523242 \nL 148.679856 79.920164 \nL 149.014992 64.42179 \nL 149.350127 72.44014 \nL 149.685262 72.909406 \nL 150.020397 76.853642 \nL 150.355532 64.448208 \nL 150.690667 83.156565 \nL 151.025802 72.131381 \nL 151.360938 92.376059 \nL 151.696073 86.525332 \nL 152.031208 71.061021 \nL 152.366343 74.119042 \nL 152.701478 67.374199 \nL 153.036613 81.980235 \nL 153.371748 77.469885 \nL 153.706883 80.266546 \nL 154.042019 86.069808 \nL 154.377154 85.374518 \nL 154.712289 71.944346 \nL 155.047424 81.209601 \nL 155.382559 85.279962 \nL 155.717694 103.255058 \nL 156.052829 80.071077 \nL 156.387965 95.716624 \nL 156.7231 75.452914 \nL 157.058235 90.389476 \nL 157.39337 91.895436 \nL 157.728505 73.656363 \nL 158.06364 97.241442 \nL 158.73391 94.995908 \nL 159.069046 92.643728 \nL 159.404181 95.092679 \nL 159.739316 89.768132 \nL 160.074451 102.944954 \nL 160.409586 86.289199 \nL 160.744721 95.489075 \nL 161.079856 84.376908 \nL 161.414992 85.693836 \nL 161.750127 116.359045 \nL 162.085262 89.684469 \nL 162.420397 103.886839 \nL 162.755532 82.46671 \nL 163.090667 114.872034 \nL 163.425802 94.359728 \nL 163.760938 96.344608 \nL 164.096073 82.428908 \nL 164.431208 100.367771 \nL 164.766343 92.545761 \nL 165.101478 88.512221 \nL 165.436613 86.595791 \nL 165.771748 101.666527 \nL 166.106883 95.106717 \nL 166.442019 102.17751 \nL 166.777154 99.074869 \nL 167.112289 103.631668 \nL 167.447424 103.229953 \nL 167.782559 102.083586 \nL 168.117694 87.142554 \nL 168.452829 104.045531 \nL 168.787965 101.308963 \nL 169.1231 106.689263 \nL 169.458235 114.619349 \nL 169.79337 108.057806 \nL 170.128505 98.791407 \nL 170.46364 118.503678 \nL 170.798775 112.659651 \nL 171.13391 96.620698 \nL 171.469046 89.39968 \nL 171.804181 103.618829 \nL 172.139316 124.337784 \nL 172.474451 99.223483 \nL 172.809586 102.405491 \nL 173.144721 116.2107 \nL 173.479856 121.234264 \nL 173.814992 101.93198 \nL 174.150127 102.070774 \nL 175.155532 113.432113 \nL 175.490667 109.777916 \nL 175.825802 120.605372 \nL 176.160938 94.719502 \nL 176.496073 119.059294 \nL 176.831208 107.92557 \nL 177.166343 114.507608 \nL 177.501478 109.237124 \nL 177.836613 106.82756 \nL 178.171748 127.205862 \nL 178.506883 118.588457 \nL 178.842019 120.395778 \nL 179.177154 114.631442 \nL 179.512289 103.455336 \nL 179.847424 121.217059 \nL 180.182559 129.176508 \nL 180.517694 117.367964 \nL 180.852829 120.194485 \nL 181.187965 132.259348 \nL 181.5231 110.091616 \nL 181.858235 121.937833 \nL 182.19337 107.492691 \nL 182.528505 116.816492 \nL 182.86364 131.625771 \nL 183.198775 128.644081 \nL 183.53391 133.428747 \nL 183.869046 119.952458 \nL 184.204181 115.11093 \nL 184.539316 128.075533 \nL 184.874451 127.881333 \nL 185.209586 116.682333 \nL 185.544721 134.951789 \nL 185.879856 127.752499 \nL 186.214992 124.525517 \nL 186.550127 116.685347 \nL 186.885262 125.719672 \nL 187.220397 126.677783 \nL 187.555532 120.248989 \nL 187.890667 124.703391 \nL 188.560938 116.595523 \nL 188.896073 134.665713 \nL 189.566343 122.747959 \nL 190.236613 141.235152 \nL 190.571748 153.772484 \nL 190.906883 138.004637 \nL 191.242019 133.231698 \nL 191.577154 123.516837 \nL 191.912289 136.41614 \nL 192.247424 135.849213 \nL 192.582559 121.550645 \nL 192.917694 137.170283 \nL 193.252829 112.925906 \nL 193.587965 114.83814 \nL 193.9231 132.905995 \nL 194.59337 117.110157 \nL 194.928505 123.626824 \nL 195.26364 137.70539 \nL 195.598775 142.066082 \nL 195.93391 134.121904 \nL 196.269046 135.929529 \nL 196.604181 136.406446 \nL 196.939316 106.836728 \nL 197.274451 131.270583 \nL 197.609586 141.970546 \nL 197.944721 135.002329 \nL 198.279856 115.80569 \nL 198.614992 118.840467 \nL 198.950127 128.382017 \nL 199.285262 119.428089 \nL 199.955532 132.537044 \nL 200.290667 133.452803 \nL 200.625802 123.371822 \nL 200.960938 124.947975 \nL 201.631208 135.312659 \nL 201.966343 126.018331 \nL 202.301478 136.55686 \nL 202.636613 121.748361 \nL 202.971748 129.556776 \nL 203.306883 149.277223 \nL 203.642019 126.069812 \nL 203.977154 123.403939 \nL 204.312289 134.230927 \nL 204.647424 137.004921 \nL 204.982559 143.314959 \nL 205.317694 126.470259 \nL 205.652829 124.135192 \nL 205.987965 165.96 \nL 206.3231 119.635908 \nL 206.658235 135.550385 \nL 207.328505 122.841747 \nL 207.66364 139.053316 \nL 207.998775 113.637565 \nL 208.669046 146.493848 \nL 209.004181 132.024505 \nL 209.674451 149.567809 \nL 210.009586 150.187023 \nL 210.344721 134.323676 \nL 210.679856 147.767029 \nL 211.014992 129.862118 \nL 211.350127 134.989778 \nL 211.685262 122.049201 \nL 212.020397 149.071582 \nL 212.355532 145.84648 \nL 212.690667 123.842478 \nL 213.025802 130.274029 \nL 213.360938 148.869087 \nL 213.696073 121.210397 \nL 214.366343 153.522791 \nL 214.701478 129.445089 \nL 215.036613 132.173497 \nL 215.371748 138.767039 \nL 215.706883 135.646293 \nL 216.042019 145.62918 \nL 216.377154 127.050394 \nL 216.712289 144.621554 \nL 217.047424 114.675313 \nL 217.382559 138.104429 \nL 217.717694 124.399145 \nL 218.052829 135.141768 \nL 218.387965 135.48628 \nL 218.7231 132.609842 \nL 219.058235 124.982861 \nL 219.39337 124.506346 \nL 219.728505 126.156215 \nL 220.06364 142.329919 \nL 220.398775 130.605597 \nL 220.73391 146.5759 \nL 221.069046 136.170638 \nL 221.404181 131.488758 \nL 221.739316 132.02965 \nL 222.074451 140.573964 \nL 222.409586 123.832699 \nL 222.744721 124.277288 \nL 223.079856 124.953542 \nL 223.414992 127.263477 \nL 223.750127 110.560844 \nL 224.085262 137.818524 \nL 224.420397 142.50282 \nL 224.755532 127.104535 \nL 225.090667 117.048794 \nL 225.760938 138.468212 \nL 226.096073 127.282752 \nL 226.431208 131.83829 \nL 226.766343 133.118269 \nL 227.101478 150.31625 \nL 227.436613 124.7173 \nL 227.771748 130.194867 \nL 228.106883 114.612229 \nL 228.442019 134.224571 \nL 228.777154 134.407549 \nL 229.112289 136.514326 \nL 229.447424 117.769624 \nL 229.782559 125.650817 \nL 230.117694 119.696891 \nL 230.452829 136.521369 \nL 230.787965 116.738906 \nL 231.1231 111.5003 \nL 231.458235 126.540722 \nL 231.79337 116.045952 \nL 232.128505 117.35536 \nL 232.46364 124.958542 \nL 233.13391 129.191373 \nL 233.469046 139.838063 \nL 233.804181 109.706787 \nL 234.139316 129.786796 \nL 234.809586 127.341969 \nL 235.144721 122.573358 \nL 235.479856 123.66811 \nL 235.814992 124.153755 \nL 236.150127 118.679256 \nL 236.485262 129.210724 \nL 236.820397 112.133871 \nL 237.155532 104.927132 \nL 237.490667 111.666771 \nL 238.160938 109.068293 \nL 238.496073 105.694549 \nL 238.831208 105.120007 \nL 239.166343 115.552119 \nL 239.501478 103.47592 \nL 239.836613 126.315653 \nL 240.171748 104.31299 \nL 240.506883 106.125978 \nL 240.842019 120.159409 \nL 241.177154 92.256568 \nL 241.847424 117.300027 \nL 242.182559 121.255933 \nL 242.852829 109.31399 \nL 243.187965 92.247031 \nL 243.5231 118.982764 \nL 243.858235 107.900198 \nL 244.19337 125.17813 \nL 244.528505 108.829216 \nL 244.86364 111.183343 \nL 245.198775 115.314112 \nL 245.53391 89.220133 \nL 245.869046 100.208846 \nL 246.204181 117.40755 \nL 246.539316 111.827322 \nL 246.874451 130.261865 \nL 247.209586 105.074797 \nL 247.544721 102.108513 \nL 247.879856 88.652308 \nL 248.214992 102.949672 \nL 248.550127 105.405653 \nL 248.885262 110.721433 \nL 249.220397 119.927315 \nL 249.555532 98.748061 \nL 249.890667 112.071864 \nL 250.225802 99.830993 \nL 250.560938 104.950024 \nL 251.231208 90.998354 \nL 251.566343 107.888837 \nL 251.901478 99.998621 \nL 252.236613 108.573405 \nL 252.571748 95.04363 \nL 252.906883 118.129847 \nL 253.242019 100.103336 \nL 253.577154 93.813473 \nL 253.912289 99.151092 \nL 254.247424 95.017258 \nL 254.582559 73.508332 \nL 254.917694 92.109185 \nL 255.252829 96.554614 \nL 255.587965 111.389737 \nL 255.9231 83.042451 \nL 256.258235 94.360804 \nL 256.59337 98.982089 \nL 256.928505 79.117295 \nL 257.26364 101.18163 \nL 257.598775 81.688049 \nL 257.93391 99.858687 \nL 258.269046 92.451301 \nL 258.604181 92.955598 \nL 258.939316 77.266187 \nL 259.274451 86.875849 \nL 259.609586 74.917317 \nL 259.944721 94.027469 \nL 260.279856 70.093281 \nL 260.614992 72.345724 \nL 260.950127 98.040793 \nL 261.285262 85.355341 \nL 261.620397 85.78782 \nL 261.955532 95.997762 \nL 262.290667 92.079367 \nL 262.625802 78.331411 \nL 262.960938 81.270498 \nL 263.296073 65.882588 \nL 263.631208 71.299352 \nL 263.966343 92.988568 \nL 264.301478 81.363839 \nL 264.636613 94.329776 \nL 264.971748 86.186902 \nL 265.306883 89.709548 \nL 265.642019 88.472425 \nL 265.977154 56.526387 \nL 266.312289 77.499678 \nL 266.647424 69.139953 \nL 266.982559 84.504951 \nL 267.317694 81.421094 \nL 267.652829 93.735829 \nL 267.987965 59.999561 \nL 268.3231 77.059255 \nL 268.658235 80.60017 \nL 268.99337 75.648174 \nL 269.328505 75.90715 \nL 269.66364 65.00924 \nL 269.998775 62.559204 \nL 270.33391 91.601763 \nL 270.669046 79.54782 \nL 271.004181 76.15221 \nL 271.339316 70.766354 \nL 271.674451 81.582208 \nL 272.009586 70.369595 \nL 272.344721 69.454475 \nL 272.679856 70.511766 \nL 273.014992 57.1945 \nL 273.685262 69.935774 \nL 274.020397 71.649454 \nL 274.355532 58.378707 \nL 274.690667 54.922919 \nL 275.025802 55.236316 \nL 275.360937 65.939561 \nL 275.696073 63.039489 \nL 276.031208 64.315246 \nL 276.366343 60.914538 \nL 276.701478 44.406781 \nL 277.036613 61.0263 \nL 277.371748 60.658443 \nL 277.706883 75.407217 \nL 278.042019 67.868019 \nL 278.377154 72.054763 \nL 279.047424 58.976577 \nL 279.382559 73.742361 \nL 279.717694 79.441761 \nL 280.052829 63.78142 \nL 280.387965 70.779876 \nL 280.7231 67.562347 \nL 281.058235 57.195928 \nL 281.39337 59.883753 \nL 281.728505 53.403832 \nL 282.06364 57.066949 \nL 282.398775 70.955695 \nL 282.73391 73.290087 \nL 283.069046 68.607612 \nL 283.404181 74.788144 \nL 283.739316 68.787071 \nL 284.074451 43.48139 \nL 284.409586 50.5759 \nL 284.744721 70.860477 \nL 285.079856 48.464976 \nL 285.414992 50.710844 \nL 285.750127 48.320138 \nL 286.085262 44.493999 \nL 286.420397 45.041371 \nL 286.755532 51.796907 \nL 287.090667 43.429824 \nL 287.425802 66.627776 \nL 287.760938 55.199511 \nL 288.096073 52.103943 \nL 288.431208 36.446131 \nL 288.766343 48.069917 \nL 289.101478 42.937168 \nL 289.436613 55.895207 \nL 289.771748 22.146374 \nL 290.106883 53.617525 \nL 290.442019 57.749995 \nL 290.777154 52.133505 \nL 291.112289 68.499368 \nL 291.447424 53.71856 \nL 291.782559 47.095855 \nL 292.117694 36.845644 \nL 292.452829 49.280191 \nL 292.787965 48.260268 \nL 293.1231 39.049802 \nL 293.458235 45.649699 \nL 293.79337 72.521568 \nL 294.46364 41.081693 \nL 294.798775 64.536906 \nL 295.13391 44.230345 \nL 295.469046 62.649044 \nL 295.804181 41.240682 \nL 296.139316 40.60869 \nL 296.474451 55.714337 \nL 297.144721 28.435466 \nL 297.479856 38.507758 \nL 297.814992 55.191317 \nL 298.150127 49.219129 \nL 298.485262 28.265222 \nL 298.820397 48.521493 \nL 299.155532 32.861845 \nL 299.490667 43.492879 \nL 299.825802 24.105992 \nL 300.160938 49.339866 \nL 300.496073 49.970028 \nL 300.831208 20.133642 \nL 301.166343 36.675808 \nL 301.501478 26.921376 \nL 301.836613 41.396158 \nL 302.171748 26.995659 \nL 302.506883 30.038167 \nL 302.842019 14.76 \nL 303.177154 31.691289 \nL 303.512289 32.12527 \nL 303.847424 31.134852 \nL 304.182559 36.362709 \nL 304.517694 49.089371 \nL 304.852829 52.828959 \nL 305.187965 40.234596 \nL 305.5231 39.776532 \nL 305.858235 20.400756 \nL 306.19337 35.706787 \nL 306.528505 18.670275 \nL 306.86364 35.881624 \nL 307.198775 33.271722 \nL 307.53391 33.515429 \nL 307.869046 32.60335 \nL 308.204181 45.421619 \nL 308.539316 23.132199 \nL 308.874451 35.81632 \nL 309.209586 33.234276 \nL 309.544721 32.269864 \nL 309.879856 35.106281 \nL 310.214992 30.802033 \nL 310.550127 47.481082 \nL 310.885262 17.10708 \nL 311.220397 40.441483 \nL 311.890667 45.753606 \nL 312.225802 55.150111 \nL 312.560938 33.721991 \nL 312.896073 39.336208 \nL 313.566343 37.669053 \nL 313.901478 23.632788 \nL 314.236613 28.963141 \nL 314.571748 29.249925 \nL 314.906883 23.649702 \nL 315.242019 41.99886 \nL 315.577154 17.335739 \nL 316.247424 46.380199 \nL 316.582559 23.460838 \nL 316.917694 31.315581 \nL 317.252829 19.699903 \nL 317.587965 22.794078 \nL 317.9231 34.538138 \nL 318.258235 41.417104 \nL 318.59337 43.543814 \nL 318.928505 54.562226 \nL 319.26364 45.336783 \nL 319.598775 30.049041 \nL 319.93391 32.224277 \nL 320.269046 36.331043 \nL 320.939316 28.251 \nL 321.274451 31.453858 \nL 321.609586 38.166482 \nL 321.944721 31.990689 \nL 322.279856 40.438166 \nL 322.614992 39.120664 \nL 322.950127 36.950322 \nL 323.285262 49.32656 \nL 323.620397 35.545959 \nL 323.955532 44.443988 \nL 324.290667 48.799316 \nL 324.625802 29.921951 \nL 324.960938 32.846939 \nL 325.296073 41.237199 \nL 325.631208 36.65251 \nL 325.966343 38.787534 \nL 326.301478 32.945149 \nL 326.636613 44.668517 \nL 326.971748 43.132924 \nL 327.306883 20.267173 \nL 327.642019 31.299854 \nL 327.977154 31.7585 \nL 328.312289 28.861985 \nL 328.647424 33.489979 \nL 328.982559 41.282691 \nL 329.317694 24.615567 \nL 329.652829 50.507228 \nL 329.987965 47.01725 \nL 330.3231 50.347017 \nL 330.658235 40.029773 \nL 330.99337 60.142142 \nL 331.328505 49.744454 \nL 331.66364 57.765733 \nL 331.998775 33.223656 \nL 332.33391 58.159494 \nL 332.669046 47.767305 \nL 333.004181 56.148306 \nL 333.339316 42.179317 \nL 333.674451 49.895343 \nL 334.009586 26.599277 \nL 334.344721 38.794808 \nL 334.679856 57.69336 \nL 335.014992 59.133547 \nL 335.350127 51.956858 \nL 335.685262 32.320397 \nL 336.020397 48.54235 \nL 336.355532 49.320624 \nL 336.690667 48.61529 \nL 337.025802 50.101962 \nL 337.360937 41.549811 \nL 337.696073 66.297561 \nL 338.031208 49.167228 \nL 338.366343 64.31496 \nL 338.701478 48.542486 \nL 339.036613 50.336314 \nL 339.371748 45.213799 \nL 339.706883 54.193647 \nL 340.042019 34.721937 \nL 340.377154 56.189179 \nL 340.712289 33.306446 \nL 341.047424 45.142013 \nL 341.382559 61.242116 \nL 341.717694 31.276181 \nL 342.052829 60.711613 \nL 342.387965 39.393835 \nL 342.7231 58.393256 \nL 343.058235 55.204679 \nL 343.39337 53.549996 \nL 343.728505 54.247501 \nL 344.06364 43.533663 \nL 344.398775 39.906485 \nL 344.73391 64.320339 \nL 345.069046 57.679088 \nL 345.404181 62.244237 \nL 345.739316 43.605794 \nL 346.074451 60.829853 \nL 346.409586 35.94501 \nL 347.079856 79.910505 \nL 347.414992 45.122664 \nL 347.750127 51.057094 \nL 348.085262 82.685196 \nL 348.420397 53.652766 \nL 348.755532 70.063278 \nL 349.090667 71.763498 \nL 349.425802 50.486277 \nL 349.760938 50.594399 \nL 350.096073 53.834474 \nL 350.431208 61.107889 \nL 350.766343 61.386622 \nL 351.101478 49.585161 \nL 351.436613 63.660911 \nL 351.771748 62.148577 \nL 352.106883 72.621177 \nL 352.442019 55.91514 \nL 352.777154 58.044252 \nL 353.112289 64.416791 \nL 353.447424 59.856975 \nL 353.782559 75.33017 \nL 354.117694 58.778236 \nL 354.452829 79.553955 \nL 354.787965 64.53676 \nL 355.1231 82.039091 \nL 355.458235 59.360662 \nL 355.79337 55.405828 \nL 356.46364 85.048478 \nL 356.798775 75.278355 \nL 357.13391 57.829685 \nL 357.469046 69.827169 \nL 357.804181 60.77986 \nL 358.139316 81.219025 \nL 358.474451 62.499948 \nL 358.809586 84.0149 \nL 359.144721 65.438091 \nL 359.479856 84.99832 \nL 359.814992 66.713141 \nL 360.150127 74.757282 \nL 360.485262 76.102159 \nL 360.820397 103.285515 \nL 361.155532 78.077763 \nL 361.490667 77.38079 \nL 361.825802 75.773068 \nL 362.160938 78.02791 \nL 362.496073 84.616798 \nL 362.831208 77.566094 \nL 363.166343 77.358982 \nL 363.501478 90.411522 \nL 363.836613 79.283437 \nL 364.171748 73.780389 \nL 364.506883 80.931906 \nL 364.842019 78.285069 \nL 365.177154 83.752425 \nL 365.512289 96.986165 \nL 365.847424 71.484091 \nL 366.182559 94.241757 \nL 366.517694 92.484137 \nL 366.852829 89.960702 \nL 367.187965 90.377804 \nL 367.5231 87.783327 \nL 367.858235 108.707731 \nL 368.19337 94.549255 \nL 368.528505 67.847258 \nL 368.86364 77.863105 \nL 369.198775 99.162238 \nL 369.53391 75.365741 \nL 369.869046 110.119262 \nL 370.204181 86.714846 \nL 370.539316 90.655824 \nL 370.874451 103.702555 \nL 371.209586 75.034118 \nL 371.544721 93.606627 \nL 371.879856 73.239535 \nL 372.214992 106.094504 \nL 372.550127 85.36761 \nL 372.885262 98.972561 \nL 373.220397 90.652961 \nL 373.555532 114.63527 \nL 373.890667 104.605516 \nL 374.225802 85.196527 \nL 374.560938 116.711786 \nL 375.566343 89.255848 \nL 375.901478 99.006307 \nL 376.236613 98.101331 \nL 376.571748 103.051864 \nL 377.242019 97.679856 \nL 377.577154 111.994039 \nL 377.912289 112.863919 \nL 378.247424 118.005249 \nL 378.582559 102.393464 \nL 378.917694 102.089499 \nL 379.252829 98.539169 \nL 379.587965 106.282518 \nL 379.9231 101.144155 \nL 380.258235 108.53384 \nL 380.59337 112.68077 \nL 380.928505 98.911611 \nL 381.26364 109.427979 \nL 381.598775 104.911767 \nL 381.93391 104.852666 \nL 382.269046 106.390265 \nL 382.604181 110.226427 \nL 382.939316 119.467211 \nL 383.274451 107.451376 \nL 383.609586 108.733183 \nL 383.944721 98.667296 \nL 384.279856 117.810706 \nL 384.614992 100.530632 \nL 384.950127 99.4762 \nL 385.285262 104.679327 \nL 385.620397 113.760115 \nL 385.955532 94.629068 \nL 386.290667 126.995433 \nL 386.625802 114.092063 \nL 386.960938 111.924121 \nL 386.960938 111.924121 \n\" clip-path=\"url(#p7343e200b2)\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_3\">\n <path d=\"M 52.160938 173.52 \nL 52.160938 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_4\">\n <path d=\"M 386.960938 173.52 \nL 386.960938 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_5\">\n <path d=\"M 52.160938 173.52 \nL 386.960938 173.52 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_6\">\n <path d=\"M 52.160938 7.2 \nL 386.960938 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"p7343e200b2\">\n <rect x=\"52.160938\" y=\"7.2\" width=\"334.8\" height=\"166.32\"/>\n </clipPath>\n </defs>\n</svg>\n"
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
}
],
"execution_count": 83
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:38.254208009Z",
"start_time": "2026-03-29T09:05:38.094754063Z"
}
},
"cell_type": "code",
"source": [
"tau = 4\n",
"features = torch.zeros((T - tau, tau))\n",
"for i in range(tau):\n",
" features[:, i] = x[i: T - tau + i]\n",
"labels = x[tau:].reshape((-1, 1))\n",
"x,features,labels\n"
],
"id": "5d450c6f6b724a14",
"outputs": [
{
"data": {
"text/plain": [
"(tensor([ 6.4438e-02, -2.8849e-02, 2.2463e-01, -1.7219e-01, 6.6353e-02,\n",
" -1.0363e-01, 8.8868e-02, 1.5603e-01, 2.0316e-01, 2.2209e-01,\n",
" 4.0233e-01, 1.8191e-01, 9.4271e-02, 1.9833e-01, 2.7132e-01,\n",
" -2.6344e-02, 1.3314e-01, -9.5498e-02, 4.2949e-01, 2.9735e-01,\n",
" 2.6208e-01, 2.5798e-01, 2.6224e-01, 4.0028e-01, 1.6453e-01,\n",
" -3.6497e-03, 4.5941e-02, 2.9152e-01, 2.8247e-01, 3.1230e-01,\n",
" 4.0011e-01, 1.4096e-01, 4.1744e-01, 3.4225e-01, -4.5256e-02,\n",
" 2.8870e-01, 3.8852e-01, 3.4837e-01, 6.1889e-01, 6.2549e-01,\n",
" 2.3834e-01, 4.8642e-01, 3.5614e-01, 1.1784e-01, 3.8346e-01,\n",
" 4.5669e-01, 3.6588e-01, 2.6488e-01, 6.0995e-01, 6.9697e-01,\n",
" 7.5780e-01, 5.8101e-01, 3.5400e-01, 2.4635e-01, 4.7288e-01,\n",
" 6.6484e-01, 6.3196e-01, 5.6758e-01, 3.1575e-01, 7.3676e-01,\n",
" 8.1908e-01, 8.8408e-01, 7.6086e-01, 4.3549e-01, 7.9157e-01,\n",
" 4.1029e-01, 3.4122e-01, 1.0624e+00, 9.8399e-01, 7.3473e-01,\n",
" 6.9833e-01, 3.4119e-01, 7.3251e-01, 6.7880e-01, 6.3626e-01,\n",
" 1.0105e+00, 7.0007e-01, 1.1702e+00, 6.0600e-01, 8.9456e-01,\n",
" 5.1218e-01, 7.3733e-01, 6.1851e-01, 7.6468e-01, 6.5189e-01,\n",
" 1.0688e+00, 1.0419e+00, 9.7937e-01, 1.0725e+00, 5.4258e-01,\n",
" 9.2915e-01, 4.3405e-01, 4.7934e-01, 1.1528e+00, 7.5340e-01,\n",
" 5.4904e-01, 5.4025e-01, 5.1751e-01, 2.9075e-01, 5.5143e-01,\n",
" 8.6160e-01, 9.6728e-01, 6.0795e-01, 7.0219e-01, 1.0551e+00,\n",
" 7.9270e-01, 9.2103e-01, 8.7458e-01, 9.9153e-01, 6.0989e-01,\n",
" 7.4993e-01, 6.9077e-01, 5.6804e-01, 7.0561e-01, 7.8830e-01,\n",
" 9.7916e-01, 9.9039e-01, 7.9061e-01, 9.6164e-01, 8.5340e-01,\n",
" 8.2899e-01, 7.3213e-01, 6.8678e-01, 1.2765e+00, 1.2545e+00,\n",
" 1.1249e+00, 1.3865e+00, 8.9114e-01, 8.0419e-01, 1.2773e+00,\n",
" 8.9564e-01, 6.2510e-01, 1.1143e+00, 9.5270e-01, 9.5466e-01,\n",
" 7.9755e-01, 1.0294e+00, 5.8184e-01, 1.2175e+00, 1.0392e+00,\n",
" 9.4017e-01, 1.1067e+00, 9.4888e-01, 8.5048e-01, 9.3845e-01,\n",
" 1.2021e+00, 9.6893e-01, 1.0378e+00, 1.1524e+00, 1.0356e+00,\n",
" 1.2582e+00, 9.6289e-01, 1.1062e+00, 6.3397e-01, 8.6299e-01,\n",
" 8.4336e-01, 6.3310e-01, 1.3410e+00, 9.9408e-01, 7.2785e-01,\n",
" 1.2686e+00, 8.6769e-01, 1.2330e+00, 1.0719e+00, 7.1942e-01,\n",
" 1.1396e+00, 9.7066e-01, 1.1835e+00, 9.9540e-01, 7.0843e-01,\n",
" 1.0240e+00, 9.7269e-01, 8.0341e-01, 1.0116e+00, 8.1968e-01,\n",
" 7.5934e-01, 9.6155e-01, 1.1158e+00, 9.6646e-01, 7.0824e-01,\n",
" 1.2226e+00, 7.9395e-01, 9.5238e-01, 1.1413e+00, 8.7932e-01,\n",
" 9.0194e-01, 8.6707e-01, 1.2885e+00, 1.2093e+00, 1.2944e+00,\n",
" 6.3165e-01, 5.5781e-01, 1.0286e+00, 1.3556e+00, 8.9051e-01,\n",
" 1.1046e+00, 9.9294e-01, 1.2333e+00, 8.1726e-01, 3.1740e-01,\n",
" 7.6761e-01, 6.5092e-01, 8.9621e-01, 6.8024e-01, 1.0196e+00,\n",
" 7.5904e-01, 9.4622e-01, 8.6102e-01, 8.3147e-01, 7.4786e-01,\n",
" 9.6059e-01, 8.6270e-01, 9.4766e-01, 5.2817e-01, 1.0704e+00,\n",
" 9.7133e-01, 8.4503e-01, 8.8452e-01, 5.0776e-01, 9.2430e-01,\n",
" 5.9001e-01, 8.0198e-01, 7.8422e-01, 5.8749e-01, 7.0924e-01,\n",
" 7.5607e-01, 4.9436e-01, 7.7539e-01, 6.4349e-01, 7.5043e-01,\n",
" 7.3827e-01, 8.6847e-01, 5.4753e-01, 6.5105e-01, 1.0554e+00,\n",
" 7.8901e-01, 8.9882e-01, 7.0064e-01, 5.4479e-01, 8.2511e-01,\n",
" 5.1943e-01, 1.5267e-01, 7.0765e-01, 5.7810e-01, 6.0173e-01,\n",
" 4.8342e-01, 6.4010e-01, 9.0313e-01, 3.0786e-01, 1.0283e+00,\n",
" 2.3870e-01, 5.7824e-01, -3.3643e-02, 4.2503e-01, 5.7349e-01,\n",
" 4.4148e-01, 6.8640e-01, 6.1931e-01, 2.5912e-01, 2.2371e-01,\n",
" 6.0460e-01, 3.7744e-01, 5.9038e-01, 3.7926e-01, 5.2749e-01,\n",
" 6.2748e-01, 6.6149e-01, 4.3518e-01, 4.0026e-01, 2.9409e-01,\n",
" 4.5821e-01, 3.7015e-01, 3.4187e-01, 1.8859e-01, 6.9215e-01,\n",
" 3.2195e-01, 2.4332e-02, 5.2798e-01, 9.0723e-02, 1.6245e-01,\n",
" 2.7128e-01, 2.0240e-01, -8.3513e-02, 3.9523e-01, 5.8745e-01,\n",
" 3.2908e-01, 2.4919e-01, 2.8691e-01, 1.1735e-01, 4.3031e-01,\n",
" 2.6840e-01, 2.5892e-01, 1.7928e-01, 4.2978e-01, 5.2001e-02,\n",
" 2.7463e-01, -1.3417e-01, -1.6025e-02, 2.9625e-01, 2.3450e-01,\n",
" 3.7070e-01, 7.5755e-02, 1.6683e-01, 1.1036e-01, -6.8264e-03,\n",
" 7.2137e-03, 2.7841e-01, 9.1316e-02, 9.1231e-03, -3.5385e-01,\n",
" 1.1431e-01, -2.0163e-01, 2.0756e-01, -9.4054e-02, -1.2446e-01,\n",
" 2.4384e-01, -2.3242e-01, -2.0931e-01, -1.8707e-01, -1.3957e-01,\n",
" -1.8903e-01, -8.1507e-02, -3.4759e-01, -1.1257e-02, -1.9703e-01,\n",
" 2.7359e-02, 7.6564e-04, -6.1846e-01, -7.9818e-02, -3.6661e-01,\n",
" 6.5931e-02, -5.8843e-01, -1.7423e-01, -2.1431e-01, 6.6695e-02,\n",
" -2.9555e-01, -1.3760e-01, -5.6146e-02, -1.7448e-02, -3.2177e-01,\n",
" -1.8931e-01, -3.3209e-01, -2.6944e-01, -3.6146e-01, -3.5334e-01,\n",
" -3.3019e-01, -2.8488e-02, -3.6981e-01, -3.1455e-01, -4.2320e-01,\n",
" -5.8333e-01, -4.5083e-01, -2.6372e-01, -6.6177e-01, -5.4376e-01,\n",
" -2.1988e-01, -7.4067e-02, -3.6120e-01, -7.7958e-01, -2.7244e-01,\n",
" -3.3669e-01, -6.1547e-01, -7.1691e-01, -3.2713e-01, -3.2994e-01,\n",
" -4.0011e-01, -4.5194e-01, -5.5936e-01, -4.8557e-01, -7.0421e-01,\n",
" -1.8149e-01, -6.7299e-01, -4.4816e-01, -5.8107e-01, -4.7465e-01,\n",
" -4.2599e-01, -8.3749e-01, -6.6348e-01, -6.9997e-01, -5.8357e-01,\n",
" -3.5789e-01, -7.1656e-01, -8.7729e-01, -6.3883e-01, -6.9591e-01,\n",
" -9.3954e-01, -4.9190e-01, -7.3111e-01, -4.3942e-01, -6.2770e-01,\n",
" -9.2674e-01, -8.6653e-01, -9.6315e-01, -6.9102e-01, -5.9326e-01,\n",
" -8.5505e-01, -8.5113e-01, -6.2499e-01, -9.9391e-01, -8.4853e-01,\n",
" -7.8337e-01, -6.2505e-01, -8.0748e-01, -8.2683e-01, -6.9701e-01,\n",
" -7.8696e-01, -6.9023e-01, -6.2324e-01, -9.8813e-01, -8.8023e-01,\n",
" -7.4747e-01, -9.1390e-01, -1.1208e+00, -1.3740e+00, -1.0556e+00,\n",
" -9.5917e-01, -7.6300e-01, -1.0235e+00, -1.0120e+00, -7.2330e-01,\n",
" -1.0387e+00, -5.4913e-01, -5.8775e-01, -9.5260e-01, -7.9546e-01,\n",
" -6.3363e-01, -7.6522e-01, -1.0495e+00, -1.1376e+00, -9.7715e-01,\n",
" -1.0136e+00, -1.0233e+00, -4.2618e-01, -9.1957e-01, -1.1356e+00,\n",
" -9.9493e-01, -6.0729e-01, -6.6857e-01, -8.6124e-01, -6.8043e-01,\n",
" -7.9954e-01, -9.4514e-01, -9.6364e-01, -7.6007e-01, -7.9190e-01,\n",
" -9.0256e-01, -1.0012e+00, -8.1351e-01, -1.0263e+00, -7.2729e-01,\n",
" -8.8496e-01, -1.2832e+00, -8.1455e-01, -7.6072e-01, -9.7935e-01,\n",
" -1.0354e+00, -1.1628e+00, -8.2264e-01, -7.7549e-01, -1.6201e+00,\n",
" -6.8463e-01, -1.0060e+00, -8.6768e-01, -7.4937e-01, -1.0767e+00,\n",
" -5.6351e-01, -9.3733e-01, -1.2270e+00, -9.3480e-01, -1.1192e+00,\n",
" -1.2890e+00, -1.3016e+00, -9.8122e-01, -1.2527e+00, -8.9113e-01,\n",
" -9.9467e-01, -7.3336e-01, -1.2790e+00, -1.2139e+00, -7.6957e-01,\n",
" -8.9945e-01, -1.2749e+00, -7.1642e-01, -1.0271e+00, -1.3689e+00,\n",
" -8.8271e-01, -9.3780e-01, -1.0709e+00, -1.0079e+00, -1.2095e+00,\n",
" -8.3435e-01, -1.1892e+00, -5.8446e-01, -1.0576e+00, -7.8082e-01,\n",
" -9.9774e-01, -1.0047e+00, -9.4661e-01, -7.9260e-01, -7.8298e-01,\n",
" -8.1630e-01, -1.1429e+00, -9.0614e-01, -1.2286e+00, -1.0185e+00,\n",
" -9.2398e-01, -9.3490e-01, -1.1074e+00, -7.6938e-01, -7.7835e-01,\n",
" -7.9201e-01, -8.3866e-01, -5.0138e-01, -1.0518e+00, -1.1464e+00,\n",
" -8.3545e-01, -6.3239e-01, -8.6411e-01, -1.0649e+00, -8.3904e-01,\n",
" -9.3103e-01, -9.5688e-01, -1.3042e+00, -7.8724e-01, -8.9785e-01,\n",
" -5.8319e-01, -9.7922e-01, -9.8292e-01, -1.0255e+00, -6.4694e-01,\n",
" -8.0609e-01, -6.8586e-01, -1.0256e+00, -6.2613e-01, -5.2035e-01,\n",
" -8.2406e-01, -6.1214e-01, -6.3858e-01, -7.9211e-01, -8.4110e-01,\n",
" -8.7759e-01, -1.0926e+00, -4.8413e-01, -8.8961e-01, -8.6125e-01,\n",
" -8.4024e-01, -7.4395e-01, -7.6605e-01, -7.7586e-01, -6.6531e-01,\n",
" -8.7798e-01, -5.3314e-01, -3.8761e-01, -5.2371e-01, -4.9831e-01,\n",
" -4.7124e-01, -4.0311e-01, -3.9151e-01, -6.0217e-01, -3.5831e-01,\n",
" -8.1952e-01, -3.7521e-01, -4.1182e-01, -6.9520e-01, -1.3176e-01,\n",
" -3.5725e-01, -6.3746e-01, -7.1734e-01, -6.0116e-01, -4.7620e-01,\n",
" -1.3156e-01, -6.7144e-01, -4.4765e-01, -7.9655e-01, -4.6641e-01,\n",
" -5.1395e-01, -5.9736e-01, -7.0441e-02, -2.9234e-01, -6.3963e-01,\n",
" -5.2695e-01, -8.9920e-01, -3.9060e-01, -3.3070e-01, -5.8975e-02,\n",
" -3.4768e-01, -3.9728e-01, -5.0462e-01, -6.9052e-01, -2.6284e-01,\n",
" -5.3189e-01, -2.8471e-01, -3.8808e-01, -2.5389e-01, -1.0635e-01,\n",
" -4.4742e-01, -2.8809e-01, -4.6124e-01, -1.8804e-01, -6.5422e-01,\n",
" -2.9021e-01, -1.6320e-01, -2.7098e-01, -1.8750e-01, 2.4683e-01,\n",
" -1.2878e-01, -2.1855e-01, -5.1811e-01, 5.4305e-02, -1.7425e-01,\n",
" -2.6757e-01, 1.3357e-01, -3.1198e-01, 8.1655e-02, -2.8527e-01,\n",
" -1.3569e-01, -1.4587e-01, 1.7095e-01, -2.3103e-02, 2.1838e-01,\n",
" -1.6752e-01, 3.1579e-01, 2.7031e-01, -2.4856e-01, 7.6009e-03,\n",
" -1.1322e-03, -2.0730e-01, -1.2818e-01, 1.4944e-01, 9.0087e-02,\n",
" 4.0082e-01, 2.9144e-01, -1.4654e-01, 8.8202e-02, -1.7362e-01,\n",
" -9.1909e-03, -8.0324e-02, -5.5343e-02, 5.8975e-01, 1.6623e-01,\n",
" 3.3504e-01, 2.4773e-02, 8.7046e-02, -1.6163e-01, 5.1961e-01,\n",
" 1.7512e-01, 1.0362e-01, 2.0362e-01, 1.9839e-01, 4.1845e-01,\n",
" 4.6793e-01, -1.1853e-01, 1.2487e-01, 1.9344e-01, 3.0220e-01,\n",
" 8.3792e-02, 3.1021e-01, 3.2869e-01, 3.0734e-01, 5.7626e-01,\n",
" 4.3928e-01, 3.1897e-01, 2.8437e-01, 5.5234e-01, 6.2213e-01,\n",
" 6.1580e-01, 3.9967e-01, 4.5823e-01, 4.3247e-01, 5.0114e-01,\n",
" 8.3448e-01, 4.9888e-01, 5.0631e-01, 2.0848e-01, 3.6072e-01,\n",
" 2.7618e-01, 4.0099e-01, 5.4027e-01, 2.4210e-01, 1.2701e-01,\n",
" 4.4325e-01, 3.0193e-01, 3.6690e-01, 5.7623e-01, 5.2195e-01,\n",
" 6.5280e-01, 5.7883e-01, 2.9837e-01, 2.5124e-01, 3.4579e-01,\n",
" 2.2099e-01, 3.4217e-01, 8.5317e-01, 7.0991e-01, 3.0030e-01,\n",
" 7.5253e-01, 7.0718e-01, 7.5546e-01, 8.3272e-01, 8.2167e-01,\n",
" 6.8525e-01, 8.5421e-01, 3.8577e-01, 6.1654e-01, 6.7905e-01,\n",
" 9.9523e-01, 7.6051e-01, 8.6416e-01, 6.0249e-01, 1.2840e+00,\n",
" 6.4849e-01, 5.6504e-01, 6.7845e-01, 3.4798e-01, 6.4645e-01,\n",
" 7.8018e-01, 9.8716e-01, 7.3607e-01, 7.5667e-01, 9.4265e-01,\n",
" 8.0938e-01, 2.6675e-01, 6.1355e-01, 9.0162e-01, 4.2799e-01,\n",
" 8.3804e-01, 4.6611e-01, 8.9841e-01, 9.1118e-01, 6.0615e-01,\n",
" 8.8064e-01, 1.1570e+00, 9.5360e-01, 6.1671e-01, 7.3730e-01,\n",
" 1.1604e+00, 7.5139e-01, 1.0676e+00, 8.5293e-01, 1.2444e+00,\n",
" 7.3487e-01, 7.2214e-01, 1.3246e+00, 9.9059e-01, 1.1876e+00,\n",
" 8.9527e-01, 1.1861e+00, 1.1246e+00, 1.4331e+00, 1.0912e+00,\n",
" 1.0825e+00, 1.1025e+00, 9.9692e-01, 7.3992e-01, 6.6441e-01,\n",
" 9.1873e-01, 9.2798e-01, 1.3192e+00, 1.0102e+00, 1.3542e+00,\n",
" 1.0066e+00, 1.0593e+00, 1.0544e+00, 1.0728e+00, 8.1399e-01,\n",
" 1.2641e+00, 1.0079e+00, 1.0601e+00, 1.0796e+00, 1.0223e+00,\n",
" 1.1092e+00, 7.7240e-01, 1.3857e+00, 9.1455e-01, 8.6129e-01,\n",
" 8.0728e-01, 6.1754e-01, 1.0502e+00, 9.3687e-01, 9.5378e-01,\n",
" 9.7054e-01, 1.2540e+00, 1.1463e+00, 1.1405e+00, 1.2536e+00,\n",
" 8.8310e-01, 1.3811e+00, 1.1267e+00, 7.9463e-01, 1.2574e+00,\n",
" 1.0988e+00, 1.3334e+00, 1.2709e+00, 1.0338e+00, 8.9485e-01,\n",
" 8.5191e-01, 6.2941e-01, 8.1570e-01, 1.1244e+00, 1.0805e+00,\n",
" 9.9755e-01, 1.0758e+00, 1.1607e+00, 1.0960e+00, 9.6049e-01,\n",
" 1.0852e+00, 9.1462e-01, 9.4122e-01, 9.8505e-01, 7.3513e-01,\n",
" 1.0134e+00, 8.3373e-01, 7.4578e-01, 1.1270e+00, 1.0679e+00,\n",
" 8.9848e-01, 9.9106e-01, 9.4795e-01, 1.0659e+00, 8.2919e-01,\n",
" 8.6020e-01, 1.3219e+00, 1.0991e+00, 1.0899e+00, 1.1484e+00,\n",
" 1.0549e+00, 8.9757e-01, 1.2341e+00, 7.1129e-01, 7.8177e-01,\n",
" 7.1453e-01, 9.2287e-01, 5.1673e-01, 7.2670e-01, 5.6472e-01,\n",
" 1.0603e+00, 5.5677e-01, 7.6662e-01, 5.9738e-01, 8.7946e-01,\n",
" 7.2365e-01, 1.1941e+00, 9.4780e-01, 5.6618e-01, 5.3710e-01,\n",
" 6.8202e-01, 1.0785e+00, 7.5097e-01, 7.3525e-01, 7.4950e-01,\n",
" 7.1948e-01, 8.9217e-01, 3.9244e-01, 7.3835e-01, 4.3247e-01,\n",
" 7.5097e-01, 7.1474e-01, 8.1818e-01, 6.3685e-01, 1.0300e+00,\n",
" 5.9656e-01, 1.0586e+00, 8.1963e-01, 4.9452e-01, 1.0996e+00,\n",
" 5.0523e-01, 9.3571e-01, 5.5205e-01, 6.1644e-01, 6.4985e-01,\n",
" 6.3577e-01, 8.5211e-01, 9.2536e-01, 4.3236e-01, 5.6647e-01,\n",
" 4.7429e-01, 8.5065e-01, 5.0285e-01, 1.0053e+00, 4.8989e-01,\n",
" 1.1755e-01, 8.2002e-01, 7.0019e-01, 6.1519e-02, 6.4777e-01,\n",
" 3.1640e-01, 2.8206e-01, 7.1172e-01, 7.0953e-01, 6.4411e-01,\n",
" 4.9723e-01, 4.9160e-01, 7.2991e-01, 4.4568e-01, 4.7622e-01,\n",
" 2.6474e-01, 6.0209e-01, 5.5910e-01, 4.3042e-01, 5.2249e-01,\n",
" 2.1004e-01, 5.4428e-01, 1.2475e-01, 4.2799e-01, 7.4566e-02,\n",
" 5.3251e-01, 6.1238e-01, 3.2354e-01, 1.3797e-02, 2.1109e-01,\n",
" 5.6343e-01, 3.2116e-01, 5.0386e-01, 9.1126e-02, 4.6912e-01,\n",
" 3.4669e-02, 4.0979e-01, 1.4810e-02, 3.8405e-01, 2.2161e-01,\n",
" 1.9445e-01, -3.5447e-01, 1.5456e-01, 1.6863e-01, 2.0110e-01,\n",
" 1.5556e-01, 2.2514e-02, 1.6489e-01, 1.6907e-01, -9.4499e-02,\n",
" 1.3021e-01, 2.4134e-01, 9.6924e-02, 1.5037e-01, 3.9969e-02,\n",
" -2.2726e-01, 2.8770e-01, -1.7184e-01, -1.3635e-01, -8.5396e-02,\n",
" -9.3818e-02, -4.1428e-02, -4.6396e-01, -1.7805e-01, 3.6114e-01,\n",
" 1.5889e-01, -2.7120e-01, 2.0932e-01, -4.9246e-01, -1.9852e-02,\n",
" -9.9432e-02, -3.6289e-01, 2.1602e-01, -1.5902e-01, 2.5226e-01,\n",
" -4.1119e-01, 7.3532e-03, -2.6737e-01, -9.9375e-02, -5.8365e-01,\n",
" -3.8112e-01, 1.0808e-02, -6.2558e-01, -4.5019e-01, -3.2798e-01,\n",
" -7.1162e-02, -2.6805e-01, -2.4978e-01, -3.4975e-01, -2.8487e-01,\n",
" -2.4127e-01, -5.3032e-01, -5.4788e-01, -6.5170e-01, -3.3645e-01,\n",
" -3.3031e-01, -2.5862e-01, -4.1498e-01, -3.1122e-01, -4.6045e-01,\n",
" -5.4418e-01, -2.6614e-01, -4.7850e-01, -3.8730e-01, -3.8611e-01,\n",
" -4.1716e-01, -4.9462e-01, -6.8122e-01, -4.3859e-01, -4.6447e-01,\n",
" -2.6121e-01, -6.4777e-01, -2.9884e-01, -2.7754e-01, -3.8261e-01,\n",
" -5.6598e-01, -1.7966e-01, -8.3324e-01, -5.7268e-01, -5.2891e-01]),\n",
" tensor([[ 0.0644, -0.0288, 0.2246, -0.1722],\n",
" [-0.0288, 0.2246, -0.1722, 0.0664],\n",
" [ 0.2246, -0.1722, 0.0664, -0.1036],\n",
" ...,\n",
" [-0.2775, -0.3826, -0.5660, -0.1797],\n",
" [-0.3826, -0.5660, -0.1797, -0.8332],\n",
" [-0.5660, -0.1797, -0.8332, -0.5727]]),\n",
" tensor([[ 6.6353e-02],\n",
" [-1.0363e-01],\n",
" [ 8.8868e-02],\n",
" [ 1.5603e-01],\n",
" [ 2.0316e-01],\n",
" [ 2.2209e-01],\n",
" [ 4.0233e-01],\n",
" [ 1.8191e-01],\n",
" [ 9.4271e-02],\n",
" [ 1.9833e-01],\n",
" [ 2.7132e-01],\n",
" [-2.6344e-02],\n",
" [ 1.3314e-01],\n",
" [-9.5498e-02],\n",
" [ 4.2949e-01],\n",
" [ 2.9735e-01],\n",
" [ 2.6208e-01],\n",
" [ 2.5798e-01],\n",
" [ 2.6224e-01],\n",
" [ 4.0028e-01],\n",
" [ 1.6453e-01],\n",
" [-3.6497e-03],\n",
" [ 4.5941e-02],\n",
" [ 2.9152e-01],\n",
" [ 2.8247e-01],\n",
" [ 3.1230e-01],\n",
" [ 4.0011e-01],\n",
" [ 1.4096e-01],\n",
" [ 4.1744e-01],\n",
" [ 3.4225e-01],\n",
" [-4.5256e-02],\n",
" [ 2.8870e-01],\n",
" [ 3.8852e-01],\n",
" [ 3.4837e-01],\n",
" [ 6.1889e-01],\n",
" [ 6.2549e-01],\n",
" [ 2.3834e-01],\n",
" [ 4.8642e-01],\n",
" [ 3.5614e-01],\n",
" [ 1.1784e-01],\n",
" [ 3.8346e-01],\n",
" [ 4.5669e-01],\n",
" [ 3.6588e-01],\n",
" [ 2.6488e-01],\n",
" [ 6.0995e-01],\n",
" [ 6.9697e-01],\n",
" [ 7.5780e-01],\n",
" [ 5.8101e-01],\n",
" [ 3.5400e-01],\n",
" [ 2.4635e-01],\n",
" [ 4.7288e-01],\n",
" [ 6.6484e-01],\n",
" [ 6.3196e-01],\n",
" [ 5.6758e-01],\n",
" [ 3.1575e-01],\n",
" [ 7.3676e-01],\n",
" [ 8.1908e-01],\n",
" [ 8.8408e-01],\n",
" [ 7.6086e-01],\n",
" [ 4.3549e-01],\n",
" [ 7.9157e-01],\n",
" [ 4.1029e-01],\n",
" [ 3.4122e-01],\n",
" [ 1.0624e+00],\n",
" [ 9.8399e-01],\n",
" [ 7.3473e-01],\n",
" [ 6.9833e-01],\n",
" [ 3.4119e-01],\n",
" [ 7.3251e-01],\n",
" [ 6.7880e-01],\n",
" [ 6.3626e-01],\n",
" [ 1.0105e+00],\n",
" [ 7.0007e-01],\n",
" [ 1.1702e+00],\n",
" [ 6.0600e-01],\n",
" [ 8.9456e-01],\n",
" [ 5.1218e-01],\n",
" [ 7.3733e-01],\n",
" [ 6.1851e-01],\n",
" [ 7.6468e-01],\n",
" [ 6.5189e-01],\n",
" [ 1.0688e+00],\n",
" [ 1.0419e+00],\n",
" [ 9.7937e-01],\n",
" [ 1.0725e+00],\n",
" [ 5.4258e-01],\n",
" [ 9.2915e-01],\n",
" [ 4.3405e-01],\n",
" [ 4.7934e-01],\n",
" [ 1.1528e+00],\n",
" [ 7.5340e-01],\n",
" [ 5.4904e-01],\n",
" [ 5.4025e-01],\n",
" [ 5.1751e-01],\n",
" [ 2.9075e-01],\n",
" [ 5.5143e-01],\n",
" [ 8.6160e-01],\n",
" [ 9.6728e-01],\n",
" [ 6.0795e-01],\n",
" [ 7.0219e-01],\n",
" [ 1.0551e+00],\n",
" [ 7.9270e-01],\n",
" [ 9.2103e-01],\n",
" [ 8.7458e-01],\n",
" [ 9.9153e-01],\n",
" [ 6.0989e-01],\n",
" [ 7.4993e-01],\n",
" [ 6.9077e-01],\n",
" [ 5.6804e-01],\n",
" [ 7.0561e-01],\n",
" [ 7.8830e-01],\n",
" [ 9.7916e-01],\n",
" [ 9.9039e-01],\n",
" [ 7.9061e-01],\n",
" [ 9.6164e-01],\n",
" [ 8.5340e-01],\n",
" [ 8.2899e-01],\n",
" [ 7.3213e-01],\n",
" [ 6.8678e-01],\n",
" [ 1.2765e+00],\n",
" [ 1.2545e+00],\n",
" [ 1.1249e+00],\n",
" [ 1.3865e+00],\n",
" [ 8.9114e-01],\n",
" [ 8.0419e-01],\n",
" [ 1.2773e+00],\n",
" [ 8.9564e-01],\n",
" [ 6.2510e-01],\n",
" [ 1.1143e+00],\n",
" [ 9.5270e-01],\n",
" [ 9.5466e-01],\n",
" [ 7.9755e-01],\n",
" [ 1.0294e+00],\n",
" [ 5.8184e-01],\n",
" [ 1.2175e+00],\n",
" [ 1.0392e+00],\n",
" [ 9.4017e-01],\n",
" [ 1.1067e+00],\n",
" [ 9.4888e-01],\n",
" [ 8.5048e-01],\n",
" [ 9.3845e-01],\n",
" [ 1.2021e+00],\n",
" [ 9.6893e-01],\n",
" [ 1.0378e+00],\n",
" [ 1.1524e+00],\n",
" [ 1.0356e+00],\n",
" [ 1.2582e+00],\n",
" [ 9.6289e-01],\n",
" [ 1.1062e+00],\n",
" [ 6.3397e-01],\n",
" [ 8.6299e-01],\n",
" [ 8.4336e-01],\n",
" [ 6.3310e-01],\n",
" [ 1.3410e+00],\n",
" [ 9.9408e-01],\n",
" [ 7.2785e-01],\n",
" [ 1.2686e+00],\n",
" [ 8.6769e-01],\n",
" [ 1.2330e+00],\n",
" [ 1.0719e+00],\n",
" [ 7.1942e-01],\n",
" [ 1.1396e+00],\n",
" [ 9.7066e-01],\n",
" [ 1.1835e+00],\n",
" [ 9.9540e-01],\n",
" [ 7.0843e-01],\n",
" [ 1.0240e+00],\n",
" [ 9.7269e-01],\n",
" [ 8.0341e-01],\n",
" [ 1.0116e+00],\n",
" [ 8.1968e-01],\n",
" [ 7.5934e-01],\n",
" [ 9.6155e-01],\n",
" [ 1.1158e+00],\n",
" [ 9.6646e-01],\n",
" [ 7.0824e-01],\n",
" [ 1.2226e+00],\n",
" [ 7.9395e-01],\n",
" [ 9.5238e-01],\n",
" [ 1.1413e+00],\n",
" [ 8.7932e-01],\n",
" [ 9.0194e-01],\n",
" [ 8.6707e-01],\n",
" [ 1.2885e+00],\n",
" [ 1.2093e+00],\n",
" [ 1.2944e+00],\n",
" [ 6.3165e-01],\n",
" [ 5.5781e-01],\n",
" [ 1.0286e+00],\n",
" [ 1.3556e+00],\n",
" [ 8.9051e-01],\n",
" [ 1.1046e+00],\n",
" [ 9.9294e-01],\n",
" [ 1.2333e+00],\n",
" [ 8.1726e-01],\n",
" [ 3.1740e-01],\n",
" [ 7.6761e-01],\n",
" [ 6.5092e-01],\n",
" [ 8.9621e-01],\n",
" [ 6.8024e-01],\n",
" [ 1.0196e+00],\n",
" [ 7.5904e-01],\n",
" [ 9.4622e-01],\n",
" [ 8.6102e-01],\n",
" [ 8.3147e-01],\n",
" [ 7.4786e-01],\n",
" [ 9.6059e-01],\n",
" [ 8.6270e-01],\n",
" [ 9.4766e-01],\n",
" [ 5.2817e-01],\n",
" [ 1.0704e+00],\n",
" [ 9.7133e-01],\n",
" [ 8.4503e-01],\n",
" [ 8.8452e-01],\n",
" [ 5.0776e-01],\n",
" [ 9.2430e-01],\n",
" [ 5.9001e-01],\n",
" [ 8.0198e-01],\n",
" [ 7.8422e-01],\n",
" [ 5.8749e-01],\n",
" [ 7.0924e-01],\n",
" [ 7.5607e-01],\n",
" [ 4.9436e-01],\n",
" [ 7.7539e-01],\n",
" [ 6.4349e-01],\n",
" [ 7.5043e-01],\n",
" [ 7.3827e-01],\n",
" [ 8.6847e-01],\n",
" [ 5.4753e-01],\n",
" [ 6.5105e-01],\n",
" [ 1.0554e+00],\n",
" [ 7.8901e-01],\n",
" [ 8.9882e-01],\n",
" [ 7.0064e-01],\n",
" [ 5.4479e-01],\n",
" [ 8.2511e-01],\n",
" [ 5.1943e-01],\n",
" [ 1.5267e-01],\n",
" [ 7.0765e-01],\n",
" [ 5.7810e-01],\n",
" [ 6.0173e-01],\n",
" [ 4.8342e-01],\n",
" [ 6.4010e-01],\n",
" [ 9.0313e-01],\n",
" [ 3.0786e-01],\n",
" [ 1.0283e+00],\n",
" [ 2.3870e-01],\n",
" [ 5.7824e-01],\n",
" [-3.3643e-02],\n",
" [ 4.2503e-01],\n",
" [ 5.7349e-01],\n",
" [ 4.4148e-01],\n",
" [ 6.8640e-01],\n",
" [ 6.1931e-01],\n",
" [ 2.5912e-01],\n",
" [ 2.2371e-01],\n",
" [ 6.0460e-01],\n",
" [ 3.7744e-01],\n",
" [ 5.9038e-01],\n",
" [ 3.7926e-01],\n",
" [ 5.2749e-01],\n",
" [ 6.2748e-01],\n",
" [ 6.6149e-01],\n",
" [ 4.3518e-01],\n",
" [ 4.0026e-01],\n",
" [ 2.9409e-01],\n",
" [ 4.5821e-01],\n",
" [ 3.7015e-01],\n",
" [ 3.4187e-01],\n",
" [ 1.8859e-01],\n",
" [ 6.9215e-01],\n",
" [ 3.2195e-01],\n",
" [ 2.4332e-02],\n",
" [ 5.2798e-01],\n",
" [ 9.0723e-02],\n",
" [ 1.6245e-01],\n",
" [ 2.7128e-01],\n",
" [ 2.0240e-01],\n",
" [-8.3513e-02],\n",
" [ 3.9523e-01],\n",
" [ 5.8745e-01],\n",
" [ 3.2908e-01],\n",
" [ 2.4919e-01],\n",
" [ 2.8691e-01],\n",
" [ 1.1735e-01],\n",
" [ 4.3031e-01],\n",
" [ 2.6840e-01],\n",
" [ 2.5892e-01],\n",
" [ 1.7928e-01],\n",
" [ 4.2978e-01],\n",
" [ 5.2001e-02],\n",
" [ 2.7463e-01],\n",
" [-1.3417e-01],\n",
" [-1.6025e-02],\n",
" [ 2.9625e-01],\n",
" [ 2.3450e-01],\n",
" [ 3.7070e-01],\n",
" [ 7.5755e-02],\n",
" [ 1.6683e-01],\n",
" [ 1.1036e-01],\n",
" [-6.8264e-03],\n",
" [ 7.2137e-03],\n",
" [ 2.7841e-01],\n",
" [ 9.1316e-02],\n",
" [ 9.1231e-03],\n",
" [-3.5385e-01],\n",
" [ 1.1431e-01],\n",
" [-2.0163e-01],\n",
" [ 2.0756e-01],\n",
" [-9.4054e-02],\n",
" [-1.2446e-01],\n",
" [ 2.4384e-01],\n",
" [-2.3242e-01],\n",
" [-2.0931e-01],\n",
" [-1.8707e-01],\n",
" [-1.3957e-01],\n",
" [-1.8903e-01],\n",
" [-8.1507e-02],\n",
" [-3.4759e-01],\n",
" [-1.1257e-02],\n",
" [-1.9703e-01],\n",
" [ 2.7359e-02],\n",
" [ 7.6564e-04],\n",
" [-6.1846e-01],\n",
" [-7.9818e-02],\n",
" [-3.6661e-01],\n",
" [ 6.5931e-02],\n",
" [-5.8843e-01],\n",
" [-1.7423e-01],\n",
" [-2.1431e-01],\n",
" [ 6.6695e-02],\n",
" [-2.9555e-01],\n",
" [-1.3760e-01],\n",
" [-5.6146e-02],\n",
" [-1.7448e-02],\n",
" [-3.2177e-01],\n",
" [-1.8931e-01],\n",
" [-3.3209e-01],\n",
" [-2.6944e-01],\n",
" [-3.6146e-01],\n",
" [-3.5334e-01],\n",
" [-3.3019e-01],\n",
" [-2.8488e-02],\n",
" [-3.6981e-01],\n",
" [-3.1455e-01],\n",
" [-4.2320e-01],\n",
" [-5.8333e-01],\n",
" [-4.5083e-01],\n",
" [-2.6372e-01],\n",
" [-6.6177e-01],\n",
" [-5.4376e-01],\n",
" [-2.1988e-01],\n",
" [-7.4067e-02],\n",
" [-3.6120e-01],\n",
" [-7.7958e-01],\n",
" [-2.7244e-01],\n",
" [-3.3669e-01],\n",
" [-6.1547e-01],\n",
" [-7.1691e-01],\n",
" [-3.2713e-01],\n",
" [-3.2994e-01],\n",
" [-4.0011e-01],\n",
" [-4.5194e-01],\n",
" [-5.5936e-01],\n",
" [-4.8557e-01],\n",
" [-7.0421e-01],\n",
" [-1.8149e-01],\n",
" [-6.7299e-01],\n",
" [-4.4816e-01],\n",
" [-5.8107e-01],\n",
" [-4.7465e-01],\n",
" [-4.2599e-01],\n",
" [-8.3749e-01],\n",
" [-6.6348e-01],\n",
" [-6.9997e-01],\n",
" [-5.8357e-01],\n",
" [-3.5789e-01],\n",
" [-7.1656e-01],\n",
" [-8.7729e-01],\n",
" [-6.3883e-01],\n",
" [-6.9591e-01],\n",
" [-9.3954e-01],\n",
" [-4.9190e-01],\n",
" [-7.3111e-01],\n",
" [-4.3942e-01],\n",
" [-6.2770e-01],\n",
" [-9.2674e-01],\n",
" [-8.6653e-01],\n",
" [-9.6315e-01],\n",
" [-6.9102e-01],\n",
" [-5.9326e-01],\n",
" [-8.5505e-01],\n",
" [-8.5113e-01],\n",
" [-6.2499e-01],\n",
" [-9.9391e-01],\n",
" [-8.4853e-01],\n",
" [-7.8337e-01],\n",
" [-6.2505e-01],\n",
" [-8.0748e-01],\n",
" [-8.2683e-01],\n",
" [-6.9701e-01],\n",
" [-7.8696e-01],\n",
" [-6.9023e-01],\n",
" [-6.2324e-01],\n",
" [-9.8813e-01],\n",
" [-8.8023e-01],\n",
" [-7.4747e-01],\n",
" [-9.1390e-01],\n",
" [-1.1208e+00],\n",
" [-1.3740e+00],\n",
" [-1.0556e+00],\n",
" [-9.5917e-01],\n",
" [-7.6300e-01],\n",
" [-1.0235e+00],\n",
" [-1.0120e+00],\n",
" [-7.2330e-01],\n",
" [-1.0387e+00],\n",
" [-5.4913e-01],\n",
" [-5.8775e-01],\n",
" [-9.5260e-01],\n",
" [-7.9546e-01],\n",
" [-6.3363e-01],\n",
" [-7.6522e-01],\n",
" [-1.0495e+00],\n",
" [-1.1376e+00],\n",
" [-9.7715e-01],\n",
" [-1.0136e+00],\n",
" [-1.0233e+00],\n",
" [-4.2618e-01],\n",
" [-9.1957e-01],\n",
" [-1.1356e+00],\n",
" [-9.9493e-01],\n",
" [-6.0729e-01],\n",
" [-6.6857e-01],\n",
" [-8.6124e-01],\n",
" [-6.8043e-01],\n",
" [-7.9954e-01],\n",
" [-9.4514e-01],\n",
" [-9.6364e-01],\n",
" [-7.6007e-01],\n",
" [-7.9190e-01],\n",
" [-9.0256e-01],\n",
" [-1.0012e+00],\n",
" [-8.1351e-01],\n",
" [-1.0263e+00],\n",
" [-7.2729e-01],\n",
" [-8.8496e-01],\n",
" [-1.2832e+00],\n",
" [-8.1455e-01],\n",
" [-7.6072e-01],\n",
" [-9.7935e-01],\n",
" [-1.0354e+00],\n",
" [-1.1628e+00],\n",
" [-8.2264e-01],\n",
" [-7.7549e-01],\n",
" [-1.6201e+00],\n",
" [-6.8463e-01],\n",
" [-1.0060e+00],\n",
" [-8.6768e-01],\n",
" [-7.4937e-01],\n",
" [-1.0767e+00],\n",
" [-5.6351e-01],\n",
" [-9.3733e-01],\n",
" [-1.2270e+00],\n",
" [-9.3480e-01],\n",
" [-1.1192e+00],\n",
" [-1.2890e+00],\n",
" [-1.3016e+00],\n",
" [-9.8122e-01],\n",
" [-1.2527e+00],\n",
" [-8.9113e-01],\n",
" [-9.9467e-01],\n",
" [-7.3336e-01],\n",
" [-1.2790e+00],\n",
" [-1.2139e+00],\n",
" [-7.6957e-01],\n",
" [-8.9945e-01],\n",
" [-1.2749e+00],\n",
" [-7.1642e-01],\n",
" [-1.0271e+00],\n",
" [-1.3689e+00],\n",
" [-8.8271e-01],\n",
" [-9.3780e-01],\n",
" [-1.0709e+00],\n",
" [-1.0079e+00],\n",
" [-1.2095e+00],\n",
" [-8.3435e-01],\n",
" [-1.1892e+00],\n",
" [-5.8446e-01],\n",
" [-1.0576e+00],\n",
" [-7.8082e-01],\n",
" [-9.9774e-01],\n",
" [-1.0047e+00],\n",
" [-9.4661e-01],\n",
" [-7.9260e-01],\n",
" [-7.8298e-01],\n",
" [-8.1630e-01],\n",
" [-1.1429e+00],\n",
" [-9.0614e-01],\n",
" [-1.2286e+00],\n",
" [-1.0185e+00],\n",
" [-9.2398e-01],\n",
" [-9.3490e-01],\n",
" [-1.1074e+00],\n",
" [-7.6938e-01],\n",
" [-7.7835e-01],\n",
" [-7.9201e-01],\n",
" [-8.3866e-01],\n",
" [-5.0138e-01],\n",
" [-1.0518e+00],\n",
" [-1.1464e+00],\n",
" [-8.3545e-01],\n",
" [-6.3239e-01],\n",
" [-8.6411e-01],\n",
" [-1.0649e+00],\n",
" [-8.3904e-01],\n",
" [-9.3103e-01],\n",
" [-9.5688e-01],\n",
" [-1.3042e+00],\n",
" [-7.8724e-01],\n",
" [-8.9785e-01],\n",
" [-5.8319e-01],\n",
" [-9.7922e-01],\n",
" [-9.8292e-01],\n",
" [-1.0255e+00],\n",
" [-6.4694e-01],\n",
" [-8.0609e-01],\n",
" [-6.8586e-01],\n",
" [-1.0256e+00],\n",
" [-6.2613e-01],\n",
" [-5.2035e-01],\n",
" [-8.2406e-01],\n",
" [-6.1214e-01],\n",
" [-6.3858e-01],\n",
" [-7.9211e-01],\n",
" [-8.4110e-01],\n",
" [-8.7759e-01],\n",
" [-1.0926e+00],\n",
" [-4.8413e-01],\n",
" [-8.8961e-01],\n",
" [-8.6125e-01],\n",
" [-8.4024e-01],\n",
" [-7.4395e-01],\n",
" [-7.6605e-01],\n",
" [-7.7586e-01],\n",
" [-6.6531e-01],\n",
" [-8.7798e-01],\n",
" [-5.3314e-01],\n",
" [-3.8761e-01],\n",
" [-5.2371e-01],\n",
" [-4.9831e-01],\n",
" [-4.7124e-01],\n",
" [-4.0311e-01],\n",
" [-3.9151e-01],\n",
" [-6.0217e-01],\n",
" [-3.5831e-01],\n",
" [-8.1952e-01],\n",
" [-3.7521e-01],\n",
" [-4.1182e-01],\n",
" [-6.9520e-01],\n",
" [-1.3176e-01],\n",
" [-3.5725e-01],\n",
" [-6.3746e-01],\n",
" [-7.1734e-01],\n",
" [-6.0116e-01],\n",
" [-4.7620e-01],\n",
" [-1.3156e-01],\n",
" [-6.7144e-01],\n",
" [-4.4765e-01],\n",
" [-7.9655e-01],\n",
" [-4.6641e-01],\n",
" [-5.1395e-01],\n",
" [-5.9736e-01],\n",
" [-7.0441e-02],\n",
" [-2.9234e-01],\n",
" [-6.3963e-01],\n",
" [-5.2695e-01],\n",
" [-8.9920e-01],\n",
" [-3.9060e-01],\n",
" [-3.3070e-01],\n",
" [-5.8975e-02],\n",
" [-3.4768e-01],\n",
" [-3.9728e-01],\n",
" [-5.0462e-01],\n",
" [-6.9052e-01],\n",
" [-2.6284e-01],\n",
" [-5.3189e-01],\n",
" [-2.8471e-01],\n",
" [-3.8808e-01],\n",
" [-2.5389e-01],\n",
" [-1.0635e-01],\n",
" [-4.4742e-01],\n",
" [-2.8809e-01],\n",
" [-4.6124e-01],\n",
" [-1.8804e-01],\n",
" [-6.5422e-01],\n",
" [-2.9021e-01],\n",
" [-1.6320e-01],\n",
" [-2.7098e-01],\n",
" [-1.8750e-01],\n",
" [ 2.4683e-01],\n",
" [-1.2878e-01],\n",
" [-2.1855e-01],\n",
" [-5.1811e-01],\n",
" [ 5.4305e-02],\n",
" [-1.7425e-01],\n",
" [-2.6757e-01],\n",
" [ 1.3357e-01],\n",
" [-3.1198e-01],\n",
" [ 8.1655e-02],\n",
" [-2.8527e-01],\n",
" [-1.3569e-01],\n",
" [-1.4587e-01],\n",
" [ 1.7095e-01],\n",
" [-2.3103e-02],\n",
" [ 2.1838e-01],\n",
" [-1.6752e-01],\n",
" [ 3.1579e-01],\n",
" [ 2.7031e-01],\n",
" [-2.4856e-01],\n",
" [ 7.6009e-03],\n",
" [-1.1322e-03],\n",
" [-2.0730e-01],\n",
" [-1.2818e-01],\n",
" [ 1.4944e-01],\n",
" [ 9.0087e-02],\n",
" [ 4.0082e-01],\n",
" [ 2.9144e-01],\n",
" [-1.4654e-01],\n",
" [ 8.8202e-02],\n",
" [-1.7362e-01],\n",
" [-9.1909e-03],\n",
" [-8.0324e-02],\n",
" [-5.5343e-02],\n",
" [ 5.8975e-01],\n",
" [ 1.6623e-01],\n",
" [ 3.3504e-01],\n",
" [ 2.4773e-02],\n",
" [ 8.7046e-02],\n",
" [-1.6163e-01],\n",
" [ 5.1961e-01],\n",
" [ 1.7512e-01],\n",
" [ 1.0362e-01],\n",
" [ 2.0362e-01],\n",
" [ 1.9839e-01],\n",
" [ 4.1845e-01],\n",
" [ 4.6793e-01],\n",
" [-1.1853e-01],\n",
" [ 1.2487e-01],\n",
" [ 1.9344e-01],\n",
" [ 3.0220e-01],\n",
" [ 8.3792e-02],\n",
" [ 3.1021e-01],\n",
" [ 3.2869e-01],\n",
" [ 3.0734e-01],\n",
" [ 5.7626e-01],\n",
" [ 4.3928e-01],\n",
" [ 3.1897e-01],\n",
" [ 2.8437e-01],\n",
" [ 5.5234e-01],\n",
" [ 6.2213e-01],\n",
" [ 6.1580e-01],\n",
" [ 3.9967e-01],\n",
" [ 4.5823e-01],\n",
" [ 4.3247e-01],\n",
" [ 5.0114e-01],\n",
" [ 8.3448e-01],\n",
" [ 4.9888e-01],\n",
" [ 5.0631e-01],\n",
" [ 2.0848e-01],\n",
" [ 3.6072e-01],\n",
" [ 2.7618e-01],\n",
" [ 4.0099e-01],\n",
" [ 5.4027e-01],\n",
" [ 2.4210e-01],\n",
" [ 1.2701e-01],\n",
" [ 4.4325e-01],\n",
" [ 3.0193e-01],\n",
" [ 3.6690e-01],\n",
" [ 5.7623e-01],\n",
" [ 5.2195e-01],\n",
" [ 6.5280e-01],\n",
" [ 5.7883e-01],\n",
" [ 2.9837e-01],\n",
" [ 2.5124e-01],\n",
" [ 3.4579e-01],\n",
" [ 2.2099e-01],\n",
" [ 3.4217e-01],\n",
" [ 8.5317e-01],\n",
" [ 7.0991e-01],\n",
" [ 3.0030e-01],\n",
" [ 7.5253e-01],\n",
" [ 7.0718e-01],\n",
" [ 7.5546e-01],\n",
" [ 8.3272e-01],\n",
" [ 8.2167e-01],\n",
" [ 6.8525e-01],\n",
" [ 8.5421e-01],\n",
" [ 3.8577e-01],\n",
" [ 6.1654e-01],\n",
" [ 6.7905e-01],\n",
" [ 9.9523e-01],\n",
" [ 7.6051e-01],\n",
" [ 8.6416e-01],\n",
" [ 6.0249e-01],\n",
" [ 1.2840e+00],\n",
" [ 6.4849e-01],\n",
" [ 5.6504e-01],\n",
" [ 6.7845e-01],\n",
" [ 3.4798e-01],\n",
" [ 6.4645e-01],\n",
" [ 7.8018e-01],\n",
" [ 9.8716e-01],\n",
" [ 7.3607e-01],\n",
" [ 7.5667e-01],\n",
" [ 9.4265e-01],\n",
" [ 8.0938e-01],\n",
" [ 2.6675e-01],\n",
" [ 6.1355e-01],\n",
" [ 9.0162e-01],\n",
" [ 4.2799e-01],\n",
" [ 8.3804e-01],\n",
" [ 4.6611e-01],\n",
" [ 8.9841e-01],\n",
" [ 9.1118e-01],\n",
" [ 6.0615e-01],\n",
" [ 8.8064e-01],\n",
" [ 1.1570e+00],\n",
" [ 9.5360e-01],\n",
" [ 6.1671e-01],\n",
" [ 7.3730e-01],\n",
" [ 1.1604e+00],\n",
" [ 7.5139e-01],\n",
" [ 1.0676e+00],\n",
" [ 8.5293e-01],\n",
" [ 1.2444e+00],\n",
" [ 7.3487e-01],\n",
" [ 7.2214e-01],\n",
" [ 1.3246e+00],\n",
" [ 9.9059e-01],\n",
" [ 1.1876e+00],\n",
" [ 8.9527e-01],\n",
" [ 1.1861e+00],\n",
" [ 1.1246e+00],\n",
" [ 1.4331e+00],\n",
" [ 1.0912e+00],\n",
" [ 1.0825e+00],\n",
" [ 1.1025e+00],\n",
" [ 9.9692e-01],\n",
" [ 7.3992e-01],\n",
" [ 6.6441e-01],\n",
" [ 9.1873e-01],\n",
" [ 9.2798e-01],\n",
" [ 1.3192e+00],\n",
" [ 1.0102e+00],\n",
" [ 1.3542e+00],\n",
" [ 1.0066e+00],\n",
" [ 1.0593e+00],\n",
" [ 1.0544e+00],\n",
" [ 1.0728e+00],\n",
" [ 8.1399e-01],\n",
" [ 1.2641e+00],\n",
" [ 1.0079e+00],\n",
" [ 1.0601e+00],\n",
" [ 1.0796e+00],\n",
" [ 1.0223e+00],\n",
" [ 1.1092e+00],\n",
" [ 7.7240e-01],\n",
" [ 1.3857e+00],\n",
" [ 9.1455e-01],\n",
" [ 8.6129e-01],\n",
" [ 8.0728e-01],\n",
" [ 6.1754e-01],\n",
" [ 1.0502e+00],\n",
" [ 9.3687e-01],\n",
" [ 9.5378e-01],\n",
" [ 9.7054e-01],\n",
" [ 1.2540e+00],\n",
" [ 1.1463e+00],\n",
" [ 1.1405e+00],\n",
" [ 1.2536e+00],\n",
" [ 8.8310e-01],\n",
" [ 1.3811e+00],\n",
" [ 1.1267e+00],\n",
" [ 7.9463e-01],\n",
" [ 1.2574e+00],\n",
" [ 1.0988e+00],\n",
" [ 1.3334e+00],\n",
" [ 1.2709e+00],\n",
" [ 1.0338e+00],\n",
" [ 8.9485e-01],\n",
" [ 8.5191e-01],\n",
" [ 6.2941e-01],\n",
" [ 8.1570e-01],\n",
" [ 1.1244e+00],\n",
" [ 1.0805e+00],\n",
" [ 9.9755e-01],\n",
" [ 1.0758e+00],\n",
" [ 1.1607e+00],\n",
" [ 1.0960e+00],\n",
" [ 9.6049e-01],\n",
" [ 1.0852e+00],\n",
" [ 9.1462e-01],\n",
" [ 9.4122e-01],\n",
" [ 9.8505e-01],\n",
" [ 7.3513e-01],\n",
" [ 1.0134e+00],\n",
" [ 8.3373e-01],\n",
" [ 7.4578e-01],\n",
" [ 1.1270e+00],\n",
" [ 1.0679e+00],\n",
" [ 8.9848e-01],\n",
" [ 9.9106e-01],\n",
" [ 9.4795e-01],\n",
" [ 1.0659e+00],\n",
" [ 8.2919e-01],\n",
" [ 8.6020e-01],\n",
" [ 1.3219e+00],\n",
" [ 1.0991e+00],\n",
" [ 1.0899e+00],\n",
" [ 1.1484e+00],\n",
" [ 1.0549e+00],\n",
" [ 8.9757e-01],\n",
" [ 1.2341e+00],\n",
" [ 7.1129e-01],\n",
" [ 7.8177e-01],\n",
" [ 7.1453e-01],\n",
" [ 9.2287e-01],\n",
" [ 5.1673e-01],\n",
" [ 7.2670e-01],\n",
" [ 5.6472e-01],\n",
" [ 1.0603e+00],\n",
" [ 5.5677e-01],\n",
" [ 7.6662e-01],\n",
" [ 5.9738e-01],\n",
" [ 8.7946e-01],\n",
" [ 7.2365e-01],\n",
" [ 1.1941e+00],\n",
" [ 9.4780e-01],\n",
" [ 5.6618e-01],\n",
" [ 5.3710e-01],\n",
" [ 6.8202e-01],\n",
" [ 1.0785e+00],\n",
" [ 7.5097e-01],\n",
" [ 7.3525e-01],\n",
" [ 7.4950e-01],\n",
" [ 7.1948e-01],\n",
" [ 8.9217e-01],\n",
" [ 3.9244e-01],\n",
" [ 7.3835e-01],\n",
" [ 4.3247e-01],\n",
" [ 7.5097e-01],\n",
" [ 7.1474e-01],\n",
" [ 8.1818e-01],\n",
" [ 6.3685e-01],\n",
" [ 1.0300e+00],\n",
" [ 5.9656e-01],\n",
" [ 1.0586e+00],\n",
" [ 8.1963e-01],\n",
" [ 4.9452e-01],\n",
" [ 1.0996e+00],\n",
" [ 5.0523e-01],\n",
" [ 9.3571e-01],\n",
" [ 5.5205e-01],\n",
" [ 6.1644e-01],\n",
" [ 6.4985e-01],\n",
" [ 6.3577e-01],\n",
" [ 8.5211e-01],\n",
" [ 9.2536e-01],\n",
" [ 4.3236e-01],\n",
" [ 5.6647e-01],\n",
" [ 4.7429e-01],\n",
" [ 8.5065e-01],\n",
" [ 5.0285e-01],\n",
" [ 1.0053e+00],\n",
" [ 4.8989e-01],\n",
" [ 1.1755e-01],\n",
" [ 8.2002e-01],\n",
" [ 7.0019e-01],\n",
" [ 6.1519e-02],\n",
" [ 6.4777e-01],\n",
" [ 3.1640e-01],\n",
" [ 2.8206e-01],\n",
" [ 7.1172e-01],\n",
" [ 7.0953e-01],\n",
" [ 6.4411e-01],\n",
" [ 4.9723e-01],\n",
" [ 4.9160e-01],\n",
" [ 7.2991e-01],\n",
" [ 4.4568e-01],\n",
" [ 4.7622e-01],\n",
" [ 2.6474e-01],\n",
" [ 6.0209e-01],\n",
" [ 5.5910e-01],\n",
" [ 4.3042e-01],\n",
" [ 5.2249e-01],\n",
" [ 2.1004e-01],\n",
" [ 5.4428e-01],\n",
" [ 1.2475e-01],\n",
" [ 4.2799e-01],\n",
" [ 7.4566e-02],\n",
" [ 5.3251e-01],\n",
" [ 6.1238e-01],\n",
" [ 3.2354e-01],\n",
" [ 1.3797e-02],\n",
" [ 2.1109e-01],\n",
" [ 5.6343e-01],\n",
" [ 3.2116e-01],\n",
" [ 5.0386e-01],\n",
" [ 9.1126e-02],\n",
" [ 4.6912e-01],\n",
" [ 3.4669e-02],\n",
" [ 4.0979e-01],\n",
" [ 1.4810e-02],\n",
" [ 3.8405e-01],\n",
" [ 2.2161e-01],\n",
" [ 1.9445e-01],\n",
" [-3.5447e-01],\n",
" [ 1.5456e-01],\n",
" [ 1.6863e-01],\n",
" [ 2.0110e-01],\n",
" [ 1.5556e-01],\n",
" [ 2.2514e-02],\n",
" [ 1.6489e-01],\n",
" [ 1.6907e-01],\n",
" [-9.4499e-02],\n",
" [ 1.3021e-01],\n",
" [ 2.4134e-01],\n",
" [ 9.6924e-02],\n",
" [ 1.5037e-01],\n",
" [ 3.9969e-02],\n",
" [-2.2726e-01],\n",
" [ 2.8770e-01],\n",
" [-1.7184e-01],\n",
" [-1.3635e-01],\n",
" [-8.5396e-02],\n",
" [-9.3818e-02],\n",
" [-4.1428e-02],\n",
" [-4.6396e-01],\n",
" [-1.7805e-01],\n",
" [ 3.6114e-01],\n",
" [ 1.5889e-01],\n",
" [-2.7120e-01],\n",
" [ 2.0932e-01],\n",
" [-4.9246e-01],\n",
" [-1.9852e-02],\n",
" [-9.9432e-02],\n",
" [-3.6289e-01],\n",
" [ 2.1602e-01],\n",
" [-1.5902e-01],\n",
" [ 2.5226e-01],\n",
" [-4.1119e-01],\n",
" [ 7.3532e-03],\n",
" [-2.6737e-01],\n",
" [-9.9375e-02],\n",
" [-5.8365e-01],\n",
" [-3.8112e-01],\n",
" [ 1.0808e-02],\n",
" [-6.2558e-01],\n",
" [-4.5019e-01],\n",
" [-3.2798e-01],\n",
" [-7.1162e-02],\n",
" [-2.6805e-01],\n",
" [-2.4978e-01],\n",
" [-3.4975e-01],\n",
" [-2.8487e-01],\n",
" [-2.4127e-01],\n",
" [-5.3032e-01],\n",
" [-5.4788e-01],\n",
" [-6.5170e-01],\n",
" [-3.3645e-01],\n",
" [-3.3031e-01],\n",
" [-2.5862e-01],\n",
" [-4.1498e-01],\n",
" [-3.1122e-01],\n",
" [-4.6045e-01],\n",
" [-5.4418e-01],\n",
" [-2.6614e-01],\n",
" [-4.7850e-01],\n",
" [-3.8730e-01],\n",
" [-3.8611e-01],\n",
" [-4.1716e-01],\n",
" [-4.9462e-01],\n",
" [-6.8122e-01],\n",
" [-4.3859e-01],\n",
" [-4.6447e-01],\n",
" [-2.6121e-01],\n",
" [-6.4777e-01],\n",
" [-2.9884e-01],\n",
" [-2.7754e-01],\n",
" [-3.8261e-01],\n",
" [-5.6598e-01],\n",
" [-1.7966e-01],\n",
" [-8.3324e-01],\n",
" [-5.7268e-01],\n",
" [-5.2891e-01]]))"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 84
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:38.270738873Z",
"start_time": "2026-03-29T09:05:38.256891510Z"
}
},
"cell_type": "code",
"source": [
"batch_size, n_train = 16, 600\n",
"# 只有前n_train个样本用于训练\n",
"train_iter = d2l.load_array((features[:n_train], labels[:n_train]),\n",
"batch_size, is_train=True)\n"
],
"id": "239a596b20d40dec",
"outputs": [],
"execution_count": 85
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:38.324191264Z",
"start_time": "2026-03-29T09:05:38.275367502Z"
}
},
"cell_type": "code",
"source": [
"def init_weights(m):\n",
" if type(m) == nn.Linear:\n",
" nn.init.xavier_uniform_(m.weight)"
],
"id": "54d30bd0ee41cb8",
"outputs": [],
"execution_count": 86
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:38.371737960Z",
"start_time": "2026-03-29T09:05:38.325724185Z"
}
},
"cell_type": "code",
"source": [
"def get_net():\n",
" net = nn.Sequential(nn.Linear(4, 10),\n",
" nn.ReLU(),\n",
" nn.Linear(10, 1))\n",
" net.apply(init_weights)\n",
" return net\n",
"loss = nn.MSELoss(reduction='none')"
],
"id": "5d095792e3b3681",
"outputs": [],
"execution_count": 87
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:38.471484710Z",
"start_time": "2026-03-29T09:05:38.373039400Z"
}
},
"cell_type": "code",
"source": [
"def train(net, train_iter, loss, epochs, lr):\n",
" trainer = torch.optim.Adam(net.parameters(), lr)\n",
" for epoch in range(epochs):\n",
" for X, y in train_iter:\n",
" trainer.zero_grad()\n",
" l = loss(net(X), y)\n",
" l.sum().backward()\n",
" trainer.step()\n",
" print(f'epoch {epoch + 1}, '\n",
" f'loss: {d2l.evaluate_loss(net, train_iter, loss):f}')\n",
"net = get_net()\n",
"train(net, train_iter, loss, 5, 0.01)"
],
"id": "5c1dba484e805335",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch 1, loss: 0.057278\n",
"epoch 2, loss: 0.051284\n",
"epoch 3, loss: 0.047806\n",
"epoch 4, loss: 0.048928\n",
"epoch 5, loss: 0.049009\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/yukun/.conda/envs/nn/lib/python3.11/site-packages/d2l/torch.py:3179: UserWarning: Converting a tensor with requires_grad=True to a scalar may lead to unexpected behavior.\n",
"Consider using tensor.detach() first. (Triggered internally at /pytorch/torch/csrc/autograd/generated/python_variable_methods.cpp:836.)\n",
" self.data = [a + float(b) for a, b in zip(self.data, args)]\n"
]
}
],
"execution_count": 88
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:38.651527416Z",
"start_time": "2026-03-29T09:05:38.486176418Z"
}
},
"cell_type": "code",
"source": [
"onestep_preds = net(features)\n",
"d2l.plot([time, time[tau:]],\n",
"[x.detach().numpy(), onestep_preds.detach().numpy()], 'time',\n",
"'x', legend=['data', '1-step preds'], xlim=[1, 1000],\n",
"figsize=(6, 3))"
],
"id": "a6efb4a978cd9375",
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 600x300 with 1 Axes>"
],
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"406.885938pt\" height=\"211.07625pt\" viewBox=\"0 0 406.885938 211.07625\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <cc:Work>\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n <dc:date>2026-03-29T17:05:38.555907</dc:date>\n <dc:format>image/svg+xml</dc:format>\n <dc:creator>\n <cc:Agent>\n <dc:title>Matplotlib v3.7.2, https://matplotlib.org/</dc:title>\n </cc:Agent>\n </dc:creator>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs>\n <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n <g id=\"patch_1\">\n <path d=\"M 0 211.07625 \nL 406.885938 211.07625 \nL 406.885938 0 \nL 0 0 \nz\n\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 52.160938 173.52 \nL 386.960938 173.52 \nL 386.960938 7.2 \nL 52.160938 7.2 \nz\n\"/>\n </g>\n <g id=\"matplotlib.axis_1\">\n <g id=\"xtick_1\">\n <g id=\"line2d_1\">\n <path d=\"M 118.852829 173.52 \nL 118.852829 7.2 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_2\">\n <defs>\n <path id=\"ma1a700dbec\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#ma1a700dbec\" x=\"118.852829\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_1\">\n <!-- 200 -->\n <g style=\"fill: #ffffff\" transform=\"translate(109.309079 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-32\" d=\"M 1228 531 \nL 3431 531 \nL 3431 0 \nL 469 0 \nL 469 531 \nQ 828 903 1448 1529 \nQ 2069 2156 2228 2338 \nQ 2531 2678 2651 2914 \nQ 2772 3150 2772 3378 \nQ 2772 3750 2511 3984 \nQ 2250 4219 1831 4219 \nQ 1534 4219 1204 4116 \nQ 875 4013 500 3803 \nL 500 4441 \nQ 881 4594 1212 4672 \nQ 1544 4750 1819 4750 \nQ 2544 4750 2975 4387 \nQ 3406 4025 3406 3419 \nQ 3406 3131 3298 2873 \nQ 3191 2616 2906 2266 \nQ 2828 2175 2409 1742 \nQ 1991 1309 1228 531 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \nQ 1547 4250 1301 3770 \nQ 1056 3291 1056 2328 \nQ 1056 1369 1301 889 \nQ 1547 409 2034 409 \nQ 2525 409 2770 889 \nQ 3016 1369 3016 2328 \nQ 3016 3291 2770 3770 \nQ 2525 4250 2034 4250 \nz\nM 2034 4750 \nQ 2819 4750 3233 4129 \nQ 3647 3509 3647 2328 \nQ 3647 1150 3233 529 \nQ 2819 -91 2034 -91 \nQ 1250 -91 836 529 \nQ 422 1150 422 2328 \nQ 422 3509 836 4129 \nQ 1250 4750 2034 4750 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-32\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_2\">\n <g id=\"line2d_3\">\n <path d=\"M 185.879856 173.52 \nL 185.879856 7.2 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_4\">\n <g>\n <use xlink:href=\"#ma1a700dbec\" x=\"185.879856\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_2\">\n <!-- 400 -->\n <g style=\"fill: #ffffff\" transform=\"translate(176.336106 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-34\" d=\"M 2419 4116 \nL 825 1625 \nL 2419 1625 \nL 2419 4116 \nz\nM 2253 4666 \nL 3047 4666 \nL 3047 1625 \nL 3713 1625 \nL 3713 1100 \nL 3047 1100 \nL 3047 0 \nL 2419 0 \nL 2419 1100 \nL 313 1100 \nL 313 1709 \nL 2253 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-34\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_3\">\n <g id=\"line2d_5\">\n <path d=\"M 252.906883 173.52 \nL 252.906883 7.2 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_6\">\n <g>\n <use xlink:href=\"#ma1a700dbec\" x=\"252.906883\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_3\">\n <!-- 600 -->\n <g style=\"fill: #ffffff\" transform=\"translate(243.363133 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-36\" d=\"M 2113 2584 \nQ 1688 2584 1439 2293 \nQ 1191 2003 1191 1497 \nQ 1191 994 1439 701 \nQ 1688 409 2113 409 \nQ 2538 409 2786 701 \nQ 3034 994 3034 1497 \nQ 3034 2003 2786 2293 \nQ 2538 2584 2113 2584 \nz\nM 3366 4563 \nL 3366 3988 \nQ 3128 4100 2886 4159 \nQ 2644 4219 2406 4219 \nQ 1781 4219 1451 3797 \nQ 1122 3375 1075 2522 \nQ 1259 2794 1537 2939 \nQ 1816 3084 2150 3084 \nQ 2853 3084 3261 2657 \nQ 3669 2231 3669 1497 \nQ 3669 778 3244 343 \nQ 2819 -91 2113 -91 \nQ 1303 -91 875 529 \nQ 447 1150 447 2328 \nQ 447 3434 972 4092 \nQ 1497 4750 2381 4750 \nQ 2619 4750 2861 4703 \nQ 3103 4656 3366 4563 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-36\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_4\">\n <g id=\"line2d_7\">\n <path d=\"M 319.93391 173.52 \nL 319.93391 7.2 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_8\">\n <g>\n <use xlink:href=\"#ma1a700dbec\" x=\"319.93391\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_4\">\n <!-- 800 -->\n <g style=\"fill: #ffffff\" transform=\"translate(310.39016 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-38\" d=\"M 2034 2216 \nQ 1584 2216 1326 1975 \nQ 1069 1734 1069 1313 \nQ 1069 891 1326 650 \nQ 1584 409 2034 409 \nQ 2484 409 2743 651 \nQ 3003 894 3003 1313 \nQ 3003 1734 2745 1975 \nQ 2488 2216 2034 2216 \nz\nM 1403 2484 \nQ 997 2584 770 2862 \nQ 544 3141 544 3541 \nQ 544 4100 942 4425 \nQ 1341 4750 2034 4750 \nQ 2731 4750 3128 4425 \nQ 3525 4100 3525 3541 \nQ 3525 3141 3298 2862 \nQ 3072 2584 2669 2484 \nQ 3125 2378 3379 2068 \nQ 3634 1759 3634 1313 \nQ 3634 634 3220 271 \nQ 2806 -91 2034 -91 \nQ 1263 -91 848 271 \nQ 434 634 434 1313 \nQ 434 1759 690 2068 \nQ 947 2378 1403 2484 \nz\nM 1172 3481 \nQ 1172 3119 1398 2916 \nQ 1625 2713 2034 2713 \nQ 2441 2713 2670 2916 \nQ 2900 3119 2900 3481 \nQ 2900 3844 2670 4047 \nQ 2441 4250 2034 4250 \nQ 1625 4250 1398 4047 \nQ 1172 3844 1172 3481 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-38\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_5\">\n <g id=\"line2d_9\">\n <path d=\"M 386.960938 173.52 \nL 386.960938 7.2 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_10\">\n <g>\n <use xlink:href=\"#ma1a700dbec\" x=\"386.960938\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_5\">\n <!-- 1000 -->\n <g style=\"fill: #ffffff\" transform=\"translate(374.235937 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-31\" d=\"M 794 531 \nL 1825 531 \nL 1825 4091 \nL 703 3866 \nL 703 4441 \nL 1819 4666 \nL 2450 4666 \nL 2450 531 \nL 3481 531 \nL 3481 0 \nL 794 0 \nL 794 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n </g>\n </g>\n </g>\n <g id=\"text_6\">\n <!-- time -->\n <g style=\"fill: #ffffff\" transform=\"translate(208.264844 201.796563) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-74\" d=\"M 1172 4494 \nL 1172 3500 \nL 2356 3500 \nL 2356 3053 \nL 1172 3053 \nL 1172 1153 \nQ 1172 725 1289 603 \nQ 1406 481 1766 481 \nL 2356 481 \nL 2356 0 \nL 1766 0 \nQ 1100 0 847 248 \nQ 594 497 594 1153 \nL 594 3053 \nL 172 3053 \nL 172 3500 \nL 594 3500 \nL 594 4494 \nL 1172 4494 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-69\" d=\"M 603 3500 \nL 1178 3500 \nL 1178 0 \nL 603 0 \nL 603 3500 \nz\nM 603 4863 \nL 1178 4863 \nL 1178 4134 \nL 603 4134 \nL 603 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6d\" d=\"M 3328 2828 \nQ 3544 3216 3844 3400 \nQ 4144 3584 4550 3584 \nQ 5097 3584 5394 3201 \nQ 5691 2819 5691 2113 \nL 5691 0 \nL 5113 0 \nL 5113 2094 \nQ 5113 2597 4934 2840 \nQ 4756 3084 4391 3084 \nQ 3944 3084 3684 2787 \nQ 3425 2491 3425 1978 \nL 3425 0 \nL 2847 0 \nL 2847 2094 \nQ 2847 2600 2669 2842 \nQ 2491 3084 2119 3084 \nQ 1678 3084 1418 2786 \nQ 1159 2488 1159 1978 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1356 3278 1631 3431 \nQ 1906 3584 2284 3584 \nQ 2666 3584 2933 3390 \nQ 3200 3197 3328 2828 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-65\" d=\"M 3597 1894 \nL 3597 1613 \nL 953 1613 \nQ 991 1019 1311 708 \nQ 1631 397 2203 397 \nQ 2534 397 2845 478 \nQ 3156 559 3463 722 \nL 3463 178 \nQ 3153 47 2828 -22 \nQ 2503 -91 2169 -91 \nQ 1331 -91 842 396 \nQ 353 884 353 1716 \nQ 353 2575 817 3079 \nQ 1281 3584 2069 3584 \nQ 2775 3584 3186 3129 \nQ 3597 2675 3597 1894 \nz\nM 3022 2063 \nQ 3016 2534 2758 2815 \nQ 2500 3097 2075 3097 \nQ 1594 3097 1305 2825 \nQ 1016 2553 972 2059 \nL 3022 2063 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-6d\" x=\"66.992188\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"164.404297\"/>\n </g>\n </g>\n </g>\n <g id=\"matplotlib.axis_2\">\n <g id=\"ytick_1\">\n <g id=\"line2d_11\">\n <path d=\"M 52.160938 160.014472 \nL 386.960938 160.014472 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_12\">\n <defs>\n <path id=\"m2c5e57657d\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m2c5e57657d\" x=\"52.160938\" y=\"160.014472\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_7\">\n <!-- 1.5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 163.813691) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-2212\" d=\"M 678 2272 \nL 4684 2272 \nL 4684 1741 \nL 678 1741 \nL 678 2272 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-2e\" d=\"M 684 794 \nL 1344 794 \nL 1344 0 \nL 684 0 \nL 684 794 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-35\" d=\"M 691 4666 \nL 3169 4666 \nL 3169 4134 \nL 1269 4134 \nL 1269 2991 \nQ 1406 3038 1543 3061 \nQ 1681 3084 1819 3084 \nQ 2600 3084 3056 2656 \nQ 3513 2228 3513 1497 \nQ 3513 744 3044 326 \nQ 2575 -91 1722 -91 \nQ 1428 -91 1123 -41 \nQ 819 9 494 109 \nL 494 744 \nQ 775 591 1075 516 \nQ 1375 441 1709 441 \nQ 2250 441 2565 725 \nQ 2881 1009 2881 1497 \nQ 2881 1984 2565 2268 \nQ 2250 2553 1709 2553 \nQ 1456 2553 1204 2497 \nQ 953 2441 691 2322 \nL 691 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-31\" x=\"83.789062\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"147.412109\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"179.199219\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_2\">\n <g id=\"line2d_13\">\n <path d=\"M 52.160938 135.253565 \nL 386.960938 135.253565 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_14\">\n <g>\n <use xlink:href=\"#m2c5e57657d\" x=\"52.160938\" y=\"135.253565\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_8\">\n <!-- 1.0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 139.052784) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-31\" x=\"83.789062\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"147.412109\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"179.199219\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_3\">\n <g id=\"line2d_15\">\n <path d=\"M 52.160938 110.492659 \nL 386.960938 110.492659 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_16\">\n <g>\n <use xlink:href=\"#m2c5e57657d\" x=\"52.160938\" y=\"110.492659\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_9\">\n <!-- 0.5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 114.291877) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"83.789062\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"147.412109\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"179.199219\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_4\">\n <g id=\"line2d_17\">\n <path d=\"M 52.160938 85.731752 \nL 386.960938 85.731752 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_18\">\n <g>\n <use xlink:href=\"#m2c5e57657d\" x=\"52.160938\" y=\"85.731752\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_10\">\n <!-- 0.0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(29.257812 89.530971) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_5\">\n <g id=\"line2d_19\">\n <path d=\"M 52.160938 60.970846 \nL 386.960938 60.970846 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_20\">\n <g>\n <use xlink:href=\"#m2c5e57657d\" x=\"52.160938\" y=\"60.970846\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_11\">\n <!-- 0.5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(29.257812 64.770064) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_6\">\n <g id=\"line2d_21\">\n <path d=\"M 52.160938 36.209939 \nL 386.960938 36.209939 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_22\">\n <g>\n <use xlink:href=\"#m2c5e57657d\" x=\"52.160938\" y=\"36.209939\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_12\">\n <!-- 1.0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(29.257812 40.009158) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_7\">\n <g id=\"line2d_23\">\n <path d=\"M 52.160938 11.449033 \nL 386.960938 11.449033 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_24\">\n <g>\n <use xlink:href=\"#m2c5e57657d\" x=\"52.160938\" y=\"11.449033\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_13\">\n <!-- 1.5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(29.257812 15.248251) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"text_14\">\n <!-- x -->\n <g style=\"fill: #ffffff\" transform=\"translate(14.798438 93.319375) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-78\" d=\"M 3513 3500 \nL 2247 1797 \nL 3578 0 \nL 2900 0 \nL 1881 1375 \nL 863 0 \nL 184 0 \nL 1544 1831 \nL 300 3500 \nL 978 3500 \nL 1906 2253 \nL 2834 3500 \nL 3513 3500 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-78\"/>\n </g>\n </g>\n </g>\n <g id=\"line2d_25\">\n <path d=\"M 52.160938 82.540677 \nL 52.496073 87.160423 \nL 52.831208 74.607543 \nL 53.166343 94.258802 \nL 53.501478 82.445828 \nL 53.836613 90.863697 \nL 54.171748 81.330838 \nL 54.842019 75.670799 \nL 55.177154 74.733618 \nL 55.512289 65.807545 \nL 55.847424 76.72342 \nL 56.182559 81.06327 \nL 56.852829 72.295303 \nL 57.187965 87.03634 \nL 57.5231 79.138321 \nL 57.858235 90.460968 \nL 58.19337 64.462533 \nL 58.528505 71.006654 \nL 58.86364 72.753178 \nL 59.198775 72.955888 \nL 59.53391 72.744931 \nL 59.869046 65.909052 \nL 60.539316 85.912494 \nL 60.874451 83.456658 \nL 61.209586 71.295397 \nL 61.544721 71.743413 \nL 61.879856 70.266077 \nL 62.214992 65.917637 \nL 62.550127 78.751082 \nL 62.885262 65.059452 \nL 63.220397 68.782683 \nL 63.555532 87.972918 \nL 63.890667 71.434823 \nL 64.225802 66.491534 \nL 64.560938 68.479991 \nL 64.896073 55.083077 \nL 65.231208 54.756356 \nL 65.566343 73.928592 \nL 65.901478 61.643549 \nL 66.236613 68.095091 \nL 66.571748 79.896328 \nL 66.906883 66.742312 \nL 67.242019 63.115723 \nL 67.912289 72.614255 \nL 68.247424 55.526052 \nL 68.917694 48.203952 \nL 69.9231 73.532097 \nL 70.59337 52.807662 \nL 70.928505 54.436046 \nL 71.26364 57.624012 \nL 71.598775 70.095237 \nL 71.93391 49.245848 \nL 72.604181 41.950363 \nL 72.939316 48.052445 \nL 73.274451 64.165698 \nL 73.609586 46.531596 \nL 73.944721 65.413633 \nL 74.279856 68.834042 \nL 74.614992 33.118014 \nL 74.950127 37.002609 \nL 75.285262 49.346513 \nL 75.620397 51.149176 \nL 75.955532 68.835633 \nL 76.290667 49.456513 \nL 76.960938 54.22281 \nL 77.296073 35.690807 \nL 77.631208 51.063172 \nL 77.966343 27.778865 \nL 78.301478 55.721312 \nL 78.636613 41.431316 \nL 78.971748 60.36791 \nL 79.306883 49.217727 \nL 79.642019 55.102142 \nL 79.977154 47.863446 \nL 80.312289 53.449159 \nL 80.647424 32.802344 \nL 80.982559 34.137222 \nL 81.317694 37.231421 \nL 81.652829 32.618262 \nL 81.987965 58.862088 \nL 82.3231 39.718749 \nL 82.658235 64.236646 \nL 82.99337 61.994168 \nL 83.328505 28.643728 \nL 83.66364 48.422215 \nL 83.998775 58.542304 \nL 84.33391 58.977587 \nL 84.669046 60.103512 \nL 85.004181 71.333481 \nL 85.674451 43.063791 \nL 86.009586 37.83007 \nL 86.344721 55.625017 \nL 86.679856 50.958084 \nL 87.014992 33.48234 \nL 87.350127 46.475625 \nL 87.685262 40.120701 \nL 88.020397 42.420831 \nL 88.355532 36.629445 \nL 88.690667 55.528983 \nL 89.025802 48.594067 \nL 89.360938 51.523627 \nL 89.696073 57.601528 \nL 90.031208 50.788862 \nL 90.366343 46.693581 \nL 90.701478 37.24184 \nL 91.036613 36.685959 \nL 91.371748 46.579066 \nL 91.706883 38.109498 \nL 92.042019 43.469917 \nL 92.377154 44.678701 \nL 92.712289 49.475106 \nL 93.047424 51.721115 \nL 93.382559 22.51475 \nL 93.717694 23.608466 \nL 94.052829 30.026926 \nL 94.387965 17.068495 \nL 94.7231 41.600808 \nL 95.058235 45.90696 \nL 95.39337 22.479565 \nL 96.06364 54.775678 \nL 96.398775 30.549702 \nL 96.73391 38.552084 \nL 97.069046 38.45545 \nL 97.404181 46.235738 \nL 97.739316 34.754069 \nL 98.074451 56.918197 \nL 98.409586 25.439123 \nL 98.744721 34.268675 \nL 99.079856 39.172977 \nL 99.414992 30.926708 \nL 99.750127 38.741284 \nL 100.085262 43.614466 \nL 100.420397 39.258008 \nL 100.755532 26.202122 \nL 101.090667 37.748706 \nL 101.425802 34.337025 \nL 101.760938 28.664054 \nL 102.096073 34.446989 \nL 102.431208 23.42161 \nL 102.766343 38.047642 \nL 103.101478 30.951875 \nL 103.436613 54.33636 \nL 103.771748 42.995052 \nL 104.106883 43.966826 \nL 104.442019 54.379355 \nL 104.777154 19.321137 \nL 105.447424 49.687391 \nL 105.782559 22.910376 \nL 106.117694 42.762417 \nL 106.452829 24.673368 \nL 106.787965 32.648275 \nL 107.1231 50.104748 \nL 107.458235 29.297944 \nL 107.79337 37.662952 \nL 108.128505 27.120441 \nL 108.46364 36.437538 \nL 108.798775 50.649224 \nL 109.13391 35.022045 \nL 109.469046 37.562156 \nL 109.804181 45.945409 \nL 110.139316 35.633874 \nL 110.474451 45.139554 \nL 110.809586 48.127992 \nL 111.479856 30.474167 \nL 111.814992 37.870963 \nL 112.150127 50.658221 \nL 112.485262 25.184666 \nL 112.820397 46.413916 \nL 113.490667 29.211659 \nL 113.825802 42.186118 \nL 114.160938 41.06596 \nL 114.496073 42.793014 \nL 114.831208 21.924026 \nL 115.166343 25.843003 \nL 115.501478 21.628735 \nL 115.836613 54.451501 \nL 116.171748 58.108143 \nL 116.842019 18.598359 \nL 117.177154 41.632294 \nL 117.512289 31.028242 \nL 117.847424 36.559757 \nL 118.182559 24.658532 \nL 118.852829 70.0135 \nL 119.187965 47.71838 \nL 119.5231 53.496929 \nL 119.858235 41.349751 \nL 120.19337 52.04515 \nL 120.528505 35.241695 \nL 120.86364 48.142886 \nL 121.198775 38.873108 \nL 121.53391 43.09255 \nL 121.869046 44.555779 \nL 122.204181 48.696303 \nL 122.539316 38.161378 \nL 122.874451 43.009385 \nL 123.209586 38.802116 \nL 123.544721 59.575864 \nL 123.879856 32.723356 \nL 124.550127 43.884352 \nL 124.885262 41.928916 \nL 125.220397 60.586625 \nL 125.555532 39.958748 \nL 125.890667 56.513423 \nL 126.225802 46.016124 \nL 126.560938 46.895648 \nL 126.896073 56.63796 \nL 127.231208 50.608738 \nL 127.566343 48.289847 \nL 127.901478 61.250348 \nL 128.236613 47.332944 \nL 128.571748 53.864786 \nL 128.906883 48.568954 \nL 129.242019 49.171219 \nL 129.577154 42.723321 \nL 129.912289 58.617033 \nL 130.247424 53.490781 \nL 130.582559 33.467416 \nL 130.917694 46.658585 \nL 131.252829 41.220463 \nL 131.9231 58.752644 \nL 132.258235 44.870894 \nL 132.928505 78.171031 \nL 133.26364 50.687824 \nL 133.598775 57.103397 \nL 133.93391 55.933069 \nL 134.269046 61.792159 \nL 134.604181 54.032913 \nL 134.939316 41.007203 \nL 135.274451 70.486189 \nL 135.609586 34.808227 \nL 135.944721 73.910925 \nL 136.279856 57.096481 \nL 136.614992 87.397833 \nL 136.950127 64.683626 \nL 137.285262 57.331604 \nL 137.620397 63.868828 \nL 137.955532 51.740077 \nL 138.290667 55.062288 \nL 138.625802 72.89974 \nL 138.960938 74.653049 \nL 139.296073 55.790943 \nL 139.631208 67.04038 \nL 139.966343 56.494972 \nL 140.301478 66.950269 \nL 140.971748 54.657992 \nL 141.306883 52.973806 \nL 141.642019 64.180988 \nL 141.977154 65.910359 \nL 142.312289 71.167851 \nL 142.647424 63.040606 \nL 142.982559 67.401126 \nL 143.317694 68.801932 \nL 143.652829 76.392327 \nL 143.987965 51.45512 \nL 144.658235 84.5268 \nL 144.99337 59.585442 \nL 145.328505 81.239005 \nL 145.66364 77.686774 \nL 145.998775 72.297682 \nL 146.33391 75.708424 \nL 146.669046 89.86747 \nL 147.004181 66.159065 \nL 147.339316 56.640357 \nL 147.674451 69.434946 \nL 148.009586 73.391482 \nL 148.344721 71.523242 \nL 148.679856 79.920164 \nL 149.014992 64.42179 \nL 149.350127 72.44014 \nL 149.685262 72.909406 \nL 150.020397 76.853642 \nL 150.355532 64.448208 \nL 150.690667 83.156565 \nL 151.025802 72.131381 \nL 151.360938 92.376059 \nL 151.696073 86.525332 \nL 152.031208 71.061021 \nL 152.366343 74.119042 \nL 152.701478 67.374199 \nL 153.036613 81.980235 \nL 153.371748 77.469885 \nL 153.706883 80.266546 \nL 154.042019 86.069808 \nL 154.377154 85.374518 \nL 154.712289 71.944346 \nL 155.047424 81.209601 \nL 155.382559 85.279962 \nL 155.717694 103.255058 \nL 156.052829 80.071077 \nL 156.387965 95.716624 \nL 156.7231 75.452914 \nL 157.058235 90.389476 \nL 157.39337 91.895436 \nL 157.728505 73.656363 \nL 158.06364 97.241442 \nL 158.73391 94.995908 \nL 159.069046 92.643728 \nL 159.404181 95.092679 \nL 159.739316 89.768132 \nL 160.074451 102.944954 \nL 160.409586 86.289199 \nL 160.744721 95.489075 \nL 161.079856 84.376908 \nL 161.414992 85.693836 \nL 161.750127 116.359045 \nL 162.085262 89.684469 \nL 162.420397 103.886839 \nL 162.755532 82.46671 \nL 163.090667 114.872034 \nL 163.425802 94.359728 \nL 163.760938 96.344608 \nL 164.096073 82.428908 \nL 164.431208 100.367771 \nL 164.766343 92.545761 \nL 165.101478 88.512221 \nL 165.436613 86.595791 \nL 165.771748 101.666527 \nL 166.106883 95.106717 \nL 166.442019 102.17751 \nL 166.777154 99.074869 \nL 167.112289 103.631668 \nL 167.447424 103.229953 \nL 167.782559 102.083586 \nL 168.117694 87.142554 \nL 168.452829 104.045531 \nL 168.787965 101.308963 \nL 169.1231 106.689263 \nL 169.458235 114.619349 \nL 169.79337 108.057806 \nL 170.128505 98.791407 \nL 170.46364 118.503678 \nL 170.798775 112.659651 \nL 171.13391 96.620698 \nL 171.469046 89.39968 \nL 171.804181 103.618829 \nL 172.139316 124.337784 \nL 172.474451 99.223483 \nL 172.809586 102.405491 \nL 173.144721 116.2107 \nL 173.479856 121.234264 \nL 173.814992 101.93198 \nL 174.150127 102.070774 \nL 175.155532 113.432113 \nL 175.490667 109.777916 \nL 175.825802 120.605372 \nL 176.160938 94.719502 \nL 176.496073 119.059294 \nL 176.831208 107.92557 \nL 177.166343 114.507608 \nL 177.501478 109.237124 \nL 177.836613 106.82756 \nL 178.171748 127.205862 \nL 178.506883 118.588457 \nL 178.842019 120.395778 \nL 179.177154 114.631442 \nL 179.512289 103.455336 \nL 179.847424 121.217059 \nL 180.182559 129.176508 \nL 180.517694 117.367964 \nL 180.852829 120.194485 \nL 181.187965 132.259348 \nL 181.5231 110.091616 \nL 181.858235 121.937833 \nL 182.19337 107.492691 \nL 182.528505 116.816492 \nL 182.86364 131.625771 \nL 183.198775 128.644081 \nL 183.53391 133.428747 \nL 183.869046 119.952458 \nL 184.204181 115.11093 \nL 184.539316 128.075533 \nL 184.874451 127.881333 \nL 185.209586 116.682333 \nL 185.544721 134.951789 \nL 185.879856 127.752499 \nL 186.214992 124.525517 \nL 186.550127 116.685347 \nL 186.885262 125.719672 \nL 187.220397 126.677783 \nL 187.555532 120.248989 \nL 187.890667 124.703391 \nL 188.560938 116.595523 \nL 188.896073 134.665713 \nL 189.566343 122.747959 \nL 190.236613 141.235152 \nL 190.571748 153.772484 \nL 190.906883 138.004637 \nL 191.242019 133.231698 \nL 191.577154 123.516837 \nL 191.912289 136.41614 \nL 192.247424 135.849213 \nL 192.582559 121.550645 \nL 192.917694 137.170283 \nL 193.252829 112.925906 \nL 193.587965 114.83814 \nL 193.9231 132.905995 \nL 194.59337 117.110157 \nL 194.928505 123.626824 \nL 195.26364 137.70539 \nL 195.598775 142.066082 \nL 195.93391 134.121904 \nL 196.269046 135.929529 \nL 196.604181 136.406446 \nL 196.939316 106.836728 \nL 197.274451 131.270583 \nL 197.609586 141.970546 \nL 197.944721 135.002329 \nL 198.279856 115.80569 \nL 198.614992 118.840467 \nL 198.950127 128.382017 \nL 199.285262 119.428089 \nL 199.955532 132.537044 \nL 200.290667 133.452803 \nL 200.625802 123.371822 \nL 200.960938 124.947975 \nL 201.631208 135.312659 \nL 201.966343 126.018331 \nL 202.301478 136.55686 \nL 202.636613 121.748361 \nL 202.971748 129.556776 \nL 203.306883 149.277223 \nL 203.642019 126.069812 \nL 203.977154 123.403939 \nL 204.312289 134.230927 \nL 204.647424 137.004921 \nL 204.982559 143.314959 \nL 205.317694 126.470259 \nL 205.652829 124.135192 \nL 205.987965 165.96 \nL 206.3231 119.635908 \nL 206.658235 135.550385 \nL 207.328505 122.841747 \nL 207.66364 139.053316 \nL 207.998775 113.637565 \nL 208.669046 146.493848 \nL 209.004181 132.024505 \nL 209.674451 149.567809 \nL 210.009586 150.187023 \nL 210.344721 134.323676 \nL 210.679856 147.767029 \nL 211.014992 129.862118 \nL 211.350127 134.989778 \nL 211.685262 122.049201 \nL 212.020397 149.071582 \nL 212.355532 145.84648 \nL 212.690667 123.842478 \nL 213.025802 130.274029 \nL 213.360938 148.869087 \nL 213.696073 121.210397 \nL 214.366343 153.522791 \nL 214.701478 129.445089 \nL 215.036613 132.173497 \nL 215.371748 138.767039 \nL 215.706883 135.646293 \nL 216.042019 145.62918 \nL 216.377154 127.050394 \nL 216.712289 144.621554 \nL 217.047424 114.675313 \nL 217.382559 138.104429 \nL 217.717694 124.399145 \nL 218.052829 135.141768 \nL 218.387965 135.48628 \nL 218.7231 132.609842 \nL 219.058235 124.982861 \nL 219.39337 124.506346 \nL 219.728505 126.156215 \nL 220.06364 142.329919 \nL 220.398775 130.605597 \nL 220.73391 146.5759 \nL 221.069046 136.170638 \nL 221.404181 131.488758 \nL 221.739316 132.02965 \nL 222.074451 140.573964 \nL 222.409586 123.832699 \nL 222.744721 124.277288 \nL 223.079856 124.953542 \nL 223.414992 127.263477 \nL 223.750127 110.560844 \nL 224.085262 137.818524 \nL 224.420397 142.50282 \nL 224.755532 127.104535 \nL 225.090667 117.048794 \nL 225.760938 138.468212 \nL 226.096073 127.282752 \nL 226.431208 131.83829 \nL 226.766343 133.118269 \nL 227.101478 150.31625 \nL 227.436613 124.7173 \nL 227.771748 130.194867 \nL 228.106883 114.612229 \nL 228.442019 134.224571 \nL 228.777154 134.407549 \nL 229.112289 136.514326 \nL 229.447424 117.769624 \nL 229.782559 125.650817 \nL 230.117694 119.696891 \nL 230.452829 136.521369 \nL 230.787965 116.738906 \nL 231.1231 111.5003 \nL 231.458235 126.540722 \nL 231.79337 116.045952 \nL 232.128505 117.35536 \nL 232.46364 124.958542 \nL 233.13391 129.191373 \nL 233.469046 139.838063 \nL 233.804181 109.706787 \nL 234.139316 129.786796 \nL 234.809586 127.341969 \nL 235.144721 122.573358 \nL 235.479856 123.66811 \nL 235.814992 124.153755 \nL 236.150127 118.679256 \nL 236.485262 129.210724 \nL 236.820397 112.133871 \nL 237.155532 104.927132 \nL 237.490667 111.666771 \nL 238.160938 109.068293 \nL 238.496073 105.694549 \nL 238.831208 105.120007 \nL 239.166343 115.552119 \nL 239.501478 103.47592 \nL 239.836613 126.315653 \nL 240.171748 104.31299 \nL 240.506883 106.125978 \nL 240.842019 120.159409 \nL 241.177154 92.256568 \nL 241.847424 117.300027 \nL 242.182559 121.255933 \nL 242.852829 109.31399 \nL 243.187965 92.247031 \nL 243.5231 118.982764 \nL 243.858235 107.900198 \nL 244.19337 125.17813 \nL 244.528505 108.829216 \nL 244.86364 111.183343 \nL 245.198775 115.314112 \nL 245.53391 89.220133 \nL 245.869046 100.208846 \nL 246.204181 117.40755 \nL 246.539316 111.827322 \nL 246.874451 130.261865 \nL 247.209586 105.074797 \nL 247.544721 102.108513 \nL 247.879856 88.652308 \nL 248.214992 102.949672 \nL 248.550127 105.405653 \nL 248.885262 110.721433 \nL 249.220397 119.927315 \nL 249.555532 98.748061 \nL 249.890667 112.071864 \nL 250.225802 99.830993 \nL 250.560938 104.950024 \nL 251.231208 90.998354 \nL 251.566343 107.888837 \nL 251.901478 99.998621 \nL 252.236613 108.573405 \nL 252.571748 95.04363 \nL 252.906883 118.129847 \nL 253.242019 100.103336 \nL 253.577154 93.813473 \nL 253.912289 99.151092 \nL 254.247424 95.017258 \nL 254.582559 73.508332 \nL 254.917694 92.109185 \nL 255.252829 96.554614 \nL 255.587965 111.389737 \nL 255.9231 83.042451 \nL 256.258235 94.360804 \nL 256.59337 98.982089 \nL 256.928505 79.117295 \nL 257.26364 101.18163 \nL 257.598775 81.688049 \nL 257.93391 99.858687 \nL 258.269046 92.451301 \nL 258.604181 92.955598 \nL 258.939316 77.266187 \nL 259.274451 86.875849 \nL 259.609586 74.917317 \nL 259.944721 94.027469 \nL 260.279856 70.093281 \nL 260.614992 72.345724 \nL 260.950127 98.040793 \nL 261.285262 85.355341 \nL 261.620397 85.78782 \nL 261.955532 95.997762 \nL 262.290667 92.079367 \nL 262.625802 78.331411 \nL 262.960938 81.270498 \nL 263.296073 65.882588 \nL 263.631208 71.299352 \nL 263.966343 92.988568 \nL 264.301478 81.363839 \nL 264.636613 94.329776 \nL 264.971748 86.186902 \nL 265.306883 89.709548 \nL 265.642019 88.472425 \nL 265.977154 56.526387 \nL 266.312289 77.499678 \nL 266.647424 69.139953 \nL 266.982559 84.504951 \nL 267.317694 81.421094 \nL 267.652829 93.735829 \nL 267.987965 59.999561 \nL 268.3231 77.059255 \nL 268.658235 80.60017 \nL 268.99337 75.648174 \nL 269.328505 75.90715 \nL 269.66364 65.00924 \nL 269.998775 62.559204 \nL 270.33391 91.601763 \nL 270.669046 79.54782 \nL 271.004181 76.15221 \nL 271.339316 70.766354 \nL 271.674451 81.582208 \nL 272.009586 70.369595 \nL 272.344721 69.454475 \nL 272.679856 70.511766 \nL 273.014992 57.1945 \nL 273.685262 69.935774 \nL 274.020397 71.649454 \nL 274.355532 58.378707 \nL 274.690667 54.922919 \nL 275.025802 55.236316 \nL 275.360937 65.939561 \nL 275.696073 63.039489 \nL 276.031208 64.315246 \nL 276.366343 60.914538 \nL 276.701478 44.406781 \nL 277.036613 61.0263 \nL 277.371748 60.658443 \nL 277.706883 75.407217 \nL 278.042019 67.868019 \nL 278.377154 72.054763 \nL 279.047424 58.976577 \nL 279.382559 73.742361 \nL 279.717694 79.441761 \nL 280.052829 63.78142 \nL 280.387965 70.779876 \nL 280.7231 67.562347 \nL 281.058235 57.195928 \nL 281.39337 59.883753 \nL 281.728505 53.403832 \nL 282.06364 57.066949 \nL 282.398775 70.955695 \nL 282.73391 73.290087 \nL 283.069046 68.607612 \nL 283.404181 74.788144 \nL 283.739316 68.787071 \nL 284.074451 43.48139 \nL 284.409586 50.5759 \nL 284.744721 70.860477 \nL 285.079856 48.464976 \nL 285.414992 50.710844 \nL 285.750127 48.320138 \nL 286.085262 44.493999 \nL 286.420397 45.041371 \nL 286.755532 51.796907 \nL 287.090667 43.429824 \nL 287.425802 66.627776 \nL 287.760938 55.199511 \nL 288.096073 52.103943 \nL 288.431208 36.446131 \nL 288.766343 48.069917 \nL 289.101478 42.937168 \nL 289.436613 55.895207 \nL 289.771748 22.146374 \nL 290.106883 53.617525 \nL 290.442019 57.749995 \nL 290.777154 52.133505 \nL 291.112289 68.499368 \nL 291.447424 53.71856 \nL 291.782559 47.095855 \nL 292.117694 36.845644 \nL 292.452829 49.280191 \nL 292.787965 48.260268 \nL 293.1231 39.049802 \nL 293.458235 45.649699 \nL 293.79337 72.521568 \nL 294.46364 41.081693 \nL 294.798775 64.536906 \nL 295.13391 44.230345 \nL 295.469046 62.649044 \nL 295.804181 41.240682 \nL 296.139316 40.60869 \nL 296.474451 55.714337 \nL 297.144721 28.435466 \nL 297.479856 38.507758 \nL 297.814992 55.191317 \nL 298.150127 49.219129 \nL 298.485262 28.265222 \nL 298.820397 48.521493 \nL 299.155532 32.861845 \nL 299.490667 43.492879 \nL 299.825802 24.105992 \nL 300.160938 49.339866 \nL 300.496073 49.970028 \nL 300.831208 20.133642 \nL 301.166343 36.675808 \nL 301.501478 26.921376 \nL 301.836613 41.396158 \nL 302.171748 26.995659 \nL 302.506883 30.038167 \nL 302.842019 14.76 \nL 303.177154 31.691289 \nL 303.512289 32.12527 \nL 303.847424 31.134852 \nL 304.182559 36.362709 \nL 304.517694 49.089371 \nL 304.852829 52.828959 \nL 305.187965 40.234596 \nL 305.5231 39.776532 \nL 305.858235 20.400756 \nL 306.19337 35.706787 \nL 306.528505 18.670275 \nL 306.86364 35.881624 \nL 307.198775 33.271722 \nL 307.53391 33.515429 \nL 307.869046 32.60335 \nL 308.204181 45.421619 \nL 308.539316 23.132199 \nL 308.874451 35.81632 \nL 309.209586 33.234276 \nL 309.544721 32.269864 \nL 309.879856 35.106281 \nL 310.214992 30.802033 \nL 310.550127 47.481082 \nL 310.885262 17.10708 \nL 311.220397 40.441483 \nL 311.890667 45.753606 \nL 312.225802 55.150111 \nL 312.560938 33.721991 \nL 312.896073 39.336208 \nL 313.566343 37.669053 \nL 313.901478 23.632788 \nL 314.236613 28.963141 \nL 314.571748 29.249925 \nL 314.906883 23.649702 \nL 315.242019 41.99886 \nL 315.577154 17.335739 \nL 316.247424 46.380199 \nL 316.582559 23.460838 \nL 316.917694 31.315581 \nL 317.252829 19.699903 \nL 317.587965 22.794078 \nL 317.9231 34.538138 \nL 318.258235 41.417104 \nL 318.59337 43.543814 \nL 318.928505 54.562226 \nL 319.26364 45.336783 \nL 319.598775 30.049041 \nL 319.93391 32.224277 \nL 320.269046 36.331043 \nL 320.939316 28.251 \nL 321.274451 31.453858 \nL 321.609586 38.166482 \nL 321.944721 31.990689 \nL 322.279856 40.438166 \nL 322.614992 39.120664 \nL 322.950127 36.950322 \nL 323.285262 49.32656 \nL 323.620397 35.545959 \nL 323.955532 44.443988 \nL 324.290667 48.799316 \nL 324.625802 29.921951 \nL 324.960938 32.846939 \nL 325.296073 41.237199 \nL 325.631208 36.65251 \nL 325.966343 38.787534 \nL 326.301478 32.945149 \nL 326.636613 44.668517 \nL 326.971748 43.132924 \nL 327.306883 20.267173 \nL 327.642019 31.299854 \nL 327.977154 31.7585 \nL 328.312289 28.861985 \nL 328.647424 33.489979 \nL 328.982559 41.282691 \nL 329.317694 24.615567 \nL 329.652829 50.507228 \nL 329.987965 47.01725 \nL 330.3231 50.347017 \nL 330.658235 40.029773 \nL 330.99337 60.142142 \nL 331.328505 49.744454 \nL 331.66364 57.765733 \nL 331.998775 33.223656 \nL 332.33391 58.159494 \nL 332.669046 47.767305 \nL 333.004181 56.148306 \nL 333.339316 42.179317 \nL 333.674451 49.895343 \nL 334.009586 26.599277 \nL 334.344721 38.794808 \nL 334.679856 57.69336 \nL 335.014992 59.133547 \nL 335.350127 51.956858 \nL 335.685262 32.320397 \nL 336.020397 48.54235 \nL 336.355532 49.320624 \nL 336.690667 48.61529 \nL 337.025802 50.101962 \nL 337.360937 41.549811 \nL 337.696073 66.297561 \nL 338.031208 49.167228 \nL 338.366343 64.31496 \nL 338.701478 48.542486 \nL 339.036613 50.336314 \nL 339.371748 45.213799 \nL 339.706883 54.193647 \nL 340.042019 34.721937 \nL 340.377154 56.189179 \nL 340.712289 33.306446 \nL 341.047424 45.142013 \nL 341.382559 61.242116 \nL 341.717694 31.276181 \nL 342.052829 60.711613 \nL 342.387965 39.393835 \nL 342.7231 58.393256 \nL 343.058235 55.204679 \nL 343.39337 53.549996 \nL 343.728505 54.247501 \nL 344.06364 43.533663 \nL 344.398775 39.906485 \nL 344.73391 64.320339 \nL 345.069046 57.679088 \nL 345.404181 62.244237 \nL 345.739316 43.605794 \nL 346.074451 60.829853 \nL 346.409586 35.94501 \nL 347.079856 79.910505 \nL 347.414992 45.122664 \nL 347.750127 51.057094 \nL 348.085262 82.685196 \nL 348.420397 53.652766 \nL 348.755532 70.063278 \nL 349.090667 71.763498 \nL 349.425802 50.486277 \nL 349.760938 50.594399 \nL 350.096073 53.834474 \nL 350.431208 61.107889 \nL 350.766343 61.386622 \nL 351.101478 49.585161 \nL 351.436613 63.660911 \nL 351.771748 62.148577 \nL 352.106883 72.621177 \nL 352.442019 55.91514 \nL 352.777154 58.044252 \nL 353.112289 64.416791 \nL 353.447424 59.856975 \nL 353.782559 75.33017 \nL 354.117694 58.778236 \nL 354.452829 79.553955 \nL 354.787965 64.53676 \nL 355.1231 82.039091 \nL 355.458235 59.360662 \nL 355.79337 55.405828 \nL 356.46364 85.048478 \nL 356.798775 75.278355 \nL 357.13391 57.829685 \nL 357.469046 69.827169 \nL 357.804181 60.77986 \nL 358.139316 81.219025 \nL 358.474451 62.499948 \nL 358.809586 84.0149 \nL 359.144721 65.438091 \nL 359.479856 84.99832 \nL 359.814992 66.713141 \nL 360.150127 74.757282 \nL 360.485262 76.102159 \nL 360.820397 103.285515 \nL 361.155532 78.077763 \nL 361.490667 77.38079 \nL 361.825802 75.773068 \nL 362.160938 78.02791 \nL 362.496073 84.616798 \nL 362.831208 77.566094 \nL 363.166343 77.358982 \nL 363.501478 90.411522 \nL 363.836613 79.283437 \nL 364.171748 73.780389 \nL 364.506883 80.931906 \nL 364.842019 78.285069 \nL 365.177154 83.752425 \nL 365.512289 96.986165 \nL 365.847424 71.484091 \nL 366.182559 94.241757 \nL 366.517694 92.484137 \nL 366.852829 89.960702 \nL 367.187965 90.377804 \nL 367.5231 87.783327 \nL 367.858235 108.707731 \nL 368.19337 94.549255 \nL 368.528505 67.847258 \nL 368.86364 77.863105 \nL 369.198775 99.162238 \nL 369.53391 75.365741 \nL 369.869046 110.119262 \nL 370.204181 86.714846 \nL 370.539316 90.655824 \nL 370.874451 103.702555 \nL 371.209586 75.034118 \nL 371.544721 93.606627 \nL 371.879856 73.239535 \nL 372.214992 106.094504 \nL 372.550127 85.36761 \nL 372.885262 98.972561 \nL 373.220397 90.652961 \nL 373.555532 114.63527 \nL 373.890667 104.605516 \nL 374.225802 85.196527 \nL 374.560938 116.711786 \nL 375.566343 89.255848 \nL 375.901478 99.006307 \nL 376.236613 98.101331 \nL 376.571748 103.051864 \nL 377.242019 97.679856 \nL 377.577154 111.994039 \nL 377.912289 112.863919 \nL 378.247424 118.005249 \nL 378.582559 102.393464 \nL 378.917694 102.089499 \nL 379.252829 98.539169 \nL 379.587965 106.282518 \nL 379.9231 101.144155 \nL 380.258235 108.53384 \nL 380.59337 112.68077 \nL 380.928505 98.911611 \nL 381.26364 109.427979 \nL 381.598775 104.911767 \nL 381.93391 104.852666 \nL 382.269046 106.390265 \nL 382.604181 110.226427 \nL 382.939316 119.467211 \nL 383.274451 107.451376 \nL 383.609586 108.733183 \nL 383.944721 98.667296 \nL 384.279856 117.810706 \nL 384.614992 100.530632 \nL 384.950127 99.4762 \nL 385.285262 104.679327 \nL 385.620397 113.760115 \nL 385.955532 94.629068 \nL 386.290667 126.995433 \nL 386.625802 114.092063 \nL 386.960938 111.924121 \nL 386.960938 111.924121 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_26\">\n <path d=\"M 53.501478 81.379485 \nL 54.171748 84.003086 \nL 54.506883 84.6553 \nL 55.512289 74.249136 \nL 55.847424 69.196594 \nL 56.182559 69.826157 \nL 56.852829 74.49795 \nL 57.187965 73.822174 \nL 57.5231 74.85422 \nL 58.19337 79.269085 \nL 58.528505 76.326528 \nL 59.198775 68.547255 \nL 59.53391 68.510075 \nL 59.869046 69.590302 \nL 60.204181 67.222427 \nL 60.539316 69.239002 \nL 61.209586 79.143861 \nL 61.544721 77.498522 \nL 61.879856 74.093823 \nL 62.550127 65.813593 \nL 62.885262 68.751128 \nL 63.220397 67.117581 \nL 63.555532 66.969712 \nL 63.890667 71.001311 \nL 64.225802 73.391608 \nL 64.560938 71.485791 \nL 64.896073 67.492478 \nL 65.566343 54.945951 \nL 65.901478 58.160985 \nL 66.236613 59.993823 \nL 66.571748 62.849188 \nL 66.906883 67.551253 \nL 67.242019 68.277482 \nL 67.912289 63.538624 \nL 68.247424 64.196183 \nL 68.582559 61.665535 \nL 69.252829 49.537251 \nL 69.587965 48.331924 \nL 69.9231 53.333669 \nL 70.258235 61.901724 \nL 70.59337 64.085889 \nL 71.26364 53.550601 \nL 71.598775 51.093551 \nL 71.93391 56.125126 \nL 72.269046 55.212643 \nL 72.939316 44.669913 \nL 73.274451 42.382423 \nL 73.609586 46.924781 \nL 73.944721 48.497079 \nL 74.614992 57.104997 \nL 75.620397 40.678165 \nL 75.955532 41.383847 \nL 76.290667 50.795893 \nL 76.625802 52.612833 \nL 77.296073 49.509549 \nL 77.631208 43.764635 \nL 77.966343 44.112243 \nL 78.301478 37.495421 \nL 78.636613 40.982299 \nL 78.971748 40.016924 \nL 79.306883 45.804747 \nL 79.642019 46.924356 \nL 79.977154 48.987309 \nL 80.312289 47.6244 \nL 80.647424 47.597711 \nL 81.317694 38.324585 \nL 81.987965 32.848237 \nL 82.3231 39.530886 \nL 82.658235 40.050863 \nL 82.99337 47.657294 \nL 83.328505 52.111638 \nL 83.66364 46.365848 \nL 83.998775 46.071466 \nL 84.33391 44.098346 \nL 85.339316 59.153114 \nL 85.674451 59.69107 \nL 86.344721 45.384628 \nL 86.679856 43.828653 \nL 87.014992 44.074567 \nL 87.350127 42.028487 \nL 87.685262 41.952167 \nL 88.020397 38.780149 \nL 88.355532 39.139806 \nL 88.690667 37.995255 \nL 89.025802 41.473373 \nL 89.360938 43.075584 \nL 90.031208 48.681049 \nL 90.366343 48.691339 \nL 90.701478 47.355273 \nL 91.371748 38.765485 \nL 91.706883 38.570565 \nL 92.042019 37.623042 \nL 92.377154 39.284783 \nL 92.712289 39.905242 \nL 93.382559 44.459201 \nL 94.387965 28.052621 \nL 94.7231 23.436339 \nL 95.39337 33.064776 \nL 95.728505 32.426293 \nL 96.398775 38.275291 \nL 96.73391 37.206452 \nL 97.069046 38.591705 \nL 97.404181 36.119179 \nL 97.739316 37.556002 \nL 98.074451 37.210614 \nL 98.409586 42.122234 \nL 98.744721 37.248668 \nL 99.079856 36.051892 \nL 99.750127 32.144049 \nL 100.420397 36.007899 \nL 100.755532 37.046923 \nL 101.090667 34.512588 \nL 101.425802 33.866065 \nL 101.760938 32.204264 \nL 102.096073 31.283502 \nL 102.431208 31.815096 \nL 102.766343 28.603638 \nL 103.101478 30.586586 \nL 103.436613 30.22592 \nL 103.771748 37.02325 \nL 104.777154 44.547186 \nL 105.112289 36.877984 \nL 105.447424 35.506613 \nL 105.782559 35.874752 \nL 106.117694 32.473982 \nL 106.452829 36.141128 \nL 106.787965 31.159116 \nL 107.1231 30.850211 \nL 107.458235 35.128307 \nL 107.79337 33.894909 \nL 108.128505 36.043072 \nL 108.46364 32.133765 \nL 108.798775 31.887225 \nL 109.13391 36.245504 \nL 109.469046 36.690915 \nL 109.804181 37.921621 \nL 110.139316 38.494894 \nL 110.474451 36.796156 \nL 110.809586 39.065871 \nL 111.144721 40.565078 \nL 111.479856 39.844732 \nL 112.150127 35.125048 \nL 112.485262 37.43919 \nL 112.820397 34.783958 \nL 113.155532 38.026944 \nL 113.825802 34.408652 \nL 114.160938 35.88957 \nL 114.496073 35.698546 \nL 114.831208 38.005952 \nL 115.836613 25.316508 \nL 116.842019 42.991937 \nL 117.177154 36.493096 \nL 117.847424 30.001317 \nL 118.182559 32.70672 \nL 118.517694 30.755673 \nL 118.852829 33.535235 \nL 119.5231 49.414244 \nL 119.858235 50.897243 \nL 120.19337 46.154575 \nL 120.528505 45.114656 \nL 120.86364 40.973922 \nL 121.198775 41.605185 \nL 121.53391 39.385012 \nL 121.869046 39.593197 \nL 122.204181 40.124349 \nL 122.539316 41.619536 \nL 122.874451 40.624532 \nL 123.209586 40.490683 \nL 123.544721 38.473677 \nL 123.879856 43.005061 \nL 124.214992 40.444512 \nL 124.550127 39.750879 \nL 124.885262 38.340471 \nL 125.220397 37.73771 \nL 125.555532 44.181739 \nL 125.890667 43.432477 \nL 126.225802 47.047331 \nL 126.560938 45.297941 \nL 126.896073 44.802912 \nL 127.231208 46.795047 \nL 127.566343 46.758493 \nL 127.901478 47.026657 \nL 128.236613 49.455066 \nL 128.571748 48.162335 \nL 128.906883 48.946244 \nL 129.242019 47.153664 \nL 129.577154 46.150908 \nL 129.912289 44.008348 \nL 130.247424 46.239608 \nL 130.582559 47.442615 \nL 130.917694 43.853595 \nL 131.252829 42.907825 \nL 131.587965 39.372101 \nL 131.9231 41.720917 \nL 132.258235 46.197853 \nL 132.59337 46.648588 \nL 132.928505 49.660297 \nL 133.26364 57.255996 \nL 133.598775 59.032229 \nL 133.93391 56.937336 \nL 134.269046 52.422691 \nL 134.604181 53.392506 \nL 134.939316 53.168053 \nL 135.274451 48.091281 \nL 135.609586 52.75162 \nL 135.944721 45.753122 \nL 136.279856 48.63966 \nL 136.614992 53.528362 \nL 137.285262 68.029468 \nL 137.955532 60.463936 \nL 138.290667 54.063003 \nL 138.625802 51.883534 \nL 138.960938 56.157073 \nL 139.296073 63.764407 \nL 139.631208 63.651046 \nL 139.966343 62.866308 \nL 140.301478 56.979071 \nL 140.636613 58.491791 \nL 140.971748 57.748483 \nL 141.306883 55.694717 \nL 141.642019 52.016347 \nL 141.977154 52.793494 \nL 142.647424 62.595661 \nL 142.982559 63.126043 \nL 143.317694 63.231283 \nL 143.652829 63.085037 \nL 143.987965 66.993086 \nL 144.3231 62.402653 \nL 144.658235 61.336338 \nL 144.99337 66.787 \nL 145.328505 67.678983 \nL 145.66364 67.854717 \nL 145.998775 71.323041 \nL 146.33391 72.952889 \nL 146.669046 73.476966 \nL 147.004181 75.739011 \nL 147.339316 74.829208 \nL 147.674451 67.38922 \nL 148.009586 63.274515 \nL 148.344721 63.247294 \nL 149.014992 71.900532 \nL 149.350127 69.17858 \nL 149.685262 69.096412 \nL 150.020397 67.76329 \nL 150.355532 70.317083 \nL 150.690667 68.330607 \nL 151.360938 71.113524 \nL 151.696073 74.131311 \nL 152.031208 82.375713 \nL 152.366343 79.977343 \nL 152.701478 76.70563 \nL 153.036613 69.108892 \nL 153.371748 70.295154 \nL 154.712289 81.968478 \nL 155.047424 78.729618 \nL 155.382559 76.736948 \nL 155.717694 78.627243 \nL 156.387965 87.2788 \nL 156.7231 91.342284 \nL 157.39337 83.506089 \nL 157.728505 86.350971 \nL 158.06364 82.550603 \nL 158.73391 90.026125 \nL 159.069046 89.229043 \nL 159.404181 99.435859 \nL 159.739316 98.499948 \nL 160.074451 96.21875 \nL 160.409586 96.19493 \nL 160.744721 96.389709 \nL 161.079856 93.886974 \nL 161.414992 94.778628 \nL 161.750127 87.315513 \nL 162.085262 92.370243 \nL 162.420397 95.265459 \nL 162.755532 96.668939 \nL 163.090667 105.546405 \nL 163.425802 93.245298 \nL 163.760938 105.338283 \nL 164.096073 96.377896 \nL 164.431208 104.947456 \nL 164.766343 93.319726 \nL 165.101478 96.024327 \nL 165.436613 89.531934 \nL 165.771748 94.389534 \nL 166.106883 92.027056 \nL 166.442019 95.558574 \nL 166.777154 97.505151 \nL 167.112289 105.107401 \nL 167.447424 102.453874 \nL 167.782559 106.636318 \nL 168.117694 105.956794 \nL 168.452829 105.0248 \nL 168.787965 99.605282 \nL 169.1231 105.118773 \nL 169.458235 100.810357 \nL 169.79337 109.110281 \nL 170.128505 110.872977 \nL 170.46364 110.876074 \nL 170.798775 109.963115 \nL 171.13391 113.441924 \nL 171.469046 109.993465 \nL 171.804181 108.033465 \nL 172.139316 103.191805 \nL 172.474451 103.584444 \nL 172.809586 108.999095 \nL 173.144721 107.703858 \nL 173.479856 112.789961 \nL 173.814992 110.518516 \nL 174.150127 113.493033 \nL 174.485262 111.548699 \nL 174.820397 111.280021 \nL 175.155532 107.890018 \nL 175.490667 109.359346 \nL 175.825802 112.079211 \nL 176.160938 113.155999 \nL 176.496073 115.456409 \nL 176.831208 108.329209 \nL 177.166343 116.582966 \nL 177.501478 108.274208 \nL 177.836613 116.327999 \nL 178.171748 112.105856 \nL 178.506883 114.114981 \nL 178.842019 117.332272 \nL 179.177154 116.491849 \nL 179.512289 121.766863 \nL 179.847424 117.071817 \nL 180.182559 114.14533 \nL 180.517694 117.737609 \nL 180.852829 117.499172 \nL 181.5231 123.402762 \nL 181.858235 121.849405 \nL 182.19337 118.58913 \nL 182.528505 122.330407 \nL 182.86364 113.672375 \nL 183.198775 119.313326 \nL 183.53391 119.694884 \nL 184.204181 127.935999 \nL 184.539316 123.60087 \nL 184.874451 123.215613 \nL 185.544721 121.261464 \nL 185.879856 123.382764 \nL 186.214992 126.569147 \nL 186.550127 122.930904 \nL 186.885262 126.234873 \nL 187.220397 122.308145 \nL 187.555532 123.035699 \nL 187.890667 121.420206 \nL 188.225802 122.799168 \nL 188.560938 123.292358 \nL 188.896073 120.320435 \nL 189.231208 121.536291 \nL 189.566343 124.223803 \nL 189.901478 123.171166 \nL 190.236613 126.828661 \nL 190.571748 127.488738 \nL 190.906883 129.965071 \nL 191.242019 135.690764 \nL 191.577154 135.462005 \nL 191.912289 135.657881 \nL 192.247424 128.796821 \nL 192.582559 129.800507 \nL 192.917694 127.061918 \nL 193.587965 128.987857 \nL 193.9231 119.97531 \nL 194.258235 123.737736 \nL 194.59337 121.208271 \nL 194.928505 120.960544 \nL 195.26364 123.868527 \nL 195.598775 123.465651 \nL 195.93391 125.793483 \nL 196.269046 129.755862 \nL 196.604181 132.388693 \nL 196.939316 133.402281 \nL 197.274451 129.291803 \nL 197.609586 122.18625 \nL 197.944721 128.122714 \nL 198.279856 124.152073 \nL 198.614992 129.300439 \nL 198.950127 126.226862 \nL 199.285262 124.347607 \nL 199.620397 120.864601 \nL 199.955532 120.749189 \nL 200.290667 124.760835 \nL 200.625802 124.676678 \nL 200.960938 126.698111 \nL 201.296073 126.356732 \nL 201.631208 126.417493 \nL 201.966343 125.378664 \nL 202.301478 127.053585 \nL 202.636613 127.429497 \nL 202.971748 129.727363 \nL 203.306883 124.617915 \nL 203.642019 129.717138 \nL 203.977154 129.740702 \nL 204.312289 127.672306 \nL 204.647424 131.247324 \nL 204.982559 127.157241 \nL 205.317694 128.630751 \nL 205.652829 132.639584 \nL 205.987965 129.445747 \nL 206.658235 134.599801 \nL 206.99337 126.866094 \nL 207.328505 138.415199 \nL 207.66364 124.005077 \nL 207.998775 127.615205 \nL 208.33391 127.54331 \nL 208.669046 121.942367 \nL 209.004181 130.14227 \nL 209.339316 127.261526 \nL 209.674451 130.986175 \nL 210.009586 136.81764 \nL 210.344721 135.717341 \nL 210.679856 138.340178 \nL 211.014992 137.609489 \nL 211.350127 138.537908 \nL 211.685262 130.754954 \nL 212.020397 133.420417 \nL 212.355532 127.041129 \nL 212.690667 134.244862 \nL 213.025802 130.721517 \nL 213.360938 133.014979 \nL 213.696073 132.852888 \nL 214.366343 127.466751 \nL 214.701478 135.496026 \nL 215.036613 131.654471 \nL 215.371748 131.701704 \nL 215.706883 135.502266 \nL 216.042019 130.156842 \nL 216.377154 131.493206 \nL 216.712289 134.509278 \nL 217.047424 130.853899 \nL 217.382559 134.556815 \nL 217.717694 124.444226 \nL 218.052829 131.952808 \nL 218.387965 122.495364 \nL 218.7231 130.973235 \nL 219.058235 127.868759 \nL 219.39337 129.800687 \nL 220.06364 125.913804 \nL 220.398775 125.162663 \nL 220.73391 128.682704 \nL 221.069046 128.783925 \nL 221.404181 135.949076 \nL 221.739316 130.967762 \nL 222.074451 133.461015 \nL 222.409586 130.63481 \nL 222.744721 130.410068 \nL 223.079856 126.997579 \nL 223.414992 128.021874 \nL 223.750127 123.429014 \nL 224.085262 123.083133 \nL 224.420397 120.767619 \nL 224.755532 127.560533 \nL 225.090667 125.510005 \nL 225.425802 129.282257 \nL 225.760938 126.924477 \nL 226.096073 125.406924 \nL 226.431208 125.442375 \nL 226.766343 127.189205 \nL 227.101478 130.325826 \nL 227.436613 128.994732 \nL 227.771748 133.281972 \nL 228.106883 128.947634 \nL 228.442019 131.866048 \nL 228.777154 122.014141 \nL 229.112289 127.318193 \nL 229.447424 124.850219 \nL 229.782559 129.958637 \nL 230.117694 125.776082 \nL 230.452829 126.205916 \nL 230.787965 121.00668 \nL 231.1231 125.86106 \nL 231.458235 120.143119 \nL 231.79337 122.025726 \nL 232.46364 116.925335 \nL 232.798775 121.221436 \nL 233.13391 120.427657 \nL 233.469046 122.353407 \nL 233.804181 126.0804 \nL 234.139316 127.72565 \nL 234.474451 121.960384 \nL 234.809586 128.090868 \nL 235.144721 120.701359 \nL 235.479856 125.922559 \nL 235.814992 124.205325 \nL 236.150127 123.742411 \nL 236.485262 122.182997 \nL 236.820397 121.83054 \nL 237.155532 123.044466 \nL 237.490667 117.386879 \nL 237.825802 115.862352 \nL 238.496073 111.396963 \nL 238.831208 112.682754 \nL 239.166343 110.820053 \nL 239.501478 110.797236 \nL 239.836613 111.94942 \nL 240.171748 110.497635 \nL 240.506883 117.643154 \nL 240.842019 110.284841 \nL 241.177154 115.624283 \nL 241.512289 111.551586 \nL 241.847424 105.092268 \nL 242.182559 111.638287 \nL 242.517694 108.208176 \nL 242.852829 114.854944 \nL 243.187965 117.414767 \nL 243.5231 114.493068 \nL 243.858235 107.60525 \nL 244.19337 112.954564 \nL 244.528505 107.431436 \nL 244.86364 119.118806 \nL 245.198775 113.364716 \nL 245.53391 117.486724 \nL 245.869046 112.435783 \nL 246.204181 104.323081 \nL 246.539316 108.636876 \nL 246.874451 106.408564 \nL 247.209586 111.774011 \nL 247.544721 120.139007 \nL 247.879856 112.658432 \nL 248.214992 112.378779 \nL 248.550127 100.933829 \nL 248.885262 104.931553 \nL 249.220397 102.657728 \nL 249.555532 110.645455 \nL 249.890667 113.26379 \nL 250.225802 109.597263 \nL 250.560938 114.360399 \nL 250.896073 105.462536 \nL 251.231208 109.476641 \nL 251.566343 103.636262 \nL 251.901478 101.629505 \nL 252.236613 105.481087 \nL 252.571748 102.388665 \nL 252.906883 109.640477 \nL 253.242019 103.528651 \nL 253.577154 112.245626 \nL 253.912289 104.709062 \nL 254.247424 106.38901 \nL 254.582559 102.83415 \nL 254.917694 89.830637 \nL 255.252829 88.838141 \nL 255.587965 87.480856 \nL 255.9231 94.141174 \nL 256.258235 95.547755 \nL 256.59337 96.329647 \nL 256.928505 100.329679 \nL 257.26364 87.778781 \nL 257.598775 92.670467 \nL 257.93391 90.885071 \nL 258.269046 90.933999 \nL 258.604181 98.059299 \nL 258.939316 90.901537 \nL 259.274451 91.228378 \nL 259.944721 78.94842 \nL 260.279856 79.680174 \nL 260.614992 78.340273 \nL 260.950127 74.806809 \nL 261.285262 77.751127 \nL 261.620397 82.580884 \nL 261.955532 84.233165 \nL 262.290667 90.84449 \nL 262.625802 89.537457 \nL 263.296073 85.175121 \nL 263.631208 73.851909 \nL 263.966343 70.585141 \nL 264.301478 73.150165 \nL 264.971748 83.51818 \nL 265.306883 87.52747 \nL 265.642019 87.195562 \nL 265.977154 88.796666 \nL 266.312289 75.974509 \nL 266.647424 72.199377 \nL 266.982559 66.236334 \nL 267.317694 69.970178 \nL 267.652829 76.202596 \nL 267.987965 79.825565 \nL 268.658235 73.136422 \nL 268.99337 72.450304 \nL 269.66364 75.070723 \nL 270.33391 64.681905 \nL 270.669046 67.721255 \nL 271.004181 75.666863 \nL 271.339316 77.810079 \nL 271.674451 74.575147 \nL 272.009586 73.489726 \nL 273.014992 68.089011 \nL 273.350127 62.326035 \nL 273.685262 60.260007 \nL 274.020397 60.375685 \nL 274.355532 64.515428 \nL 274.690667 62.948242 \nL 275.360937 52.868999 \nL 275.696073 54.271413 \nL 276.366343 59.852975 \nL 276.701478 58.987649 \nL 277.036613 52.437232 \nL 277.371748 52.489737 \nL 277.706883 51.890314 \nL 278.042019 60.521471 \nL 278.377154 64.673697 \nL 278.712289 67.382588 \nL 279.047424 65.601753 \nL 279.382559 61.703737 \nL 279.717694 63.468136 \nL 280.052829 67.59753 \nL 280.387965 68.625759 \nL 280.7231 68.554038 \nL 282.06364 53.159694 \nL 282.398775 52.017425 \nL 282.73391 56.280496 \nL 283.069046 63.228352 \nL 283.404181 66.867402 \nL 283.739316 69.237402 \nL 284.074451 67.733546 \nL 284.409586 58.601395 \nL 284.744721 52.834986 \nL 285.079856 52.569741 \nL 285.414992 52.591548 \nL 285.750127 50.910095 \nL 286.420397 44.222744 \nL 286.755532 43.104026 \nL 287.090667 43.862326 \nL 287.425802 43.024973 \nL 287.760938 48.785564 \nL 288.096073 51.512434 \nL 288.431208 52.297647 \nL 288.766343 45.95463 \nL 289.436613 40.732394 \nL 289.771748 44.06165 \nL 290.106883 38.268343 \nL 290.442019 41.472576 \nL 290.777154 42.971836 \nL 291.447424 54.44981 \nL 291.782559 54.634694 \nL 292.117694 51.099599 \nL 292.452829 44.688781 \nL 292.787965 42.390599 \nL 293.1231 42.008769 \nL 293.458235 41.23371 \nL 293.79337 41.78553 \nL 294.46364 53.822372 \nL 294.798775 50.579637 \nL 295.13391 52.948551 \nL 295.469046 46.598249 \nL 295.804181 50.697978 \nL 296.474451 43.888555 \nL 296.809586 44.526229 \nL 297.144721 42.237428 \nL 297.814992 36.534957 \nL 298.150127 38.717307 \nL 298.485262 42.306445 \nL 298.820397 40.1977 \nL 299.155532 40.896847 \nL 299.490667 35.939195 \nL 299.825802 37.615355 \nL 300.160938 33.433766 \nL 300.831208 39.071851 \nL 301.166343 35.35709 \nL 301.501478 35.253413 \nL 301.836613 29.648007 \nL 302.171748 31.968114 \nL 302.506883 31.054624 \nL 302.842019 30.811709 \nL 303.177154 25.581845 \nL 303.512289 25.592507 \nL 303.847424 26.482229 \nL 304.517694 31.767904 \nL 305.187965 41.408228 \nL 305.5231 42.556646 \nL 305.858235 41.589807 \nL 306.19337 33.754985 \nL 306.528505 31.698538 \nL 306.86364 26.24922 \nL 307.198775 28.313435 \nL 307.53391 29.313304 \nL 307.869046 31.08537 \nL 308.204181 32.056583 \nL 308.539316 35.007322 \nL 308.874451 32.035378 \nL 309.209586 32.944995 \nL 309.544721 31.350529 \nL 309.879856 31.191963 \nL 310.214992 32.400023 \nL 310.550127 31.454962 \nL 310.885262 35.390149 \nL 311.220397 30.679188 \nL 311.555532 33.01194 \nL 311.890667 33.846194 \nL 312.225802 37.611654 \nL 312.560938 43.770852 \nL 312.896073 41.298329 \nL 313.231208 40.106255 \nL 313.566343 37.113797 \nL 313.901478 35.81952 \nL 314.236613 32.294304 \nL 314.906883 27.960987 \nL 315.242019 26.374243 \nL 315.577154 30.478671 \nL 315.912289 27.107642 \nL 316.247424 28.252984 \nL 316.582559 31.664109 \nL 316.917694 30.051296 \nL 317.252829 31.789818 \nL 317.587965 26.867099 \nL 317.9231 24.379677 \nL 318.258235 26.273117 \nL 318.928505 35.80789 \nL 319.26364 42.07712 \nL 319.598775 43.523845 \nL 320.604181 32.935538 \nL 321.274451 31.002981 \nL 321.609586 30.331923 \nL 321.944721 31.478174 \nL 322.279856 31.80133 \nL 322.614992 34.46333 \nL 322.950127 35.382109 \nL 323.285262 35.864032 \nL 323.620397 39.161837 \nL 323.955532 37.867929 \nL 324.625802 40.901481 \nL 324.960938 37.670883 \nL 325.296073 35.828375 \nL 325.631208 34.707438 \nL 325.966343 34.278173 \nL 326.301478 36.029978 \nL 326.636613 34.778834 \nL 327.306883 37.755556 \nL 327.642019 33.537514 \nL 327.977154 31.758919 \nL 328.312289 28.95069 \nL 328.647424 28.565726 \nL 328.982559 30.332289 \nL 329.317694 32.866514 \nL 329.652829 31.156672 \nL 329.987965 36.287088 \nL 330.3231 38.468594 \nL 330.658235 42.945459 \nL 330.99337 42.866843 \nL 331.328505 46.110133 \nL 331.66364 46.121344 \nL 331.998775 49.925802 \nL 332.33391 44.507875 \nL 332.669046 46.418412 \nL 333.004181 44.265095 \nL 333.339316 47.658428 \nL 333.674451 45.804918 \nL 334.009586 45.384002 \nL 334.344721 38.643862 \nL 334.679856 36.62126 \nL 335.014992 39.811395 \nL 335.350127 46.530082 \nL 335.685262 50.934225 \nL 336.020397 44.845559 \nL 336.690667 41.534344 \nL 337.360937 45.451165 \nL 337.696073 43.466576 \nL 338.031208 48.208595 \nL 338.366343 48.75826 \nL 338.701478 53.730219 \nL 339.036613 50.895661 \nL 339.371748 49.127445 \nL 339.706883 46.018199 \nL 340.042019 45.949482 \nL 340.377154 41.950266 \nL 340.712289 44.51209 \nL 341.047424 39.960806 \nL 341.382559 40.647963 \nL 341.717694 44.528171 \nL 342.052829 41.004809 \nL 342.387965 46.920159 \nL 342.7231 42.568004 \nL 343.058235 46.338497 \nL 343.728505 50.146955 \nL 344.06364 50.154411 \nL 344.73391 43.219622 \nL 345.404181 49.929793 \nL 345.739316 55.735601 \nL 346.074451 50.832609 \nL 346.409586 51.556483 \nL 346.744721 44.723458 \nL 347.079856 47.792879 \nL 347.414992 55.914231 \nL 347.750127 57.820449 \nL 348.085262 54.165806 \nL 348.420397 58.80334 \nL 348.755532 59.186262 \nL 349.425802 63.268593 \nL 349.760938 59.864136 \nL 350.431208 49.585607 \nL 350.766343 50.430055 \nL 351.101478 54.339108 \nL 351.436613 52.875974 \nL 352.106883 54.955341 \nL 352.442019 61.250495 \nL 352.777154 60.231753 \nL 353.112289 57.320686 \nL 353.447424 56.154463 \nL 353.782559 56.665024 \nL 354.117694 62.18754 \nL 354.452829 61.612702 \nL 354.787965 64.411766 \nL 355.1231 65.4603 \nL 355.458235 68.093111 \nL 355.79337 66.655048 \nL 356.128505 60.795973 \nL 356.46364 59.759349 \nL 357.13391 73.235157 \nL 357.469046 68.927095 \nL 357.804181 66.2945 \nL 358.139316 60.114156 \nL 358.474451 64.355686 \nL 358.809586 65.725572 \nL 359.144721 67.763706 \nL 359.814992 70.037946 \nL 360.150127 70.746899 \nL 360.485262 70.462205 \nL 360.820397 71.14638 \nL 361.490667 83.201845 \nL 361.825802 82.665957 \nL 362.160938 77.877315 \nL 362.496073 74.994555 \nL 362.831208 77.055029 \nL 363.166343 77.485896 \nL 363.501478 77.718434 \nL 363.836613 78.452254 \nL 364.171748 80.1286 \nL 365.177154 75.624463 \nL 365.512289 77.494325 \nL 365.847424 81.826804 \nL 366.182559 82.063566 \nL 366.852829 87.779664 \nL 367.187965 86.155314 \nL 367.5231 92.991188 \nL 367.858235 89.88183 \nL 368.528505 98.611235 \nL 368.86364 85.927272 \nL 369.198775 85.13243 \nL 369.53391 79.378555 \nL 369.869046 81.092795 \nL 370.204181 90.715574 \nL 370.539316 95.976384 \nL 370.874451 88.468314 \nL 371.209586 99.813677 \nL 371.544721 88.827107 \nL 371.879856 91.402233 \nL 372.214992 82.739818 \nL 372.550127 87.301698 \nL 372.885262 90.265235 \nL 373.220397 90.118299 \nL 373.555532 101.903071 \nL 373.890667 94.958405 \nL 374.225802 107.964731 \nL 374.560938 100.504597 \nL 374.896073 103.348952 \nL 375.231208 110.188926 \nL 375.566343 103.929936 \nL 375.901478 109.383952 \nL 376.236613 102.11153 \nL 376.571748 102.882865 \nL 376.906883 99.512872 \nL 377.242019 105.029846 \nL 377.577154 103.802123 \nL 377.912289 104.471705 \nL 378.247424 108.590614 \nL 378.582559 110.121765 \nL 378.917694 115.179498 \nL 379.252829 110.630543 \nL 379.587965 109.975991 \nL 379.9231 104.792357 \nL 380.258235 107.577022 \nL 380.59337 105.328731 \nL 380.928505 110.494161 \nL 381.26364 109.85634 \nL 381.598775 108.235547 \nL 381.93391 111.870488 \nL 382.269046 107.459998 \nL 382.604181 109.944274 \nL 382.939316 109.717015 \nL 383.274451 111.384683 \nL 383.609586 113.989591 \nL 383.944721 112.788736 \nL 384.279856 113.587335 \nL 384.614992 107.847416 \nL 384.950127 112.601894 \nL 385.285262 106.197032 \nL 385.620397 109.168824 \nL 385.955532 106.766439 \nL 386.290667 108.962869 \nL 386.625802 105.919434 \nL 386.960938 117.082756 \nL 386.960938 117.082756 \n\" clip-path=\"url(#p8a970030c1)\" style=\"fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #bf00bf; stroke-width: 1.5\"/>\n </g>\n <g id=\"patch_3\">\n <path d=\"M 52.160938 173.52 \nL 52.160938 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_4\">\n <path d=\"M 386.960938 173.52 \nL 386.960938 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_5\">\n <path d=\"M 52.160938 173.52 \nL 386.960938 173.52 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_6\">\n <path d=\"M 52.160938 7.2 \nL 386.960938 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"legend_1\">\n <g id=\"patch_7\">\n <path d=\"M 59.160938 168.52 \nL 153.885938 168.52 \nQ 155.885938 168.52 155.885938 166.52 \nL 155.885938 138.16375 \nQ 155.885938 136.16375 153.885938 136.16375 \nL 59.160938 136.16375 \nQ 57.160938 136.16375 57.160938 138.16375 \nL 57.160938 166.52 \nQ 57.160938 168.52 59.160938 168.52 \nz\n\" style=\"opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n </g>\n <g id=\"line2d_27\">\n <path d=\"M 61.160938 144.262188 \nL 71.160938 144.262188 \nL 81.160938 144.262188 \n\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"text_15\">\n <!-- data -->\n <g style=\"fill: #ffffff\" transform=\"translate(89.160938 147.762188) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-64\" d=\"M 2906 2969 \nL 2906 4863 \nL 3481 4863 \nL 3481 0 \nL 2906 0 \nL 2906 525 \nQ 2725 213 2448 61 \nQ 2172 -91 1784 -91 \nQ 1150 -91 751 415 \nQ 353 922 353 1747 \nQ 353 2572 751 3078 \nQ 1150 3584 1784 3584 \nQ 2172 3584 2448 3432 \nQ 2725 3281 2906 2969 \nz\nM 947 1747 \nQ 947 1113 1208 752 \nQ 1469 391 1925 391 \nQ 2381 391 2643 752 \nQ 2906 1113 2906 1747 \nQ 2906 2381 2643 2742 \nQ 2381 3103 1925 3103 \nQ 1469 3103 1208 2742 \nQ 947 2381 947 1747 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-61\" d=\"M 2194 1759 \nQ 1497 1759 1228 1600 \nQ 959 1441 959 1056 \nQ 959 750 1161 570 \nQ 1363 391 1709 391 \nQ 2188 391 2477 730 \nQ 2766 1069 2766 1631 \nL 2766 1759 \nL 2194 1759 \nz\nM 3341 1997 \nL 3341 0 \nL 2766 0 \nL 2766 531 \nQ 2569 213 2275 61 \nQ 1981 -91 1556 -91 \nQ 1019 -91 701 211 \nQ 384 513 384 1019 \nQ 384 1609 779 1909 \nQ 1175 2209 1959 2209 \nL 2766 2209 \nL 2766 2266 \nQ 2766 2663 2505 2880 \nQ 2244 3097 1772 3097 \nQ 1472 3097 1187 3025 \nQ 903 2953 641 2809 \nL 641 3341 \nQ 956 3463 1253 3523 \nQ 1550 3584 1831 3584 \nQ 2591 3584 2966 3190 \nQ 3341 2797 3341 1997 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-64\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"63.476562\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"124.755859\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"163.964844\"/>\n </g>\n </g>\n <g id=\"line2d_28\">\n <path d=\"M 61.160938 158.940313 \nL 71.160938 158.940313 \nL 81.160938 158.940313 \n\" style=\"fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #bf00bf; stroke-width: 1.5\"/>\n </g>\n <g id=\"text_16\">\n <!-- 1-step preds -->\n <g style=\"fill: #ffffff\" transform=\"translate(89.160938 162.440313) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-2d\" d=\"M 313 2009 \nL 1997 2009 \nL 1997 1497 \nL 313 1497 \nL 313 2009 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-73\" d=\"M 2834 3397 \nL 2834 2853 \nQ 2591 2978 2328 3040 \nQ 2066 3103 1784 3103 \nQ 1356 3103 1142 2972 \nQ 928 2841 928 2578 \nQ 928 2378 1081 2264 \nQ 1234 2150 1697 2047 \nL 1894 2003 \nQ 2506 1872 2764 1633 \nQ 3022 1394 3022 966 \nQ 3022 478 2636 193 \nQ 2250 -91 1575 -91 \nQ 1294 -91 989 -36 \nQ 684 19 347 128 \nL 347 722 \nQ 666 556 975 473 \nQ 1284 391 1588 391 \nQ 1994 391 2212 530 \nQ 2431 669 2431 922 \nQ 2431 1156 2273 1281 \nQ 2116 1406 1581 1522 \nL 1381 1569 \nQ 847 1681 609 1914 \nQ 372 2147 372 2553 \nQ 372 3047 722 3315 \nQ 1072 3584 1716 3584 \nQ 2034 3584 2315 3537 \nQ 2597 3491 2834 3397 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-70\" d=\"M 1159 525 \nL 1159 -1331 \nL 581 -1331 \nL 581 3500 \nL 1159 3500 \nL 1159 2969 \nQ 1341 3281 1617 3432 \nQ 1894 3584 2278 3584 \nQ 2916 3584 3314 3078 \nQ 3713 2572 3713 1747 \nQ 3713 922 3314 415 \nQ 2916 -91 2278 -91 \nQ 1894 -91 1617 61 \nQ 1341 213 1159 525 \nz\nM 3116 1747 \nQ 3116 2381 2855 2742 \nQ 2594 3103 2138 3103 \nQ 1681 3103 1420 2742 \nQ 1159 2381 1159 1747 \nQ 1159 1113 1420 752 \nQ 1681 391 2138 391 \nQ 2594 391 2855 752 \nQ 3116 1113 3116 1747 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-20\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-72\" d=\"M 2631 2963 \nQ 2534 3019 2420 3045 \nQ 2306 3072 2169 3072 \nQ 1681 3072 1420 2755 \nQ 1159 2438 1159 1844 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1341 3275 1631 3429 \nQ 1922 3584 2338 3584 \nQ 2397 3584 2469 3576 \nQ 2541 3569 2628 3553 \nL 2631 2963 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-2d\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"99.707031\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"151.806641\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"191.015625\"/>\n <use xlink:href=\"#DejaVuSans-70\" x=\"252.539062\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"316.015625\"/>\n <use xlink:href=\"#DejaVuSans-70\" x=\"347.802734\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"411.279297\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"450.142578\"/>\n <use xlink:href=\"#DejaVuSans-64\" x=\"511.666016\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"575.142578\"/>\n </g>\n </g>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"p8a970030c1\">\n <rect x=\"52.160938\" y=\"7.2\" width=\"334.8\" height=\"166.32\"/>\n </clipPath>\n </defs>\n</svg>\n"
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
}
],
"execution_count": 89
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:38.758036538Z",
"start_time": "2026-03-29T09:05:38.654924198Z"
}
},
"cell_type": "code",
"source": [
"multistep_preds = torch.zeros(T)\n",
"multistep_preds[: n_train + tau] = x[: n_train + tau]\n",
"for i in range(n_train + tau, T):\n",
" multistep_preds[i] = net(\n",
" multistep_preds[i - tau:i].reshape((1, -1)))\n",
"d2l.plot([time, time[tau:], time[n_train + tau:]],\n",
" [x.detach().numpy(), onestep_preds.detach().numpy(),\n",
" multistep_preds[n_train + tau:].detach().numpy()], 'time',\n",
" 'x', legend=['data', '1-step preds', 'multistep preds'],\n",
" xlim=[1, 1000], figsize=(6, 3))"
],
"id": "12c3a1c3912da4dd",
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 600x300 with 1 Axes>"
],
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"406.885938pt\" height=\"211.07625pt\" viewBox=\"0 0 406.885938 211.07625\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <cc:Work>\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n <dc:date>2026-03-29T17:05:38.729306</dc:date>\n <dc:format>image/svg+xml</dc:format>\n <dc:creator>\n <cc:Agent>\n <dc:title>Matplotlib v3.7.2, https://matplotlib.org/</dc:title>\n </cc:Agent>\n </dc:creator>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs>\n <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n <g id=\"patch_1\">\n <path d=\"M 0 211.07625 \nL 406.885938 211.07625 \nL 406.885938 0 \nL 0 0 \nz\n\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 52.160938 173.52 \nL 386.960938 173.52 \nL 386.960938 7.2 \nL 52.160938 7.2 \nz\n\"/>\n </g>\n <g id=\"matplotlib.axis_1\">\n <g id=\"xtick_1\">\n <g id=\"line2d_1\">\n <path d=\"M 118.852829 173.52 \nL 118.852829 7.2 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_2\">\n <defs>\n <path id=\"mf6cd955849\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#mf6cd955849\" x=\"118.852829\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_1\">\n <!-- 200 -->\n <g style=\"fill: #ffffff\" transform=\"translate(109.309079 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-32\" d=\"M 1228 531 \nL 3431 531 \nL 3431 0 \nL 469 0 \nL 469 531 \nQ 828 903 1448 1529 \nQ 2069 2156 2228 2338 \nQ 2531 2678 2651 2914 \nQ 2772 3150 2772 3378 \nQ 2772 3750 2511 3984 \nQ 2250 4219 1831 4219 \nQ 1534 4219 1204 4116 \nQ 875 4013 500 3803 \nL 500 4441 \nQ 881 4594 1212 4672 \nQ 1544 4750 1819 4750 \nQ 2544 4750 2975 4387 \nQ 3406 4025 3406 3419 \nQ 3406 3131 3298 2873 \nQ 3191 2616 2906 2266 \nQ 2828 2175 2409 1742 \nQ 1991 1309 1228 531 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \nQ 1547 4250 1301 3770 \nQ 1056 3291 1056 2328 \nQ 1056 1369 1301 889 \nQ 1547 409 2034 409 \nQ 2525 409 2770 889 \nQ 3016 1369 3016 2328 \nQ 3016 3291 2770 3770 \nQ 2525 4250 2034 4250 \nz\nM 2034 4750 \nQ 2819 4750 3233 4129 \nQ 3647 3509 3647 2328 \nQ 3647 1150 3233 529 \nQ 2819 -91 2034 -91 \nQ 1250 -91 836 529 \nQ 422 1150 422 2328 \nQ 422 3509 836 4129 \nQ 1250 4750 2034 4750 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-32\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_2\">\n <g id=\"line2d_3\">\n <path d=\"M 185.879856 173.52 \nL 185.879856 7.2 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_4\">\n <g>\n <use xlink:href=\"#mf6cd955849\" x=\"185.879856\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_2\">\n <!-- 400 -->\n <g style=\"fill: #ffffff\" transform=\"translate(176.336106 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-34\" d=\"M 2419 4116 \nL 825 1625 \nL 2419 1625 \nL 2419 4116 \nz\nM 2253 4666 \nL 3047 4666 \nL 3047 1625 \nL 3713 1625 \nL 3713 1100 \nL 3047 1100 \nL 3047 0 \nL 2419 0 \nL 2419 1100 \nL 313 1100 \nL 313 1709 \nL 2253 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-34\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_3\">\n <g id=\"line2d_5\">\n <path d=\"M 252.906883 173.52 \nL 252.906883 7.2 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_6\">\n <g>\n <use xlink:href=\"#mf6cd955849\" x=\"252.906883\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_3\">\n <!-- 600 -->\n <g style=\"fill: #ffffff\" transform=\"translate(243.363133 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-36\" d=\"M 2113 2584 \nQ 1688 2584 1439 2293 \nQ 1191 2003 1191 1497 \nQ 1191 994 1439 701 \nQ 1688 409 2113 409 \nQ 2538 409 2786 701 \nQ 3034 994 3034 1497 \nQ 3034 2003 2786 2293 \nQ 2538 2584 2113 2584 \nz\nM 3366 4563 \nL 3366 3988 \nQ 3128 4100 2886 4159 \nQ 2644 4219 2406 4219 \nQ 1781 4219 1451 3797 \nQ 1122 3375 1075 2522 \nQ 1259 2794 1537 2939 \nQ 1816 3084 2150 3084 \nQ 2853 3084 3261 2657 \nQ 3669 2231 3669 1497 \nQ 3669 778 3244 343 \nQ 2819 -91 2113 -91 \nQ 1303 -91 875 529 \nQ 447 1150 447 2328 \nQ 447 3434 972 4092 \nQ 1497 4750 2381 4750 \nQ 2619 4750 2861 4703 \nQ 3103 4656 3366 4563 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-36\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_4\">\n <g id=\"line2d_7\">\n <path d=\"M 319.93391 173.52 \nL 319.93391 7.2 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_8\">\n <g>\n <use xlink:href=\"#mf6cd955849\" x=\"319.93391\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_4\">\n <!-- 800 -->\n <g style=\"fill: #ffffff\" transform=\"translate(310.39016 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-38\" d=\"M 2034 2216 \nQ 1584 2216 1326 1975 \nQ 1069 1734 1069 1313 \nQ 1069 891 1326 650 \nQ 1584 409 2034 409 \nQ 2484 409 2743 651 \nQ 3003 894 3003 1313 \nQ 3003 1734 2745 1975 \nQ 2488 2216 2034 2216 \nz\nM 1403 2484 \nQ 997 2584 770 2862 \nQ 544 3141 544 3541 \nQ 544 4100 942 4425 \nQ 1341 4750 2034 4750 \nQ 2731 4750 3128 4425 \nQ 3525 4100 3525 3541 \nQ 3525 3141 3298 2862 \nQ 3072 2584 2669 2484 \nQ 3125 2378 3379 2068 \nQ 3634 1759 3634 1313 \nQ 3634 634 3220 271 \nQ 2806 -91 2034 -91 \nQ 1263 -91 848 271 \nQ 434 634 434 1313 \nQ 434 1759 690 2068 \nQ 947 2378 1403 2484 \nz\nM 1172 3481 \nQ 1172 3119 1398 2916 \nQ 1625 2713 2034 2713 \nQ 2441 2713 2670 2916 \nQ 2900 3119 2900 3481 \nQ 2900 3844 2670 4047 \nQ 2441 4250 2034 4250 \nQ 1625 4250 1398 4047 \nQ 1172 3844 1172 3481 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-38\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_5\">\n <g id=\"line2d_9\">\n <path d=\"M 386.960938 173.52 \nL 386.960938 7.2 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_10\">\n <g>\n <use xlink:href=\"#mf6cd955849\" x=\"386.960938\" y=\"173.52\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_5\">\n <!-- 1000 -->\n <g style=\"fill: #ffffff\" transform=\"translate(374.235937 188.118438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-31\" d=\"M 794 531 \nL 1825 531 \nL 1825 4091 \nL 703 3866 \nL 703 4441 \nL 1819 4666 \nL 2450 4666 \nL 2450 531 \nL 3481 531 \nL 3481 0 \nL 794 0 \nL 794 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n </g>\n </g>\n </g>\n <g id=\"text_6\">\n <!-- time -->\n <g style=\"fill: #ffffff\" transform=\"translate(208.264844 201.796563) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-74\" d=\"M 1172 4494 \nL 1172 3500 \nL 2356 3500 \nL 2356 3053 \nL 1172 3053 \nL 1172 1153 \nQ 1172 725 1289 603 \nQ 1406 481 1766 481 \nL 2356 481 \nL 2356 0 \nL 1766 0 \nQ 1100 0 847 248 \nQ 594 497 594 1153 \nL 594 3053 \nL 172 3053 \nL 172 3500 \nL 594 3500 \nL 594 4494 \nL 1172 4494 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-69\" d=\"M 603 3500 \nL 1178 3500 \nL 1178 0 \nL 603 0 \nL 603 3500 \nz\nM 603 4863 \nL 1178 4863 \nL 1178 4134 \nL 603 4134 \nL 603 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6d\" d=\"M 3328 2828 \nQ 3544 3216 3844 3400 \nQ 4144 3584 4550 3584 \nQ 5097 3584 5394 3201 \nQ 5691 2819 5691 2113 \nL 5691 0 \nL 5113 0 \nL 5113 2094 \nQ 5113 2597 4934 2840 \nQ 4756 3084 4391 3084 \nQ 3944 3084 3684 2787 \nQ 3425 2491 3425 1978 \nL 3425 0 \nL 2847 0 \nL 2847 2094 \nQ 2847 2600 2669 2842 \nQ 2491 3084 2119 3084 \nQ 1678 3084 1418 2786 \nQ 1159 2488 1159 1978 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1356 3278 1631 3431 \nQ 1906 3584 2284 3584 \nQ 2666 3584 2933 3390 \nQ 3200 3197 3328 2828 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-65\" d=\"M 3597 1894 \nL 3597 1613 \nL 953 1613 \nQ 991 1019 1311 708 \nQ 1631 397 2203 397 \nQ 2534 397 2845 478 \nQ 3156 559 3463 722 \nL 3463 178 \nQ 3153 47 2828 -22 \nQ 2503 -91 2169 -91 \nQ 1331 -91 842 396 \nQ 353 884 353 1716 \nQ 353 2575 817 3079 \nQ 1281 3584 2069 3584 \nQ 2775 3584 3186 3129 \nQ 3597 2675 3597 1894 \nz\nM 3022 2063 \nQ 3016 2534 2758 2815 \nQ 2500 3097 2075 3097 \nQ 1594 3097 1305 2825 \nQ 1016 2553 972 2059 \nL 3022 2063 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-6d\" x=\"66.992188\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"164.404297\"/>\n </g>\n </g>\n </g>\n <g id=\"matplotlib.axis_2\">\n <g id=\"ytick_1\">\n <g id=\"line2d_11\">\n <path d=\"M 52.160938 160.014472 \nL 386.960938 160.014472 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_12\">\n <defs>\n <path id=\"m2e4311d7fa\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m2e4311d7fa\" x=\"52.160938\" y=\"160.014472\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_7\">\n <!-- 1.5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 163.813691) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-2212\" d=\"M 678 2272 \nL 4684 2272 \nL 4684 1741 \nL 678 1741 \nL 678 2272 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-2e\" d=\"M 684 794 \nL 1344 794 \nL 1344 0 \nL 684 0 \nL 684 794 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-35\" d=\"M 691 4666 \nL 3169 4666 \nL 3169 4134 \nL 1269 4134 \nL 1269 2991 \nQ 1406 3038 1543 3061 \nQ 1681 3084 1819 3084 \nQ 2600 3084 3056 2656 \nQ 3513 2228 3513 1497 \nQ 3513 744 3044 326 \nQ 2575 -91 1722 -91 \nQ 1428 -91 1123 -41 \nQ 819 9 494 109 \nL 494 744 \nQ 775 591 1075 516 \nQ 1375 441 1709 441 \nQ 2250 441 2565 725 \nQ 2881 1009 2881 1497 \nQ 2881 1984 2565 2268 \nQ 2250 2553 1709 2553 \nQ 1456 2553 1204 2497 \nQ 953 2441 691 2322 \nL 691 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-31\" x=\"83.789062\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"147.412109\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"179.199219\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_2\">\n <g id=\"line2d_13\">\n <path d=\"M 52.160938 135.253565 \nL 386.960938 135.253565 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_14\">\n <g>\n <use xlink:href=\"#m2e4311d7fa\" x=\"52.160938\" y=\"135.253565\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_8\">\n <!-- 1.0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 139.052784) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-31\" x=\"83.789062\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"147.412109\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"179.199219\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_3\">\n <g id=\"line2d_15\">\n <path d=\"M 52.160938 110.492659 \nL 386.960938 110.492659 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_16\">\n <g>\n <use xlink:href=\"#m2e4311d7fa\" x=\"52.160938\" y=\"110.492659\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_9\">\n <!-- 0.5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 114.291877) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-2212\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"83.789062\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"147.412109\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"179.199219\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_4\">\n <g id=\"line2d_17\">\n <path d=\"M 52.160938 85.731752 \nL 386.960938 85.731752 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_18\">\n <g>\n <use xlink:href=\"#m2e4311d7fa\" x=\"52.160938\" y=\"85.731752\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_10\">\n <!-- 0.0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(29.257812 89.530971) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_5\">\n <g id=\"line2d_19\">\n <path d=\"M 52.160938 60.970846 \nL 386.960938 60.970846 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_20\">\n <g>\n <use xlink:href=\"#m2e4311d7fa\" x=\"52.160938\" y=\"60.970846\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_11\">\n <!-- 0.5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(29.257812 64.770064) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_6\">\n <g id=\"line2d_21\">\n <path d=\"M 52.160938 36.209939 \nL 386.960938 36.209939 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_22\">\n <g>\n <use xlink:href=\"#m2e4311d7fa\" x=\"52.160938\" y=\"36.209939\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_12\">\n <!-- 1.0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(29.257812 40.009158) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_7\">\n <g id=\"line2d_23\">\n <path d=\"M 52.160938 11.449033 \nL 386.960938 11.449033 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_24\">\n <g>\n <use xlink:href=\"#m2e4311d7fa\" x=\"52.160938\" y=\"11.449033\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_13\">\n <!-- 1.5 -->\n <g style=\"fill: #ffffff\" transform=\"translate(29.257812 15.248251) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-2e\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-35\" x=\"95.410156\"/>\n </g>\n </g>\n </g>\n <g id=\"text_14\">\n <!-- x -->\n <g style=\"fill: #ffffff\" transform=\"translate(14.798438 93.319375) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-78\" d=\"M 3513 3500 \nL 2247 1797 \nL 3578 0 \nL 2900 0 \nL 1881 1375 \nL 863 0 \nL 184 0 \nL 1544 1831 \nL 300 3500 \nL 978 3500 \nL 1906 2253 \nL 2834 3500 \nL 3513 3500 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-78\"/>\n </g>\n </g>\n </g>\n <g id=\"line2d_25\">\n <path d=\"M 52.160938 82.540677 \nL 52.496073 87.160423 \nL 52.831208 74.607543 \nL 53.166343 94.258802 \nL 53.501478 82.445828 \nL 53.836613 90.863697 \nL 54.171748 81.330838 \nL 54.842019 75.670799 \nL 55.177154 74.733618 \nL 55.512289 65.807545 \nL 55.847424 76.72342 \nL 56.182559 81.06327 \nL 56.852829 72.295303 \nL 57.187965 87.03634 \nL 57.5231 79.138321 \nL 57.858235 90.460968 \nL 58.19337 64.462533 \nL 58.528505 71.006654 \nL 58.86364 72.753178 \nL 59.198775 72.955888 \nL 59.53391 72.744931 \nL 59.869046 65.909052 \nL 60.539316 85.912494 \nL 60.874451 83.456658 \nL 61.209586 71.295397 \nL 61.544721 71.743413 \nL 61.879856 70.266077 \nL 62.214992 65.917637 \nL 62.550127 78.751082 \nL 62.885262 65.059452 \nL 63.220397 68.782683 \nL 63.555532 87.972918 \nL 63.890667 71.434823 \nL 64.225802 66.491534 \nL 64.560938 68.479991 \nL 64.896073 55.083077 \nL 65.231208 54.756356 \nL 65.566343 73.928592 \nL 65.901478 61.643549 \nL 66.236613 68.095091 \nL 66.571748 79.896328 \nL 66.906883 66.742312 \nL 67.242019 63.115723 \nL 67.912289 72.614255 \nL 68.247424 55.526052 \nL 68.917694 48.203952 \nL 69.9231 73.532097 \nL 70.59337 52.807662 \nL 70.928505 54.436046 \nL 71.26364 57.624012 \nL 71.598775 70.095237 \nL 71.93391 49.245848 \nL 72.604181 41.950363 \nL 72.939316 48.052445 \nL 73.274451 64.165698 \nL 73.609586 46.531596 \nL 73.944721 65.413633 \nL 74.279856 68.834042 \nL 74.614992 33.118014 \nL 74.950127 37.002609 \nL 75.285262 49.346513 \nL 75.620397 51.149176 \nL 75.955532 68.835633 \nL 76.290667 49.456513 \nL 76.960938 54.22281 \nL 77.296073 35.690807 \nL 77.631208 51.063172 \nL 77.966343 27.778865 \nL 78.301478 55.721312 \nL 78.636613 41.431316 \nL 78.971748 60.36791 \nL 79.306883 49.217727 \nL 79.642019 55.102142 \nL 79.977154 47.863446 \nL 80.312289 53.449159 \nL 80.647424 32.802344 \nL 80.982559 34.137222 \nL 81.317694 37.231421 \nL 81.652829 32.618262 \nL 81.987965 58.862088 \nL 82.3231 39.718749 \nL 82.658235 64.236646 \nL 82.99337 61.994168 \nL 83.328505 28.643728 \nL 83.66364 48.422215 \nL 83.998775 58.542304 \nL 84.33391 58.977587 \nL 84.669046 60.103512 \nL 85.004181 71.333481 \nL 85.674451 43.063791 \nL 86.009586 37.83007 \nL 86.344721 55.625017 \nL 86.679856 50.958084 \nL 87.014992 33.48234 \nL 87.350127 46.475625 \nL 87.685262 40.120701 \nL 88.020397 42.420831 \nL 88.355532 36.629445 \nL 88.690667 55.528983 \nL 89.025802 48.594067 \nL 89.360938 51.523627 \nL 89.696073 57.601528 \nL 90.031208 50.788862 \nL 90.366343 46.693581 \nL 90.701478 37.24184 \nL 91.036613 36.685959 \nL 91.371748 46.579066 \nL 91.706883 38.109498 \nL 92.042019 43.469917 \nL 92.377154 44.678701 \nL 92.712289 49.475106 \nL 93.047424 51.721115 \nL 93.382559 22.51475 \nL 93.717694 23.608466 \nL 94.052829 30.026926 \nL 94.387965 17.068495 \nL 94.7231 41.600808 \nL 95.058235 45.90696 \nL 95.39337 22.479565 \nL 96.06364 54.775678 \nL 96.398775 30.549702 \nL 96.73391 38.552084 \nL 97.069046 38.45545 \nL 97.404181 46.235738 \nL 97.739316 34.754069 \nL 98.074451 56.918197 \nL 98.409586 25.439123 \nL 98.744721 34.268675 \nL 99.079856 39.172977 \nL 99.414992 30.926708 \nL 99.750127 38.741284 \nL 100.085262 43.614466 \nL 100.420397 39.258008 \nL 100.755532 26.202122 \nL 101.090667 37.748706 \nL 101.425802 34.337025 \nL 101.760938 28.664054 \nL 102.096073 34.446989 \nL 102.431208 23.42161 \nL 102.766343 38.047642 \nL 103.101478 30.951875 \nL 103.436613 54.33636 \nL 103.771748 42.995052 \nL 104.106883 43.966826 \nL 104.442019 54.379355 \nL 104.777154 19.321137 \nL 105.447424 49.687391 \nL 105.782559 22.910376 \nL 106.117694 42.762417 \nL 106.452829 24.673368 \nL 106.787965 32.648275 \nL 107.1231 50.104748 \nL 107.458235 29.297944 \nL 107.79337 37.662952 \nL 108.128505 27.120441 \nL 108.46364 36.437538 \nL 108.798775 50.649224 \nL 109.13391 35.022045 \nL 109.469046 37.562156 \nL 109.804181 45.945409 \nL 110.139316 35.633874 \nL 110.474451 45.139554 \nL 110.809586 48.127992 \nL 111.479856 30.474167 \nL 111.814992 37.870963 \nL 112.150127 50.658221 \nL 112.485262 25.184666 \nL 112.820397 46.413916 \nL 113.490667 29.211659 \nL 113.825802 42.186118 \nL 114.160938 41.06596 \nL 114.496073 42.793014 \nL 114.831208 21.924026 \nL 115.166343 25.843003 \nL 115.501478 21.628735 \nL 115.836613 54.451501 \nL 116.171748 58.108143 \nL 116.842019 18.598359 \nL 117.177154 41.632294 \nL 117.512289 31.028242 \nL 117.847424 36.559757 \nL 118.182559 24.658532 \nL 118.852829 70.0135 \nL 119.187965 47.71838 \nL 119.5231 53.496929 \nL 119.858235 41.349751 \nL 120.19337 52.04515 \nL 120.528505 35.241695 \nL 120.86364 48.142886 \nL 121.198775 38.873108 \nL 121.53391 43.09255 \nL 121.869046 44.555779 \nL 122.204181 48.696303 \nL 122.539316 38.161378 \nL 122.874451 43.009385 \nL 123.209586 38.802116 \nL 123.544721 59.575864 \nL 123.879856 32.723356 \nL 124.550127 43.884352 \nL 124.885262 41.928916 \nL 125.220397 60.586625 \nL 125.555532 39.958748 \nL 125.890667 56.513423 \nL 126.225802 46.016124 \nL 126.560938 46.895648 \nL 126.896073 56.63796 \nL 127.231208 50.608738 \nL 127.566343 48.289847 \nL 127.901478 61.250348 \nL 128.236613 47.332944 \nL 128.571748 53.864786 \nL 128.906883 48.568954 \nL 129.242019 49.171219 \nL 129.577154 42.723321 \nL 129.912289 58.617033 \nL 130.247424 53.490781 \nL 130.582559 33.467416 \nL 130.917694 46.658585 \nL 131.252829 41.220463 \nL 131.9231 58.752644 \nL 132.258235 44.870894 \nL 132.928505 78.171031 \nL 133.26364 50.687824 \nL 133.598775 57.103397 \nL 133.93391 55.933069 \nL 134.269046 61.792159 \nL 134.604181 54.032913 \nL 134.939316 41.007203 \nL 135.274451 70.486189 \nL 135.609586 34.808227 \nL 135.944721 73.910925 \nL 136.279856 57.096481 \nL 136.614992 87.397833 \nL 136.950127 64.683626 \nL 137.285262 57.331604 \nL 137.620397 63.868828 \nL 137.955532 51.740077 \nL 138.290667 55.062288 \nL 138.625802 72.89974 \nL 138.960938 74.653049 \nL 139.296073 55.790943 \nL 139.631208 67.04038 \nL 139.966343 56.494972 \nL 140.301478 66.950269 \nL 140.971748 54.657992 \nL 141.306883 52.973806 \nL 141.642019 64.180988 \nL 141.977154 65.910359 \nL 142.312289 71.167851 \nL 142.647424 63.040606 \nL 142.982559 67.401126 \nL 143.317694 68.801932 \nL 143.652829 76.392327 \nL 143.987965 51.45512 \nL 144.658235 84.5268 \nL 144.99337 59.585442 \nL 145.328505 81.239005 \nL 145.66364 77.686774 \nL 145.998775 72.297682 \nL 146.33391 75.708424 \nL 146.669046 89.86747 \nL 147.004181 66.159065 \nL 147.339316 56.640357 \nL 147.674451 69.434946 \nL 148.009586 73.391482 \nL 148.344721 71.523242 \nL 148.679856 79.920164 \nL 149.014992 64.42179 \nL 149.350127 72.44014 \nL 149.685262 72.909406 \nL 150.020397 76.853642 \nL 150.355532 64.448208 \nL 150.690667 83.156565 \nL 151.025802 72.131381 \nL 151.360938 92.376059 \nL 151.696073 86.525332 \nL 152.031208 71.061021 \nL 152.366343 74.119042 \nL 152.701478 67.374199 \nL 153.036613 81.980235 \nL 153.371748 77.469885 \nL 153.706883 80.266546 \nL 154.042019 86.069808 \nL 154.377154 85.374518 \nL 154.712289 71.944346 \nL 155.047424 81.209601 \nL 155.382559 85.279962 \nL 155.717694 103.255058 \nL 156.052829 80.071077 \nL 156.387965 95.716624 \nL 156.7231 75.452914 \nL 157.058235 90.389476 \nL 157.39337 91.895436 \nL 157.728505 73.656363 \nL 158.06364 97.241442 \nL 158.73391 94.995908 \nL 159.069046 92.643728 \nL 159.404181 95.092679 \nL 159.739316 89.768132 \nL 160.074451 102.944954 \nL 160.409586 86.289199 \nL 160.744721 95.489075 \nL 161.079856 84.376908 \nL 161.414992 85.693836 \nL 161.750127 116.359045 \nL 162.085262 89.684469 \nL 162.420397 103.886839 \nL 162.755532 82.46671 \nL 163.090667 114.872034 \nL 163.425802 94.359728 \nL 163.760938 96.344608 \nL 164.096073 82.428908 \nL 164.431208 100.367771 \nL 164.766343 92.545761 \nL 165.101478 88.512221 \nL 165.436613 86.595791 \nL 165.771748 101.666527 \nL 166.106883 95.106717 \nL 166.442019 102.17751 \nL 166.777154 99.074869 \nL 167.112289 103.631668 \nL 167.447424 103.229953 \nL 167.782559 102.083586 \nL 168.117694 87.142554 \nL 168.452829 104.045531 \nL 168.787965 101.308963 \nL 169.1231 106.689263 \nL 169.458235 114.619349 \nL 169.79337 108.057806 \nL 170.128505 98.791407 \nL 170.46364 118.503678 \nL 170.798775 112.659651 \nL 171.13391 96.620698 \nL 171.469046 89.39968 \nL 171.804181 103.618829 \nL 172.139316 124.337784 \nL 172.474451 99.223483 \nL 172.809586 102.405491 \nL 173.144721 116.2107 \nL 173.479856 121.234264 \nL 173.814992 101.93198 \nL 174.150127 102.070774 \nL 175.155532 113.432113 \nL 175.490667 109.777916 \nL 175.825802 120.605372 \nL 176.160938 94.719502 \nL 176.496073 119.059294 \nL 176.831208 107.92557 \nL 177.166343 114.507608 \nL 177.501478 109.237124 \nL 177.836613 106.82756 \nL 178.171748 127.205862 \nL 178.506883 118.588457 \nL 178.842019 120.395778 \nL 179.177154 114.631442 \nL 179.512289 103.455336 \nL 179.847424 121.217059 \nL 180.182559 129.176508 \nL 180.517694 117.367964 \nL 180.852829 120.194485 \nL 181.187965 132.259348 \nL 181.5231 110.091616 \nL 181.858235 121.937833 \nL 182.19337 107.492691 \nL 182.528505 116.816492 \nL 182.86364 131.625771 \nL 183.198775 128.644081 \nL 183.53391 133.428747 \nL 183.869046 119.952458 \nL 184.204181 115.11093 \nL 184.539316 128.075533 \nL 184.874451 127.881333 \nL 185.209586 116.682333 \nL 185.544721 134.951789 \nL 185.879856 127.752499 \nL 186.214992 124.525517 \nL 186.550127 116.685347 \nL 186.885262 125.719672 \nL 187.220397 126.677783 \nL 187.555532 120.248989 \nL 187.890667 124.703391 \nL 188.560938 116.595523 \nL 188.896073 134.665713 \nL 189.566343 122.747959 \nL 190.236613 141.235152 \nL 190.571748 153.772484 \nL 190.906883 138.004637 \nL 191.242019 133.231698 \nL 191.577154 123.516837 \nL 191.912289 136.41614 \nL 192.247424 135.849213 \nL 192.582559 121.550645 \nL 192.917694 137.170283 \nL 193.252829 112.925906 \nL 193.587965 114.83814 \nL 193.9231 132.905995 \nL 194.59337 117.110157 \nL 194.928505 123.626824 \nL 195.26364 137.70539 \nL 195.598775 142.066082 \nL 195.93391 134.121904 \nL 196.269046 135.929529 \nL 196.604181 136.406446 \nL 196.939316 106.836728 \nL 197.274451 131.270583 \nL 197.609586 141.970546 \nL 197.944721 135.002329 \nL 198.279856 115.80569 \nL 198.614992 118.840467 \nL 198.950127 128.382017 \nL 199.285262 119.428089 \nL 199.955532 132.537044 \nL 200.290667 133.452803 \nL 200.625802 123.371822 \nL 200.960938 124.947975 \nL 201.631208 135.312659 \nL 201.966343 126.018331 \nL 202.301478 136.55686 \nL 202.636613 121.748361 \nL 202.971748 129.556776 \nL 203.306883 149.277223 \nL 203.642019 126.069812 \nL 203.977154 123.403939 \nL 204.312289 134.230927 \nL 204.647424 137.004921 \nL 204.982559 143.314959 \nL 205.317694 126.470259 \nL 205.652829 124.135192 \nL 205.987965 165.96 \nL 206.3231 119.635908 \nL 206.658235 135.550385 \nL 207.328505 122.841747 \nL 207.66364 139.053316 \nL 207.998775 113.637565 \nL 208.669046 146.493848 \nL 209.004181 132.024505 \nL 209.674451 149.567809 \nL 210.009586 150.187023 \nL 210.344721 134.323676 \nL 210.679856 147.767029 \nL 211.014992 129.862118 \nL 211.350127 134.989778 \nL 211.685262 122.049201 \nL 212.020397 149.071582 \nL 212.355532 145.84648 \nL 212.690667 123.842478 \nL 213.025802 130.274029 \nL 213.360938 148.869087 \nL 213.696073 121.210397 \nL 214.366343 153.522791 \nL 214.701478 129.445089 \nL 215.036613 132.173497 \nL 215.371748 138.767039 \nL 215.706883 135.646293 \nL 216.042019 145.62918 \nL 216.377154 127.050394 \nL 216.712289 144.621554 \nL 217.047424 114.675313 \nL 217.382559 138.104429 \nL 217.717694 124.399145 \nL 218.052829 135.141768 \nL 218.387965 135.48628 \nL 218.7231 132.609842 \nL 219.058235 124.982861 \nL 219.39337 124.506346 \nL 219.728505 126.156215 \nL 220.06364 142.329919 \nL 220.398775 130.605597 \nL 220.73391 146.5759 \nL 221.069046 136.170638 \nL 221.404181 131.488758 \nL 221.739316 132.02965 \nL 222.074451 140.573964 \nL 222.409586 123.832699 \nL 222.744721 124.277288 \nL 223.079856 124.953542 \nL 223.414992 127.263477 \nL 223.750127 110.560844 \nL 224.085262 137.818524 \nL 224.420397 142.50282 \nL 224.755532 127.104535 \nL 225.090667 117.048794 \nL 225.760938 138.468212 \nL 226.096073 127.282752 \nL 226.431208 131.83829 \nL 226.766343 133.118269 \nL 227.101478 150.31625 \nL 227.436613 124.7173 \nL 227.771748 130.194867 \nL 228.106883 114.612229 \nL 228.442019 134.224571 \nL 228.777154 134.407549 \nL 229.112289 136.514326 \nL 229.447424 117.769624 \nL 229.782559 125.650817 \nL 230.117694 119.696891 \nL 230.452829 136.521369 \nL 230.787965 116.738906 \nL 231.1231 111.5003 \nL 231.458235 126.540722 \nL 231.79337 116.045952 \nL 232.128505 117.35536 \nL 232.46364 124.958542 \nL 233.13391 129.191373 \nL 233.469046 139.838063 \nL 233.804181 109.706787 \nL 234.139316 129.786796 \nL 234.809586 127.341969 \nL 235.144721 122.573358 \nL 235.479856 123.66811 \nL 235.814992 124.153755 \nL 236.150127 118.679256 \nL 236.485262 129.210724 \nL 236.820397 112.133871 \nL 237.155532 104.927132 \nL 237.490667 111.666771 \nL 238.160938 109.068293 \nL 238.496073 105.694549 \nL 238.831208 105.120007 \nL 239.166343 115.552119 \nL 239.501478 103.47592 \nL 239.836613 126.315653 \nL 240.171748 104.31299 \nL 240.506883 106.125978 \nL 240.842019 120.159409 \nL 241.177154 92.256568 \nL 241.847424 117.300027 \nL 242.182559 121.255933 \nL 242.852829 109.31399 \nL 243.187965 92.247031 \nL 243.5231 118.982764 \nL 243.858235 107.900198 \nL 244.19337 125.17813 \nL 244.528505 108.829216 \nL 244.86364 111.183343 \nL 245.198775 115.314112 \nL 245.53391 89.220133 \nL 245.869046 100.208846 \nL 246.204181 117.40755 \nL 246.539316 111.827322 \nL 246.874451 130.261865 \nL 247.209586 105.074797 \nL 247.544721 102.108513 \nL 247.879856 88.652308 \nL 248.214992 102.949672 \nL 248.550127 105.405653 \nL 248.885262 110.721433 \nL 249.220397 119.927315 \nL 249.555532 98.748061 \nL 249.890667 112.071864 \nL 250.225802 99.830993 \nL 250.560938 104.950024 \nL 251.231208 90.998354 \nL 251.566343 107.888837 \nL 251.901478 99.998621 \nL 252.236613 108.573405 \nL 252.571748 95.04363 \nL 252.906883 118.129847 \nL 253.242019 100.103336 \nL 253.577154 93.813473 \nL 253.912289 99.151092 \nL 254.247424 95.017258 \nL 254.582559 73.508332 \nL 254.917694 92.109185 \nL 255.252829 96.554614 \nL 255.587965 111.389737 \nL 255.9231 83.042451 \nL 256.258235 94.360804 \nL 256.59337 98.982089 \nL 256.928505 79.117295 \nL 257.26364 101.18163 \nL 257.598775 81.688049 \nL 257.93391 99.858687 \nL 258.269046 92.451301 \nL 258.604181 92.955598 \nL 258.939316 77.266187 \nL 259.274451 86.875849 \nL 259.609586 74.917317 \nL 259.944721 94.027469 \nL 260.279856 70.093281 \nL 260.614992 72.345724 \nL 260.950127 98.040793 \nL 261.285262 85.355341 \nL 261.620397 85.78782 \nL 261.955532 95.997762 \nL 262.290667 92.079367 \nL 262.625802 78.331411 \nL 262.960938 81.270498 \nL 263.296073 65.882588 \nL 263.631208 71.299352 \nL 263.966343 92.988568 \nL 264.301478 81.363839 \nL 264.636613 94.329776 \nL 264.971748 86.186902 \nL 265.306883 89.709548 \nL 265.642019 88.472425 \nL 265.977154 56.526387 \nL 266.312289 77.499678 \nL 266.647424 69.139953 \nL 266.982559 84.504951 \nL 267.317694 81.421094 \nL 267.652829 93.735829 \nL 267.987965 59.999561 \nL 268.3231 77.059255 \nL 268.658235 80.60017 \nL 268.99337 75.648174 \nL 269.328505 75.90715 \nL 269.66364 65.00924 \nL 269.998775 62.559204 \nL 270.33391 91.601763 \nL 270.669046 79.54782 \nL 271.004181 76.15221 \nL 271.339316 70.766354 \nL 271.674451 81.582208 \nL 272.009586 70.369595 \nL 272.344721 69.454475 \nL 272.679856 70.511766 \nL 273.014992 57.1945 \nL 273.685262 69.935774 \nL 274.020397 71.649454 \nL 274.355532 58.378707 \nL 274.690667 54.922919 \nL 275.025802 55.236316 \nL 275.360937 65.939561 \nL 275.696073 63.039489 \nL 276.031208 64.315246 \nL 276.366343 60.914538 \nL 276.701478 44.406781 \nL 277.036613 61.0263 \nL 277.371748 60.658443 \nL 277.706883 75.407217 \nL 278.042019 67.868019 \nL 278.377154 72.054763 \nL 279.047424 58.976577 \nL 279.382559 73.742361 \nL 279.717694 79.441761 \nL 280.052829 63.78142 \nL 280.387965 70.779876 \nL 280.7231 67.562347 \nL 281.058235 57.195928 \nL 281.39337 59.883753 \nL 281.728505 53.403832 \nL 282.06364 57.066949 \nL 282.398775 70.955695 \nL 282.73391 73.290087 \nL 283.069046 68.607612 \nL 283.404181 74.788144 \nL 283.739316 68.787071 \nL 284.074451 43.48139 \nL 284.409586 50.5759 \nL 284.744721 70.860477 \nL 285.079856 48.464976 \nL 285.414992 50.710844 \nL 285.750127 48.320138 \nL 286.085262 44.493999 \nL 286.420397 45.041371 \nL 286.755532 51.796907 \nL 287.090667 43.429824 \nL 287.425802 66.627776 \nL 287.760938 55.199511 \nL 288.096073 52.103943 \nL 288.431208 36.446131 \nL 288.766343 48.069917 \nL 289.101478 42.937168 \nL 289.436613 55.895207 \nL 289.771748 22.146374 \nL 290.106883 53.617525 \nL 290.442019 57.749995 \nL 290.777154 52.133505 \nL 291.112289 68.499368 \nL 291.447424 53.71856 \nL 291.782559 47.095855 \nL 292.117694 36.845644 \nL 292.452829 49.280191 \nL 292.787965 48.260268 \nL 293.1231 39.049802 \nL 293.458235 45.649699 \nL 293.79337 72.521568 \nL 294.46364 41.081693 \nL 294.798775 64.536906 \nL 295.13391 44.230345 \nL 295.469046 62.649044 \nL 295.804181 41.240682 \nL 296.139316 40.60869 \nL 296.474451 55.714337 \nL 297.144721 28.435466 \nL 297.479856 38.507758 \nL 297.814992 55.191317 \nL 298.150127 49.219129 \nL 298.485262 28.265222 \nL 298.820397 48.521493 \nL 299.155532 32.861845 \nL 299.490667 43.492879 \nL 299.825802 24.105992 \nL 300.160938 49.339866 \nL 300.496073 49.970028 \nL 300.831208 20.133642 \nL 301.166343 36.675808 \nL 301.501478 26.921376 \nL 301.836613 41.396158 \nL 302.171748 26.995659 \nL 302.506883 30.038167 \nL 302.842019 14.76 \nL 303.177154 31.691289 \nL 303.512289 32.12527 \nL 303.847424 31.134852 \nL 304.182559 36.362709 \nL 304.517694 49.089371 \nL 304.852829 52.828959 \nL 305.187965 40.234596 \nL 305.5231 39.776532 \nL 305.858235 20.400756 \nL 306.19337 35.706787 \nL 306.528505 18.670275 \nL 306.86364 35.881624 \nL 307.198775 33.271722 \nL 307.53391 33.515429 \nL 307.869046 32.60335 \nL 308.204181 45.421619 \nL 308.539316 23.132199 \nL 308.874451 35.81632 \nL 309.209586 33.234276 \nL 309.544721 32.269864 \nL 309.879856 35.106281 \nL 310.214992 30.802033 \nL 310.550127 47.481082 \nL 310.885262 17.10708 \nL 311.220397 40.441483 \nL 311.890667 45.753606 \nL 312.225802 55.150111 \nL 312.560938 33.721991 \nL 312.896073 39.336208 \nL 313.566343 37.669053 \nL 313.901478 23.632788 \nL 314.236613 28.963141 \nL 314.571748 29.249925 \nL 314.906883 23.649702 \nL 315.242019 41.99886 \nL 315.577154 17.335739 \nL 316.247424 46.380199 \nL 316.582559 23.460838 \nL 316.917694 31.315581 \nL 317.252829 19.699903 \nL 317.587965 22.794078 \nL 317.9231 34.538138 \nL 318.258235 41.417104 \nL 318.59337 43.543814 \nL 318.928505 54.562226 \nL 319.26364 45.336783 \nL 319.598775 30.049041 \nL 319.93391 32.224277 \nL 320.269046 36.331043 \nL 320.939316 28.251 \nL 321.274451 31.453858 \nL 321.609586 38.166482 \nL 321.944721 31.990689 \nL 322.279856 40.438166 \nL 322.614992 39.120664 \nL 322.950127 36.950322 \nL 323.285262 49.32656 \nL 323.620397 35.545959 \nL 323.955532 44.443988 \nL 324.290667 48.799316 \nL 324.625802 29.921951 \nL 324.960938 32.846939 \nL 325.296073 41.237199 \nL 325.631208 36.65251 \nL 325.966343 38.787534 \nL 326.301478 32.945149 \nL 326.636613 44.668517 \nL 326.971748 43.132924 \nL 327.306883 20.267173 \nL 327.642019 31.299854 \nL 327.977154 31.7585 \nL 328.312289 28.861985 \nL 328.647424 33.489979 \nL 328.982559 41.282691 \nL 329.317694 24.615567 \nL 329.652829 50.507228 \nL 329.987965 47.01725 \nL 330.3231 50.347017 \nL 330.658235 40.029773 \nL 330.99337 60.142142 \nL 331.328505 49.744454 \nL 331.66364 57.765733 \nL 331.998775 33.223656 \nL 332.33391 58.159494 \nL 332.669046 47.767305 \nL 333.004181 56.148306 \nL 333.339316 42.179317 \nL 333.674451 49.895343 \nL 334.009586 26.599277 \nL 334.344721 38.794808 \nL 334.679856 57.69336 \nL 335.014992 59.133547 \nL 335.350127 51.956858 \nL 335.685262 32.320397 \nL 336.020397 48.54235 \nL 336.355532 49.320624 \nL 336.690667 48.61529 \nL 337.025802 50.101962 \nL 337.360937 41.549811 \nL 337.696073 66.297561 \nL 338.031208 49.167228 \nL 338.366343 64.31496 \nL 338.701478 48.542486 \nL 339.036613 50.336314 \nL 339.371748 45.213799 \nL 339.706883 54.193647 \nL 340.042019 34.721937 \nL 340.377154 56.189179 \nL 340.712289 33.306446 \nL 341.047424 45.142013 \nL 341.382559 61.242116 \nL 341.717694 31.276181 \nL 342.052829 60.711613 \nL 342.387965 39.393835 \nL 342.7231 58.393256 \nL 343.058235 55.204679 \nL 343.39337 53.549996 \nL 343.728505 54.247501 \nL 344.06364 43.533663 \nL 344.398775 39.906485 \nL 344.73391 64.320339 \nL 345.069046 57.679088 \nL 345.404181 62.244237 \nL 345.739316 43.605794 \nL 346.074451 60.829853 \nL 346.409586 35.94501 \nL 347.079856 79.910505 \nL 347.414992 45.122664 \nL 347.750127 51.057094 \nL 348.085262 82.685196 \nL 348.420397 53.652766 \nL 348.755532 70.063278 \nL 349.090667 71.763498 \nL 349.425802 50.486277 \nL 349.760938 50.594399 \nL 350.096073 53.834474 \nL 350.431208 61.107889 \nL 350.766343 61.386622 \nL 351.101478 49.585161 \nL 351.436613 63.660911 \nL 351.771748 62.148577 \nL 352.106883 72.621177 \nL 352.442019 55.91514 \nL 352.777154 58.044252 \nL 353.112289 64.416791 \nL 353.447424 59.856975 \nL 353.782559 75.33017 \nL 354.117694 58.778236 \nL 354.452829 79.553955 \nL 354.787965 64.53676 \nL 355.1231 82.039091 \nL 355.458235 59.360662 \nL 355.79337 55.405828 \nL 356.46364 85.048478 \nL 356.798775 75.278355 \nL 357.13391 57.829685 \nL 357.469046 69.827169 \nL 357.804181 60.77986 \nL 358.139316 81.219025 \nL 358.474451 62.499948 \nL 358.809586 84.0149 \nL 359.144721 65.438091 \nL 359.479856 84.99832 \nL 359.814992 66.713141 \nL 360.150127 74.757282 \nL 360.485262 76.102159 \nL 360.820397 103.285515 \nL 361.155532 78.077763 \nL 361.490667 77.38079 \nL 361.825802 75.773068 \nL 362.160938 78.02791 \nL 362.496073 84.616798 \nL 362.831208 77.566094 \nL 363.166343 77.358982 \nL 363.501478 90.411522 \nL 363.836613 79.283437 \nL 364.171748 73.780389 \nL 364.506883 80.931906 \nL 364.842019 78.285069 \nL 365.177154 83.752425 \nL 365.512289 96.986165 \nL 365.847424 71.484091 \nL 366.182559 94.241757 \nL 366.517694 92.484137 \nL 366.852829 89.960702 \nL 367.187965 90.377804 \nL 367.5231 87.783327 \nL 367.858235 108.707731 \nL 368.19337 94.549255 \nL 368.528505 67.847258 \nL 368.86364 77.863105 \nL 369.198775 99.162238 \nL 369.53391 75.365741 \nL 369.869046 110.119262 \nL 370.204181 86.714846 \nL 370.539316 90.655824 \nL 370.874451 103.702555 \nL 371.209586 75.034118 \nL 371.544721 93.606627 \nL 371.879856 73.239535 \nL 372.214992 106.094504 \nL 372.550127 85.36761 \nL 372.885262 98.972561 \nL 373.220397 90.652961 \nL 373.555532 114.63527 \nL 373.890667 104.605516 \nL 374.225802 85.196527 \nL 374.560938 116.711786 \nL 375.566343 89.255848 \nL 375.901478 99.006307 \nL 376.236613 98.101331 \nL 376.571748 103.051864 \nL 377.242019 97.679856 \nL 377.577154 111.994039 \nL 377.912289 112.863919 \nL 378.247424 118.005249 \nL 378.582559 102.393464 \nL 378.917694 102.089499 \nL 379.252829 98.539169 \nL 379.587965 106.282518 \nL 379.9231 101.144155 \nL 380.258235 108.53384 \nL 380.59337 112.68077 \nL 380.928505 98.911611 \nL 381.26364 109.427979 \nL 381.598775 104.911767 \nL 381.93391 104.852666 \nL 382.269046 106.390265 \nL 382.604181 110.226427 \nL 382.939316 119.467211 \nL 383.274451 107.451376 \nL 383.609586 108.733183 \nL 383.944721 98.667296 \nL 384.279856 117.810706 \nL 384.614992 100.530632 \nL 384.950127 99.4762 \nL 385.285262 104.679327 \nL 385.620397 113.760115 \nL 385.955532 94.629068 \nL 386.290667 126.995433 \nL 386.625802 114.092063 \nL 386.960938 111.924121 \nL 386.960938 111.924121 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_26\">\n <path d=\"M 53.501478 81.379485 \nL 54.171748 84.003086 \nL 54.506883 84.6553 \nL 55.512289 74.249136 \nL 55.847424 69.196594 \nL 56.182559 69.826157 \nL 56.852829 74.49795 \nL 57.187965 73.822174 \nL 57.5231 74.85422 \nL 58.19337 79.269085 \nL 58.528505 76.326528 \nL 59.198775 68.547255 \nL 59.53391 68.510075 \nL 59.869046 69.590302 \nL 60.204181 67.222427 \nL 60.539316 69.239002 \nL 61.209586 79.143861 \nL 61.544721 77.498522 \nL 61.879856 74.093823 \nL 62.550127 65.813593 \nL 62.885262 68.751128 \nL 63.220397 67.117581 \nL 63.555532 66.969712 \nL 63.890667 71.001311 \nL 64.225802 73.391608 \nL 64.560938 71.485791 \nL 64.896073 67.492478 \nL 65.566343 54.945951 \nL 65.901478 58.160985 \nL 66.236613 59.993823 \nL 66.571748 62.849188 \nL 66.906883 67.551253 \nL 67.242019 68.277482 \nL 67.912289 63.538624 \nL 68.247424 64.196183 \nL 68.582559 61.665535 \nL 69.252829 49.537251 \nL 69.587965 48.331924 \nL 69.9231 53.333669 \nL 70.258235 61.901724 \nL 70.59337 64.085889 \nL 71.26364 53.550601 \nL 71.598775 51.093551 \nL 71.93391 56.125126 \nL 72.269046 55.212643 \nL 72.939316 44.669913 \nL 73.274451 42.382423 \nL 73.609586 46.924781 \nL 73.944721 48.497079 \nL 74.614992 57.104997 \nL 75.620397 40.678165 \nL 75.955532 41.383847 \nL 76.290667 50.795893 \nL 76.625802 52.612833 \nL 77.296073 49.509549 \nL 77.631208 43.764635 \nL 77.966343 44.112243 \nL 78.301478 37.495421 \nL 78.636613 40.982299 \nL 78.971748 40.016924 \nL 79.306883 45.804747 \nL 79.642019 46.924356 \nL 79.977154 48.987309 \nL 80.312289 47.6244 \nL 80.647424 47.597711 \nL 81.317694 38.324585 \nL 81.987965 32.848237 \nL 82.3231 39.530886 \nL 82.658235 40.050863 \nL 82.99337 47.657294 \nL 83.328505 52.111638 \nL 83.66364 46.365848 \nL 83.998775 46.071466 \nL 84.33391 44.098346 \nL 85.339316 59.153114 \nL 85.674451 59.69107 \nL 86.344721 45.384628 \nL 86.679856 43.828653 \nL 87.014992 44.074567 \nL 87.350127 42.028487 \nL 87.685262 41.952167 \nL 88.020397 38.780149 \nL 88.355532 39.139806 \nL 88.690667 37.995255 \nL 89.025802 41.473373 \nL 89.360938 43.075584 \nL 90.031208 48.681049 \nL 90.366343 48.691339 \nL 90.701478 47.355273 \nL 91.371748 38.765485 \nL 91.706883 38.570565 \nL 92.042019 37.623042 \nL 92.377154 39.284783 \nL 92.712289 39.905242 \nL 93.382559 44.459201 \nL 94.387965 28.052621 \nL 94.7231 23.436339 \nL 95.39337 33.064776 \nL 95.728505 32.426293 \nL 96.398775 38.275291 \nL 96.73391 37.206452 \nL 97.069046 38.591705 \nL 97.404181 36.119179 \nL 97.739316 37.556002 \nL 98.074451 37.210614 \nL 98.409586 42.122234 \nL 98.744721 37.248668 \nL 99.079856 36.051892 \nL 99.750127 32.144049 \nL 100.420397 36.007899 \nL 100.755532 37.046923 \nL 101.090667 34.512588 \nL 101.425802 33.866065 \nL 101.760938 32.204264 \nL 102.096073 31.283502 \nL 102.431208 31.815096 \nL 102.766343 28.603638 \nL 103.101478 30.586586 \nL 103.436613 30.22592 \nL 103.771748 37.02325 \nL 104.777154 44.547186 \nL 105.112289 36.877984 \nL 105.447424 35.506613 \nL 105.782559 35.874752 \nL 106.117694 32.473982 \nL 106.452829 36.141128 \nL 106.787965 31.159116 \nL 107.1231 30.850211 \nL 107.458235 35.128307 \nL 107.79337 33.894909 \nL 108.128505 36.043072 \nL 108.46364 32.133765 \nL 108.798775 31.887225 \nL 109.13391 36.245504 \nL 109.469046 36.690915 \nL 109.804181 37.921621 \nL 110.139316 38.494894 \nL 110.474451 36.796156 \nL 110.809586 39.065871 \nL 111.144721 40.565078 \nL 111.479856 39.844732 \nL 112.150127 35.125048 \nL 112.485262 37.43919 \nL 112.820397 34.783958 \nL 113.155532 38.026944 \nL 113.825802 34.408652 \nL 114.160938 35.88957 \nL 114.496073 35.698546 \nL 114.831208 38.005952 \nL 115.836613 25.316508 \nL 116.842019 42.991937 \nL 117.177154 36.493096 \nL 117.847424 30.001317 \nL 118.182559 32.70672 \nL 118.517694 30.755673 \nL 118.852829 33.535235 \nL 119.5231 49.414244 \nL 119.858235 50.897243 \nL 120.19337 46.154575 \nL 120.528505 45.114656 \nL 120.86364 40.973922 \nL 121.198775 41.605185 \nL 121.53391 39.385012 \nL 121.869046 39.593197 \nL 122.204181 40.124349 \nL 122.539316 41.619536 \nL 122.874451 40.624532 \nL 123.209586 40.490683 \nL 123.544721 38.473677 \nL 123.879856 43.005061 \nL 124.214992 40.444512 \nL 124.550127 39.750879 \nL 124.885262 38.340471 \nL 125.220397 37.73771 \nL 125.555532 44.181739 \nL 125.890667 43.432477 \nL 126.225802 47.047331 \nL 126.560938 45.297941 \nL 126.896073 44.802912 \nL 127.231208 46.795047 \nL 127.566343 46.758493 \nL 127.901478 47.026657 \nL 128.236613 49.455066 \nL 128.571748 48.162335 \nL 128.906883 48.946244 \nL 129.242019 47.153664 \nL 129.577154 46.150908 \nL 129.912289 44.008348 \nL 130.247424 46.239608 \nL 130.582559 47.442615 \nL 130.917694 43.853595 \nL 131.252829 42.907825 \nL 131.587965 39.372101 \nL 131.9231 41.720917 \nL 132.258235 46.197853 \nL 132.59337 46.648588 \nL 132.928505 49.660297 \nL 133.26364 57.255996 \nL 133.598775 59.032229 \nL 133.93391 56.937336 \nL 134.269046 52.422691 \nL 134.604181 53.392506 \nL 134.939316 53.168053 \nL 135.274451 48.091281 \nL 135.609586 52.75162 \nL 135.944721 45.753122 \nL 136.279856 48.63966 \nL 136.614992 53.528362 \nL 137.285262 68.029468 \nL 137.955532 60.463936 \nL 138.290667 54.063003 \nL 138.625802 51.883534 \nL 138.960938 56.157073 \nL 139.296073 63.764407 \nL 139.631208 63.651046 \nL 139.966343 62.866308 \nL 140.301478 56.979071 \nL 140.636613 58.491791 \nL 140.971748 57.748483 \nL 141.306883 55.694717 \nL 141.642019 52.016347 \nL 141.977154 52.793494 \nL 142.647424 62.595661 \nL 142.982559 63.126043 \nL 143.317694 63.231283 \nL 143.652829 63.085037 \nL 143.987965 66.993086 \nL 144.3231 62.402653 \nL 144.658235 61.336338 \nL 144.99337 66.787 \nL 145.328505 67.678983 \nL 145.66364 67.854717 \nL 145.998775 71.323041 \nL 146.33391 72.952889 \nL 146.669046 73.476966 \nL 147.004181 75.739011 \nL 147.339316 74.829208 \nL 147.674451 67.38922 \nL 148.009586 63.274515 \nL 148.344721 63.247294 \nL 149.014992 71.900532 \nL 149.350127 69.17858 \nL 149.685262 69.096412 \nL 150.020397 67.76329 \nL 150.355532 70.317083 \nL 150.690667 68.330607 \nL 151.360938 71.113524 \nL 151.696073 74.131311 \nL 152.031208 82.375713 \nL 152.366343 79.977343 \nL 152.701478 76.70563 \nL 153.036613 69.108892 \nL 153.371748 70.295154 \nL 154.712289 81.968478 \nL 155.047424 78.729618 \nL 155.382559 76.736948 \nL 155.717694 78.627243 \nL 156.387965 87.2788 \nL 156.7231 91.342284 \nL 157.39337 83.506089 \nL 157.728505 86.350971 \nL 158.06364 82.550603 \nL 158.73391 90.026125 \nL 159.069046 89.229043 \nL 159.404181 99.435859 \nL 159.739316 98.499948 \nL 160.074451 96.21875 \nL 160.409586 96.19493 \nL 160.744721 96.389709 \nL 161.079856 93.886974 \nL 161.414992 94.778628 \nL 161.750127 87.315513 \nL 162.085262 92.370243 \nL 162.420397 95.265459 \nL 162.755532 96.668939 \nL 163.090667 105.546405 \nL 163.425802 93.245298 \nL 163.760938 105.338283 \nL 164.096073 96.377896 \nL 164.431208 104.947456 \nL 164.766343 93.319726 \nL 165.101478 96.024327 \nL 165.436613 89.531934 \nL 165.771748 94.389534 \nL 166.106883 92.027056 \nL 166.442019 95.558574 \nL 166.777154 97.505151 \nL 167.112289 105.107401 \nL 167.447424 102.453874 \nL 167.782559 106.636318 \nL 168.117694 105.956794 \nL 168.452829 105.0248 \nL 168.787965 99.605282 \nL 169.1231 105.118773 \nL 169.458235 100.810357 \nL 169.79337 109.110281 \nL 170.128505 110.872977 \nL 170.46364 110.876074 \nL 170.798775 109.963115 \nL 171.13391 113.441924 \nL 171.469046 109.993465 \nL 171.804181 108.033465 \nL 172.139316 103.191805 \nL 172.474451 103.584444 \nL 172.809586 108.999095 \nL 173.144721 107.703858 \nL 173.479856 112.789961 \nL 173.814992 110.518516 \nL 174.150127 113.493033 \nL 174.485262 111.548699 \nL 174.820397 111.280021 \nL 175.155532 107.890018 \nL 175.490667 109.359346 \nL 175.825802 112.079211 \nL 176.160938 113.155999 \nL 176.496073 115.456409 \nL 176.831208 108.329209 \nL 177.166343 116.582966 \nL 177.501478 108.274208 \nL 177.836613 116.327999 \nL 178.171748 112.105856 \nL 178.506883 114.114981 \nL 178.842019 117.332272 \nL 179.177154 116.491849 \nL 179.512289 121.766863 \nL 179.847424 117.071817 \nL 180.182559 114.14533 \nL 180.517694 117.737609 \nL 180.852829 117.499172 \nL 181.5231 123.402762 \nL 181.858235 121.849405 \nL 182.19337 118.58913 \nL 182.528505 122.330407 \nL 182.86364 113.672375 \nL 183.198775 119.313326 \nL 183.53391 119.694884 \nL 184.204181 127.935999 \nL 184.539316 123.60087 \nL 184.874451 123.215613 \nL 185.544721 121.261464 \nL 185.879856 123.382764 \nL 186.214992 126.569147 \nL 186.550127 122.930904 \nL 186.885262 126.234873 \nL 187.220397 122.308145 \nL 187.555532 123.035699 \nL 187.890667 121.420206 \nL 188.225802 122.799168 \nL 188.560938 123.292358 \nL 188.896073 120.320435 \nL 189.231208 121.536291 \nL 189.566343 124.223803 \nL 189.901478 123.171166 \nL 190.236613 126.828661 \nL 190.571748 127.488738 \nL 190.906883 129.965071 \nL 191.242019 135.690764 \nL 191.577154 135.462005 \nL 191.912289 135.657881 \nL 192.247424 128.796821 \nL 192.582559 129.800507 \nL 192.917694 127.061918 \nL 193.587965 128.987857 \nL 193.9231 119.97531 \nL 194.258235 123.737736 \nL 194.59337 121.208271 \nL 194.928505 120.960544 \nL 195.26364 123.868527 \nL 195.598775 123.465651 \nL 195.93391 125.793483 \nL 196.269046 129.755862 \nL 196.604181 132.388693 \nL 196.939316 133.402281 \nL 197.274451 129.291803 \nL 197.609586 122.18625 \nL 197.944721 128.122714 \nL 198.279856 124.152073 \nL 198.614992 129.300439 \nL 198.950127 126.226862 \nL 199.285262 124.347607 \nL 199.620397 120.864601 \nL 199.955532 120.749189 \nL 200.290667 124.760835 \nL 200.625802 124.676678 \nL 200.960938 126.698111 \nL 201.296073 126.356732 \nL 201.631208 126.417493 \nL 201.966343 125.378664 \nL 202.301478 127.053585 \nL 202.636613 127.429497 \nL 202.971748 129.727363 \nL 203.306883 124.617915 \nL 203.642019 129.717138 \nL 203.977154 129.740702 \nL 204.312289 127.672306 \nL 204.647424 131.247324 \nL 204.982559 127.157241 \nL 205.317694 128.630751 \nL 205.652829 132.639584 \nL 205.987965 129.445747 \nL 206.658235 134.599801 \nL 206.99337 126.866094 \nL 207.328505 138.415199 \nL 207.66364 124.005077 \nL 207.998775 127.615205 \nL 208.33391 127.54331 \nL 208.669046 121.942367 \nL 209.004181 130.14227 \nL 209.339316 127.261526 \nL 209.674451 130.986175 \nL 210.009586 136.81764 \nL 210.344721 135.717341 \nL 210.679856 138.340178 \nL 211.014992 137.609489 \nL 211.350127 138.537908 \nL 211.685262 130.754954 \nL 212.020397 133.420417 \nL 212.355532 127.041129 \nL 212.690667 134.244862 \nL 213.025802 130.721517 \nL 213.360938 133.014979 \nL 213.696073 132.852888 \nL 214.366343 127.466751 \nL 214.701478 135.496026 \nL 215.036613 131.654471 \nL 215.371748 131.701704 \nL 215.706883 135.502266 \nL 216.042019 130.156842 \nL 216.377154 131.493206 \nL 216.712289 134.509278 \nL 217.047424 130.853899 \nL 217.382559 134.556815 \nL 217.717694 124.444226 \nL 218.052829 131.952808 \nL 218.387965 122.495364 \nL 218.7231 130.973235 \nL 219.058235 127.868759 \nL 219.39337 129.800687 \nL 220.06364 125.913804 \nL 220.398775 125.162663 \nL 220.73391 128.682704 \nL 221.069046 128.783925 \nL 221.404181 135.949076 \nL 221.739316 130.967762 \nL 222.074451 133.461015 \nL 222.409586 130.63481 \nL 222.744721 130.410068 \nL 223.079856 126.997579 \nL 223.414992 128.021874 \nL 223.750127 123.429014 \nL 224.085262 123.083133 \nL 224.420397 120.767619 \nL 224.755532 127.560533 \nL 225.090667 125.510005 \nL 225.425802 129.282257 \nL 225.760938 126.924477 \nL 226.096073 125.406924 \nL 226.431208 125.442375 \nL 226.766343 127.189205 \nL 227.101478 130.325826 \nL 227.436613 128.994732 \nL 227.771748 133.281972 \nL 228.106883 128.947634 \nL 228.442019 131.866048 \nL 228.777154 122.014141 \nL 229.112289 127.318193 \nL 229.447424 124.850219 \nL 229.782559 129.958637 \nL 230.117694 125.776082 \nL 230.452829 126.205916 \nL 230.787965 121.00668 \nL 231.1231 125.86106 \nL 231.458235 120.143119 \nL 231.79337 122.025726 \nL 232.46364 116.925335 \nL 232.798775 121.221436 \nL 233.13391 120.427657 \nL 233.469046 122.353407 \nL 233.804181 126.0804 \nL 234.139316 127.72565 \nL 234.474451 121.960384 \nL 234.809586 128.090868 \nL 235.144721 120.701359 \nL 235.479856 125.922559 \nL 235.814992 124.205325 \nL 236.150127 123.742411 \nL 236.485262 122.182997 \nL 236.820397 121.83054 \nL 237.155532 123.044466 \nL 237.490667 117.386879 \nL 237.825802 115.862352 \nL 238.496073 111.396963 \nL 238.831208 112.682754 \nL 239.166343 110.820053 \nL 239.501478 110.797236 \nL 239.836613 111.94942 \nL 240.171748 110.497635 \nL 240.506883 117.643154 \nL 240.842019 110.284841 \nL 241.177154 115.624283 \nL 241.512289 111.551586 \nL 241.847424 105.092268 \nL 242.182559 111.638287 \nL 242.517694 108.208176 \nL 242.852829 114.854944 \nL 243.187965 117.414767 \nL 243.5231 114.493068 \nL 243.858235 107.60525 \nL 244.19337 112.954564 \nL 244.528505 107.431436 \nL 244.86364 119.118806 \nL 245.198775 113.364716 \nL 245.53391 117.486724 \nL 245.869046 112.435783 \nL 246.204181 104.323081 \nL 246.539316 108.636876 \nL 246.874451 106.408564 \nL 247.209586 111.774011 \nL 247.544721 120.139007 \nL 247.879856 112.658432 \nL 248.214992 112.378779 \nL 248.550127 100.933829 \nL 248.885262 104.931553 \nL 249.220397 102.657728 \nL 249.555532 110.645455 \nL 249.890667 113.26379 \nL 250.225802 109.597263 \nL 250.560938 114.360399 \nL 250.896073 105.462536 \nL 251.231208 109.476641 \nL 251.566343 103.636262 \nL 251.901478 101.629505 \nL 252.236613 105.481087 \nL 252.571748 102.388665 \nL 252.906883 109.640477 \nL 253.242019 103.528651 \nL 253.577154 112.245626 \nL 253.912289 104.709062 \nL 254.247424 106.38901 \nL 254.582559 102.83415 \nL 254.917694 89.830637 \nL 255.252829 88.838141 \nL 255.587965 87.480856 \nL 255.9231 94.141174 \nL 256.258235 95.547755 \nL 256.59337 96.329647 \nL 256.928505 100.329679 \nL 257.26364 87.778781 \nL 257.598775 92.670467 \nL 257.93391 90.885071 \nL 258.269046 90.933999 \nL 258.604181 98.059299 \nL 258.939316 90.901537 \nL 259.274451 91.228378 \nL 259.944721 78.94842 \nL 260.279856 79.680174 \nL 260.614992 78.340273 \nL 260.950127 74.806809 \nL 261.285262 77.751127 \nL 261.620397 82.580884 \nL 261.955532 84.233165 \nL 262.290667 90.84449 \nL 262.625802 89.537457 \nL 263.296073 85.175121 \nL 263.631208 73.851909 \nL 263.966343 70.585141 \nL 264.301478 73.150165 \nL 264.971748 83.51818 \nL 265.306883 87.52747 \nL 265.642019 87.195562 \nL 265.977154 88.796666 \nL 266.312289 75.974509 \nL 266.647424 72.199377 \nL 266.982559 66.236334 \nL 267.317694 69.970178 \nL 267.652829 76.202596 \nL 267.987965 79.825565 \nL 268.658235 73.136422 \nL 268.99337 72.450304 \nL 269.66364 75.070723 \nL 270.33391 64.681905 \nL 270.669046 67.721255 \nL 271.004181 75.666863 \nL 271.339316 77.810079 \nL 271.674451 74.575147 \nL 272.009586 73.489726 \nL 273.014992 68.089011 \nL 273.350127 62.326035 \nL 273.685262 60.260007 \nL 274.020397 60.375685 \nL 274.355532 64.515428 \nL 274.690667 62.948242 \nL 275.360937 52.868999 \nL 275.696073 54.271413 \nL 276.366343 59.852975 \nL 276.701478 58.987649 \nL 277.036613 52.437232 \nL 277.371748 52.489737 \nL 277.706883 51.890314 \nL 278.042019 60.521471 \nL 278.377154 64.673697 \nL 278.712289 67.382588 \nL 279.047424 65.601753 \nL 279.382559 61.703737 \nL 279.717694 63.468136 \nL 280.052829 67.59753 \nL 280.387965 68.625759 \nL 280.7231 68.554038 \nL 282.06364 53.159694 \nL 282.398775 52.017425 \nL 282.73391 56.280496 \nL 283.069046 63.228352 \nL 283.404181 66.867402 \nL 283.739316 69.237402 \nL 284.074451 67.733546 \nL 284.409586 58.601395 \nL 284.744721 52.834986 \nL 285.079856 52.569741 \nL 285.414992 52.591548 \nL 285.750127 50.910095 \nL 286.420397 44.222744 \nL 286.755532 43.104026 \nL 287.090667 43.862326 \nL 287.425802 43.024973 \nL 287.760938 48.785564 \nL 288.096073 51.512434 \nL 288.431208 52.297647 \nL 288.766343 45.95463 \nL 289.436613 40.732394 \nL 289.771748 44.06165 \nL 290.106883 38.268343 \nL 290.442019 41.472576 \nL 290.777154 42.971836 \nL 291.447424 54.44981 \nL 291.782559 54.634694 \nL 292.117694 51.099599 \nL 292.452829 44.688781 \nL 292.787965 42.390599 \nL 293.1231 42.008769 \nL 293.458235 41.23371 \nL 293.79337 41.78553 \nL 294.46364 53.822372 \nL 294.798775 50.579637 \nL 295.13391 52.948551 \nL 295.469046 46.598249 \nL 295.804181 50.697978 \nL 296.474451 43.888555 \nL 296.809586 44.526229 \nL 297.144721 42.237428 \nL 297.814992 36.534957 \nL 298.150127 38.717307 \nL 298.485262 42.306445 \nL 298.820397 40.1977 \nL 299.155532 40.896847 \nL 299.490667 35.939195 \nL 299.825802 37.615355 \nL 300.160938 33.433766 \nL 300.831208 39.071851 \nL 301.166343 35.35709 \nL 301.501478 35.253413 \nL 301.836613 29.648007 \nL 302.171748 31.968114 \nL 302.506883 31.054624 \nL 302.842019 30.811709 \nL 303.177154 25.581845 \nL 303.512289 25.592507 \nL 303.847424 26.482229 \nL 304.517694 31.767904 \nL 305.187965 41.408228 \nL 305.5231 42.556646 \nL 305.858235 41.589807 \nL 306.19337 33.754985 \nL 306.528505 31.698538 \nL 306.86364 26.24922 \nL 307.198775 28.313435 \nL 307.53391 29.313304 \nL 307.869046 31.08537 \nL 308.204181 32.056583 \nL 308.539316 35.007322 \nL 308.874451 32.035378 \nL 309.209586 32.944995 \nL 309.544721 31.350529 \nL 309.879856 31.191963 \nL 310.214992 32.400023 \nL 310.550127 31.454962 \nL 310.885262 35.390149 \nL 311.220397 30.679188 \nL 311.555532 33.01194 \nL 311.890667 33.846194 \nL 312.225802 37.611654 \nL 312.560938 43.770852 \nL 312.896073 41.298329 \nL 313.231208 40.106255 \nL 313.566343 37.113797 \nL 313.901478 35.81952 \nL 314.236613 32.294304 \nL 314.906883 27.960987 \nL 315.242019 26.374243 \nL 315.577154 30.478671 \nL 315.912289 27.107642 \nL 316.247424 28.252984 \nL 316.582559 31.664109 \nL 316.917694 30.051296 \nL 317.252829 31.789818 \nL 317.587965 26.867099 \nL 317.9231 24.379677 \nL 318.258235 26.273117 \nL 318.928505 35.80789 \nL 319.26364 42.07712 \nL 319.598775 43.523845 \nL 320.604181 32.935538 \nL 321.274451 31.002981 \nL 321.609586 30.331923 \nL 321.944721 31.478174 \nL 322.279856 31.80133 \nL 322.614992 34.46333 \nL 322.950127 35.382109 \nL 323.285262 35.864032 \nL 323.620397 39.161837 \nL 323.955532 37.867929 \nL 324.625802 40.901481 \nL 324.960938 37.670883 \nL 325.296073 35.828375 \nL 325.631208 34.707438 \nL 325.966343 34.278173 \nL 326.301478 36.029978 \nL 326.636613 34.778834 \nL 327.306883 37.755556 \nL 327.642019 33.537514 \nL 327.977154 31.758919 \nL 328.312289 28.95069 \nL 328.647424 28.565726 \nL 328.982559 30.332289 \nL 329.317694 32.866514 \nL 329.652829 31.156672 \nL 329.987965 36.287088 \nL 330.3231 38.468594 \nL 330.658235 42.945459 \nL 330.99337 42.866843 \nL 331.328505 46.110133 \nL 331.66364 46.121344 \nL 331.998775 49.925802 \nL 332.33391 44.507875 \nL 332.669046 46.418412 \nL 333.004181 44.265095 \nL 333.339316 47.658428 \nL 333.674451 45.804918 \nL 334.009586 45.384002 \nL 334.344721 38.643862 \nL 334.679856 36.62126 \nL 335.014992 39.811395 \nL 335.350127 46.530082 \nL 335.685262 50.934225 \nL 336.020397 44.845559 \nL 336.690667 41.534344 \nL 337.360937 45.451165 \nL 337.696073 43.466576 \nL 338.031208 48.208595 \nL 338.366343 48.75826 \nL 338.701478 53.730219 \nL 339.036613 50.895661 \nL 339.371748 49.127445 \nL 339.706883 46.018199 \nL 340.042019 45.949482 \nL 340.377154 41.950266 \nL 340.712289 44.51209 \nL 341.047424 39.960806 \nL 341.382559 40.647963 \nL 341.717694 44.528171 \nL 342.052829 41.004809 \nL 342.387965 46.920159 \nL 342.7231 42.568004 \nL 343.058235 46.338497 \nL 343.728505 50.146955 \nL 344.06364 50.154411 \nL 344.73391 43.219622 \nL 345.404181 49.929793 \nL 345.739316 55.735601 \nL 346.074451 50.832609 \nL 346.409586 51.556483 \nL 346.744721 44.723458 \nL 347.079856 47.792879 \nL 347.414992 55.914231 \nL 347.750127 57.820449 \nL 348.085262 54.165806 \nL 348.420397 58.80334 \nL 348.755532 59.186262 \nL 349.425802 63.268593 \nL 349.760938 59.864136 \nL 350.431208 49.585607 \nL 350.766343 50.430055 \nL 351.101478 54.339108 \nL 351.436613 52.875974 \nL 352.106883 54.955341 \nL 352.442019 61.250495 \nL 352.777154 60.231753 \nL 353.112289 57.320686 \nL 353.447424 56.154463 \nL 353.782559 56.665024 \nL 354.117694 62.18754 \nL 354.452829 61.612702 \nL 354.787965 64.411766 \nL 355.1231 65.4603 \nL 355.458235 68.093111 \nL 355.79337 66.655048 \nL 356.128505 60.795973 \nL 356.46364 59.759349 \nL 357.13391 73.235157 \nL 357.469046 68.927095 \nL 357.804181 66.2945 \nL 358.139316 60.114156 \nL 358.474451 64.355686 \nL 358.809586 65.725572 \nL 359.144721 67.763706 \nL 359.814992 70.037946 \nL 360.150127 70.746899 \nL 360.485262 70.462205 \nL 360.820397 71.14638 \nL 361.490667 83.201845 \nL 361.825802 82.665957 \nL 362.160938 77.877315 \nL 362.496073 74.994555 \nL 362.831208 77.055029 \nL 363.166343 77.485896 \nL 363.501478 77.718434 \nL 363.836613 78.452254 \nL 364.171748 80.1286 \nL 365.177154 75.624463 \nL 365.512289 77.494325 \nL 365.847424 81.826804 \nL 366.182559 82.063566 \nL 366.852829 87.779664 \nL 367.187965 86.155314 \nL 367.5231 92.991188 \nL 367.858235 89.88183 \nL 368.528505 98.611235 \nL 368.86364 85.927272 \nL 369.198775 85.13243 \nL 369.53391 79.378555 \nL 369.869046 81.092795 \nL 370.204181 90.715574 \nL 370.539316 95.976384 \nL 370.874451 88.468314 \nL 371.209586 99.813677 \nL 371.544721 88.827107 \nL 371.879856 91.402233 \nL 372.214992 82.739818 \nL 372.550127 87.301698 \nL 372.885262 90.265235 \nL 373.220397 90.118299 \nL 373.555532 101.903071 \nL 373.890667 94.958405 \nL 374.225802 107.964731 \nL 374.560938 100.504597 \nL 374.896073 103.348952 \nL 375.231208 110.188926 \nL 375.566343 103.929936 \nL 375.901478 109.383952 \nL 376.236613 102.11153 \nL 376.571748 102.882865 \nL 376.906883 99.512872 \nL 377.242019 105.029846 \nL 377.577154 103.802123 \nL 377.912289 104.471705 \nL 378.247424 108.590614 \nL 378.582559 110.121765 \nL 378.917694 115.179498 \nL 379.252829 110.630543 \nL 379.587965 109.975991 \nL 379.9231 104.792357 \nL 380.258235 107.577022 \nL 380.59337 105.328731 \nL 380.928505 110.494161 \nL 381.26364 109.85634 \nL 381.598775 108.235547 \nL 381.93391 111.870488 \nL 382.269046 107.459998 \nL 382.604181 109.944274 \nL 382.939316 109.717015 \nL 383.274451 111.384683 \nL 383.609586 113.989591 \nL 383.944721 112.788736 \nL 384.279856 113.587335 \nL 384.614992 107.847416 \nL 384.950127 112.601894 \nL 385.285262 106.197032 \nL 385.620397 109.168824 \nL 385.955532 106.766439 \nL 386.290667 108.962869 \nL 386.625802 105.919434 \nL 386.960938 117.082756 \nL 386.960938 117.082756 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #bf00bf; stroke-width: 1.5\"/>\n </g>\n <g id=\"line2d_27\">\n <path d=\"M 254.582559 102.83415 \nL 254.917694 99.643005 \nL 255.252829 104.55081 \nL 255.587965 102.808734 \nL 255.9231 107.365767 \nL 256.258235 106.232282 \nL 256.59337 109.386521 \nL 256.928505 109.239921 \nL 257.26364 111.315507 \nL 257.598775 111.400664 \nL 257.93391 112.883156 \nL 258.269046 113.173937 \nL 258.604181 114.215145 \nL 258.939316 114.539368 \nL 259.274451 115.309558 \nL 259.609586 115.640653 \nL 259.944721 116.211205 \nL 262.290667 118.230324 \nL 263.296073 118.757922 \nL 264.971748 119.318647 \nL 266.647424 119.652535 \nL 269.328505 119.923997 \nL 273.350127 120.070161 \nL 282.73391 120.123986 \nL 386.960938 120.126875 \nL 386.960938 120.126875 \n\" clip-path=\"url(#pe54ddd0599)\" style=\"fill: none; stroke-dasharray: 9.6,2.4,1.5,2.4; stroke-dashoffset: 0; stroke: #008000; stroke-width: 1.5\"/>\n </g>\n <g id=\"patch_3\">\n <path d=\"M 52.160938 173.52 \nL 52.160938 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_4\">\n <path d=\"M 386.960938 173.52 \nL 386.960938 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_5\">\n <path d=\"M 52.160938 173.52 \nL 386.960938 173.52 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_6\">\n <path d=\"M 52.160938 7.2 \nL 386.960938 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"legend_1\">\n <g id=\"patch_7\">\n <path d=\"M 59.160938 168.52 \nL 169.470313 168.52 \nQ 171.470313 168.52 171.470313 166.52 \nL 171.470313 123.485625 \nQ 171.470313 121.485625 169.470313 121.485625 \nL 59.160938 121.485625 \nQ 57.160938 121.485625 57.160938 123.485625 \nL 57.160938 166.52 \nQ 57.160938 168.52 59.160938 168.52 \nz\n\" style=\"opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n </g>\n <g id=\"line2d_28\">\n <path d=\"M 61.160938 129.584063 \nL 71.160938 129.584063 \nL 81.160938 129.584063 \n\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"text_15\">\n <!-- data -->\n <g style=\"fill: #ffffff\" transform=\"translate(89.160938 133.084063) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-64\" d=\"M 2906 2969 \nL 2906 4863 \nL 3481 4863 \nL 3481 0 \nL 2906 0 \nL 2906 525 \nQ 2725 213 2448 61 \nQ 2172 -91 1784 -91 \nQ 1150 -91 751 415 \nQ 353 922 353 1747 \nQ 353 2572 751 3078 \nQ 1150 3584 1784 3584 \nQ 2172 3584 2448 3432 \nQ 2725 3281 2906 2969 \nz\nM 947 1747 \nQ 947 1113 1208 752 \nQ 1469 391 1925 391 \nQ 2381 391 2643 752 \nQ 2906 1113 2906 1747 \nQ 2906 2381 2643 2742 \nQ 2381 3103 1925 3103 \nQ 1469 3103 1208 2742 \nQ 947 2381 947 1747 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-61\" d=\"M 2194 1759 \nQ 1497 1759 1228 1600 \nQ 959 1441 959 1056 \nQ 959 750 1161 570 \nQ 1363 391 1709 391 \nQ 2188 391 2477 730 \nQ 2766 1069 2766 1631 \nL 2766 1759 \nL 2194 1759 \nz\nM 3341 1997 \nL 3341 0 \nL 2766 0 \nL 2766 531 \nQ 2569 213 2275 61 \nQ 1981 -91 1556 -91 \nQ 1019 -91 701 211 \nQ 384 513 384 1019 \nQ 384 1609 779 1909 \nQ 1175 2209 1959 2209 \nL 2766 2209 \nL 2766 2266 \nQ 2766 2663 2505 2880 \nQ 2244 3097 1772 3097 \nQ 1472 3097 1187 3025 \nQ 903 2953 641 2809 \nL 641 3341 \nQ 956 3463 1253 3523 \nQ 1550 3584 1831 3584 \nQ 2591 3584 2966 3190 \nQ 3341 2797 3341 1997 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-64\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"63.476562\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"124.755859\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"163.964844\"/>\n </g>\n </g>\n <g id=\"line2d_29\">\n <path d=\"M 61.160938 144.262188 \nL 71.160938 144.262188 \nL 81.160938 144.262188 \n\" style=\"fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #bf00bf; stroke-width: 1.5\"/>\n </g>\n <g id=\"text_16\">\n <!-- 1-step preds -->\n <g style=\"fill: #ffffff\" transform=\"translate(89.160938 147.762188) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-2d\" d=\"M 313 2009 \nL 1997 2009 \nL 1997 1497 \nL 313 1497 \nL 313 2009 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-73\" d=\"M 2834 3397 \nL 2834 2853 \nQ 2591 2978 2328 3040 \nQ 2066 3103 1784 3103 \nQ 1356 3103 1142 2972 \nQ 928 2841 928 2578 \nQ 928 2378 1081 2264 \nQ 1234 2150 1697 2047 \nL 1894 2003 \nQ 2506 1872 2764 1633 \nQ 3022 1394 3022 966 \nQ 3022 478 2636 193 \nQ 2250 -91 1575 -91 \nQ 1294 -91 989 -36 \nQ 684 19 347 128 \nL 347 722 \nQ 666 556 975 473 \nQ 1284 391 1588 391 \nQ 1994 391 2212 530 \nQ 2431 669 2431 922 \nQ 2431 1156 2273 1281 \nQ 2116 1406 1581 1522 \nL 1381 1569 \nQ 847 1681 609 1914 \nQ 372 2147 372 2553 \nQ 372 3047 722 3315 \nQ 1072 3584 1716 3584 \nQ 2034 3584 2315 3537 \nQ 2597 3491 2834 3397 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-70\" d=\"M 1159 525 \nL 1159 -1331 \nL 581 -1331 \nL 581 3500 \nL 1159 3500 \nL 1159 2969 \nQ 1341 3281 1617 3432 \nQ 1894 3584 2278 3584 \nQ 2916 3584 3314 3078 \nQ 3713 2572 3713 1747 \nQ 3713 922 3314 415 \nQ 2916 -91 2278 -91 \nQ 1894 -91 1617 61 \nQ 1341 213 1159 525 \nz\nM 3116 1747 \nQ 3116 2381 2855 2742 \nQ 2594 3103 2138 3103 \nQ 1681 3103 1420 2742 \nQ 1159 2381 1159 1747 \nQ 1159 1113 1420 752 \nQ 1681 391 2138 391 \nQ 2594 391 2855 752 \nQ 3116 1113 3116 1747 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-20\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-72\" d=\"M 2631 2963 \nQ 2534 3019 2420 3045 \nQ 2306 3072 2169 3072 \nQ 1681 3072 1420 2755 \nQ 1159 2438 1159 1844 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1341 3275 1631 3429 \nQ 1922 3584 2338 3584 \nQ 2397 3584 2469 3576 \nQ 2541 3569 2628 3553 \nL 2631 2963 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-2d\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"99.707031\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"151.806641\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"191.015625\"/>\n <use xlink:href=\"#DejaVuSans-70\" x=\"252.539062\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"316.015625\"/>\n <use xlink:href=\"#DejaVuSans-70\" x=\"347.802734\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"411.279297\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"450.142578\"/>\n <use xlink:href=\"#DejaVuSans-64\" x=\"511.666016\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"575.142578\"/>\n </g>\n </g>\n <g id=\"line2d_30\">\n <path d=\"M 61.160938 158.940313 \nL 71.160938 158.940313 \nL 81.160938 158.940313 \n\" style=\"fill: none; stroke-dasharray: 9.6,2.4,1.5,2.4; stroke-dashoffset: 0; stroke: #008000; stroke-width: 1.5\"/>\n </g>\n <g id=\"text_17\">\n <!-- multistep preds -->\n <g style=\"fill: #ffffff\" transform=\"translate(89.160938 162.440313) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-75\" d=\"M 544 1381 \nL 544 3500 \nL 1119 3500 \nL 1119 1403 \nQ 1119 906 1312 657 \nQ 1506 409 1894 409 \nQ 2359 409 2629 706 \nQ 2900 1003 2900 1516 \nL 2900 3500 \nL 3475 3500 \nL 3475 0 \nL 2900 0 \nL 2900 538 \nQ 2691 219 2414 64 \nQ 2138 -91 1772 -91 \nQ 1169 -91 856 284 \nQ 544 659 544 1381 \nz\nM 1991 3584 \nL 1991 3584 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6c\" d=\"M 603 4863 \nL 1178 4863 \nL 1178 0 \nL 603 0 \nL 603 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-6d\"/>\n <use xlink:href=\"#DejaVuSans-75\" x=\"97.412109\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"160.791016\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"188.574219\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"227.783203\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"255.566406\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"307.666016\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"346.875\"/>\n <use xlink:href=\"#DejaVuSans-70\" x=\"408.398438\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"471.875\"/>\n <use xlink:href=\"#DejaVuSans-70\" x=\"503.662109\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"567.138672\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"606.001953\"/>\n <use xlink:href=\"#DejaVuSans-64\" x=\"667.525391\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"731.001953\"/>\n </g>\n </g>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"pe54ddd0599\">\n <rect x=\"52.160938\" y=\"7.2\" width=\"334.8\" height=\"166.32\"/>\n </clipPath>\n </defs>\n</svg>\n"
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
}
],
"execution_count": 90
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:38.831552628Z",
"start_time": "2026-03-29T09:05:38.780075298Z"
}
},
"cell_type": "code",
"source": [
"import collections\n",
"import re"
],
"id": "aab66c10a4c143d2",
"outputs": [],
"execution_count": 91
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:38.889096136Z",
"start_time": "2026-03-29T09:05:38.833703204Z"
}
},
"cell_type": "code",
"source": [
"d2l.DATA_HUB['time_machine'] = (d2l.DATA_URL + 'timemachine.txt',\n",
"'090b5e7e70c295757f55df93cb0a180b9691891a')\n",
"def read_time_machine(): #@save\n",
" \"\"\"将时间机器数据集加载到文本行的列表中\"\"\"\n",
" with open(d2l.download('time_machine'), 'r') as f:\n",
" lines = f.readlines()\n",
" return [re.sub('[^A-Za-z]+', ' ', line).strip().lower() for line in lines]\n",
"lines = read_time_machine()\n",
"print(f'# 文本总行数: {len(lines)}')\n",
"print(lines[0])\n",
"print(lines[10])"
],
"id": "1aff117af810525e",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"# 文本总行数: 3221\n",
"the time machine by h g wells\n",
"twinkled and his usually pale face was flushed and animated the\n"
]
}
],
"execution_count": 92
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:38.974340058Z",
"start_time": "2026-03-29T09:05:38.905164643Z"
}
},
"cell_type": "code",
"source": [
"def tokenize(lines, token='word'): #@save\n",
" \"\"\"将文本行拆分为单词或字符词元\"\"\"\n",
" if token == 'word':\n",
" return [line.split() for line in lines]\n",
" elif token == 'char':\n",
" return [list(line) for line in lines]\n",
" else:\n",
" print('错误:未知词元类型:' + token)\n",
"tokens = tokenize(lines)\n",
"for i in range(11):\n",
" print(tokens[i])"
],
"id": "eb4fe9745fbaa5e2",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['the', 'time', 'machine', 'by', 'h', 'g', 'wells']\n",
"[]\n",
"[]\n",
"[]\n",
"[]\n",
"['i']\n",
"[]\n",
"[]\n",
"['the', 'time', 'traveller', 'for', 'so', 'it', 'will', 'be', 'convenient', 'to', 'speak', 'of', 'him']\n",
"['was', 'expounding', 'a', 'recondite', 'matter', 'to', 'us', 'his', 'grey', 'eyes', 'shone', 'and']\n",
"['twinkled', 'and', 'his', 'usually', 'pale', 'face', 'was', 'flushed', 'and', 'animated', 'the']\n"
]
}
],
"execution_count": 93
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:39.026306689Z",
"start_time": "2026-03-29T09:05:38.975870867Z"
}
},
"cell_type": "code",
"source": [
"def count_corpus(tokens): #@save\n",
" \"\"\"统计词元的频率\"\"\"\n",
" # 这里的tokens是1D列表或2D列表\n",
" if len(tokens) == 0 or isinstance(tokens[0], list):\n",
" # 将词元列表展平成一个列表\n",
" tokens = [token for line in tokens for token in line]\n",
" return collections.Counter(tokens)\n",
"class Vocab: #@save\n",
" \"\"\"文本词表\"\"\"\n",
" def __init__(self, tokens=None, min_freq=0, reserved_tokens=None):\n",
" if tokens is None:\n",
" tokens = []\n",
" if reserved_tokens is None:\n",
" reserved_tokens = []\n",
" # 按出现频率排序\n",
" counter = count_corpus(tokens)\n",
" self._token_freqs = sorted(counter.items(), key=lambda x: x[1],\n",
" reverse=True)\n",
" # 未知词元的索引为0\n",
" self.idx_to_token = ['<unk>'] + reserved_tokens\n",
" self.token_to_idx = {token: idx\n",
" for idx, token in enumerate(self.idx_to_token)}\n",
" for token, freq in self._token_freqs:\n",
" if freq < min_freq:\n",
" break\n",
" if token not in self.token_to_idx:\n",
" self.idx_to_token.append(token)\n",
" self.token_to_idx[token] = len(self.idx_to_token) - 1\n",
" def __len__(self):\n",
" return len(self.idx_to_token)\n",
" def __getitem__(self, tokens):\n",
" if not isinstance(tokens, (list, tuple)):\n",
" return self.token_to_idx.get(tokens, self.unk)\n",
" return [self.__getitem__(token) for token in tokens]\n",
" def to_tokens(self, indices):\n",
" if not isinstance(indices, (list, tuple)):\n",
" return self.idx_to_token[indices]\n",
" return [self.idx_to_token[index] for index in indices]\n",
" @property\n",
" def unk(self): # 未知词元的索引为0\n",
" return 0\n",
" @property\n",
" def token_freqs(self):\n",
" return self._token_freqs"
],
"id": "bee8e5d7b798c6c",
"outputs": [],
"execution_count": 94
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:39.084414078Z",
"start_time": "2026-03-29T09:05:39.028224941Z"
}
},
"cell_type": "code",
"source": [
"vocab = Vocab(tokens)\n",
"print(list(vocab.token_to_idx.items())[:10])"
],
"id": "ff4e8ac2044850b7",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[('<unk>', 0), ('the', 1), ('i', 2), ('and', 3), ('of', 4), ('a', 5), ('to', 6), ('was', 7), ('in', 8), ('that', 9)]\n"
]
}
],
"execution_count": 95
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:39.172122701Z",
"start_time": "2026-03-29T09:05:39.098729247Z"
}
},
"cell_type": "code",
"source": [
"for i in [0, 100]:\n",
" print('文本:', tokens[i])\n",
" print('索引:', vocab[tokens[i]])"
],
"id": "a4e569dfbd251608",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"文本: ['the', 'time', 'machine', 'by', 'h', 'g', 'wells']\n",
"索引: [1, 19, 50, 40, 2183, 2184, 400]\n",
"文本: ['were', 'three', 'dimensional', 'representations', 'of', 'his', 'four', 'dimensioned']\n",
"索引: [20, 175, 1452, 2250, 4, 25, 262, 2251]\n"
]
}
],
"execution_count": 96
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:39.242984562Z",
"start_time": "2026-03-29T09:05:39.173224665Z"
}
},
"cell_type": "code",
"source": [
"def load_corpus_time_machine(max_tokens=-1): #@save\n",
" \"\"\"返回时光机器数据集的词元索引列表和词表\"\"\"\n",
" lines = read_time_machine()\n",
" tokens = tokenize(lines, 'char')\n",
" vocab = Vocab(tokens)\n",
" # 因为时光机器数据集中的每个文本行不一定是一个句子或一个段落,\n",
" # 所以将所有文本行展平到一个列表中\n",
" corpus = [vocab[token] for line in tokens for token in line]\n",
" if max_tokens > 0:\n",
" corpus = corpus[:max_tokens]\n",
" return corpus, vocab\n",
"corpus, vocab = load_corpus_time_machine()\n",
"\n",
"len(corpus), len(vocab)\n"
],
"id": "1b5c1776ae47af5c",
"outputs": [
{
"data": {
"text/plain": [
"(170580, 28)"
]
},
"execution_count": 97,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 97
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:39.315199771Z",
"start_time": "2026-03-29T09:05:39.258108438Z"
}
},
"cell_type": "code",
"source": [
"tokens = d2l.tokenize(read_time_machine())\n",
"# 因为每个文本行不一定是一个句子或一个段落,因此我们把所有文本行拼接到一起\n",
"corpus = [token for line in tokens for token in line]\n",
"vocab = d2l.Vocab(corpus)\n",
"vocab.token_freqs[:10]"
],
"id": "99deb85c025e5cdd",
"outputs": [
{
"data": {
"text/plain": [
"[('the', 2261),\n",
" ('i', 1267),\n",
" ('and', 1245),\n",
" ('of', 1155),\n",
" ('a', 816),\n",
" ('to', 695),\n",
" ('was', 552),\n",
" ('in', 541),\n",
" ('that', 443),\n",
" ('my', 440)]"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 98
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:39.598676534Z",
"start_time": "2026-03-29T09:05:39.332385572Z"
}
},
"cell_type": "code",
"source": [
"freqs = [freq for token, freq in vocab.token_freqs]\n",
"d2l.plot(freqs, xlabel='token: x', ylabel='frequency: n(x)',\n",
"xscale='log', yscale='log')"
],
"id": "5c0d846673e16c33",
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 350x250 with 1 Axes>"
],
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"247.978125pt\" height=\"183.35625pt\" viewBox=\"0 0 247.978125 183.35625\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <cc:Work>\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n <dc:date>2026-03-29T17:05:39.535495</dc:date>\n <dc:format>image/svg+xml</dc:format>\n <dc:creator>\n <cc:Agent>\n <dc:title>Matplotlib v3.7.2, https://matplotlib.org/</dc:title>\n </cc:Agent>\n </dc:creator>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs>\n <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n <g id=\"patch_1\">\n <path d=\"M 0 183.35625 \nL 247.978125 183.35625 \nL 247.978125 0 \nL 0 0 \nz\n\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 45.478125 145.8 \nL 240.778125 145.8 \nL 240.778125 7.2 \nL 45.478125 7.2 \nz\n\"/>\n </g>\n <g id=\"matplotlib.axis_1\">\n <g id=\"xtick_1\">\n <g id=\"line2d_1\">\n <path d=\"M 54.355398 145.8 \nL 54.355398 7.2 \n\" clip-path=\"url(#p29ba452de2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_2\">\n <defs>\n <path id=\"m11ae95d2b0\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m11ae95d2b0\" x=\"54.355398\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_1\">\n <!-- $\\mathdefault{10^{0}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(45.555398 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-31\" d=\"M 794 531 \nL 1825 531 \nL 1825 4091 \nL 703 3866 \nL 703 4441 \nL 1819 4666 \nL 2450 4666 \nL 2450 531 \nL 3481 531 \nL 3481 0 \nL 794 0 \nL 794 531 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \nQ 1547 4250 1301 3770 \nQ 1056 3291 1056 2328 \nQ 1056 1369 1301 889 \nQ 1547 409 2034 409 \nQ 2525 409 2770 889 \nQ 3016 1369 3016 2328 \nQ 3016 3291 2770 3770 \nQ 2525 4250 2034 4250 \nz\nM 2034 4750 \nQ 2819 4750 3233 4129 \nQ 3647 3509 3647 2328 \nQ 3647 1150 3233 529 \nQ 2819 -91 2034 -91 \nQ 1250 -91 836 529 \nQ 422 1150 422 2328 \nQ 422 3509 836 4129 \nQ 1250 4750 2034 4750 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(128.203125 39.046875) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_2\">\n <g id=\"line2d_3\">\n <path d=\"M 102.85613 145.8 \nL 102.85613 7.2 \n\" clip-path=\"url(#p29ba452de2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_4\">\n <g>\n <use xlink:href=\"#m11ae95d2b0\" x=\"102.85613\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_2\">\n <!-- $\\mathdefault{10^{1}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(94.05613 160.398438) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.684375)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.684375)\"/>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(128.203125 38.965625) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_3\">\n <g id=\"line2d_5\">\n <path d=\"M 151.356861 145.8 \nL 151.356861 7.2 \n\" clip-path=\"url(#p29ba452de2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_6\">\n <g>\n <use xlink:href=\"#m11ae95d2b0\" x=\"151.356861\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_3\">\n <!-- $\\mathdefault{10^{2}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(142.556861 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-32\" d=\"M 1228 531 \nL 3431 531 \nL 3431 0 \nL 469 0 \nL 469 531 \nQ 828 903 1448 1529 \nQ 2069 2156 2228 2338 \nQ 2531 2678 2651 2914 \nQ 2772 3150 2772 3378 \nQ 2772 3750 2511 3984 \nQ 2250 4219 1831 4219 \nQ 1534 4219 1204 4116 \nQ 875 4013 500 3803 \nL 500 4441 \nQ 881 4594 1212 4672 \nQ 1544 4750 1819 4750 \nQ 2544 4750 2975 4387 \nQ 3406 4025 3406 3419 \nQ 3406 3131 3298 2873 \nQ 3191 2616 2906 2266 \nQ 2828 2175 2409 1742 \nQ 1991 1309 1228 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-32\" transform=\"translate(128.203125 39.046875) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_4\">\n <g id=\"line2d_7\">\n <path d=\"M 199.857593 145.8 \nL 199.857593 7.2 \n\" clip-path=\"url(#p29ba452de2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_8\">\n <g>\n <use xlink:href=\"#m11ae95d2b0\" x=\"199.857593\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_4\">\n <!-- $\\mathdefault{10^{3}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(191.057593 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-33\" d=\"M 2597 2516 \nQ 3050 2419 3304 2112 \nQ 3559 1806 3559 1356 \nQ 3559 666 3084 287 \nQ 2609 -91 1734 -91 \nQ 1441 -91 1130 -33 \nQ 819 25 488 141 \nL 488 750 \nQ 750 597 1062 519 \nQ 1375 441 1716 441 \nQ 2309 441 2620 675 \nQ 2931 909 2931 1356 \nQ 2931 1769 2642 2001 \nQ 2353 2234 1838 2234 \nL 1294 2234 \nL 1294 2753 \nL 1863 2753 \nQ 2328 2753 2575 2939 \nQ 2822 3125 2822 3475 \nQ 2822 3834 2567 4026 \nQ 2313 4219 1838 4219 \nQ 1578 4219 1281 4162 \nQ 984 4106 628 3988 \nL 628 4550 \nQ 988 4650 1302 4700 \nQ 1616 4750 1894 4750 \nQ 2613 4750 3031 4423 \nQ 3450 4097 3450 3541 \nQ 3450 3153 3228 2886 \nQ 3006 2619 2597 2516 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-33\" transform=\"translate(128.203125 39.046875) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_5\">\n <g id=\"line2d_9\">\n <defs>\n <path id=\"mc3b0496032\" d=\"M 0 0 \nL 0 2 \n\" style=\"stroke: #ffffff; stroke-width: 0.6\"/>\n </defs>\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"46.842539\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_6\">\n <g id=\"line2d_10\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"49.655191\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_7\">\n <g id=\"line2d_11\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"52.136126\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_8\">\n <g id=\"line2d_12\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"68.955573\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_9\">\n <g id=\"line2d_13\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"77.496128\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_10\">\n <g id=\"line2d_14\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"83.555748\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_11\">\n <g id=\"line2d_15\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"88.255954\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_12\">\n <g id=\"line2d_16\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"92.096303\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_13\">\n <g id=\"line2d_17\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"95.343271\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_14\">\n <g id=\"line2d_18\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"98.155923\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_15\">\n <g id=\"line2d_19\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"100.636858\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_16\">\n <g id=\"line2d_20\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"117.456305\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_17\">\n <g id=\"line2d_21\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"125.99686\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_18\">\n <g id=\"line2d_22\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"132.05648\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_19\">\n <g id=\"line2d_23\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"136.756686\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_20\">\n <g id=\"line2d_24\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"140.597035\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_21\">\n <g id=\"line2d_25\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"143.844003\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_22\">\n <g id=\"line2d_26\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"146.656655\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_23\">\n <g id=\"line2d_27\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"149.13759\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_24\">\n <g id=\"line2d_28\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"165.957036\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_25\">\n <g id=\"line2d_29\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"174.497591\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_26\">\n <g id=\"line2d_30\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"180.557211\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_27\">\n <g id=\"line2d_31\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"185.257418\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_28\">\n <g id=\"line2d_32\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"189.097766\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_29\">\n <g id=\"line2d_33\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"192.344735\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_30\">\n <g id=\"line2d_34\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"195.157387\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_31\">\n <g id=\"line2d_35\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"197.638321\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_32\">\n <g id=\"line2d_36\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"214.457768\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_33\">\n <g id=\"line2d_37\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"222.998323\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_34\">\n <g id=\"line2d_38\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"229.057943\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_35\">\n <g id=\"line2d_39\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"233.75815\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_36\">\n <g id=\"line2d_40\">\n <g>\n <use xlink:href=\"#mc3b0496032\" x=\"237.598498\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"text_5\">\n <!-- token: x -->\n <g style=\"fill: #ffffff\" transform=\"translate(122.916406 174.076563) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-74\" d=\"M 1172 4494 \nL 1172 3500 \nL 2356 3500 \nL 2356 3053 \nL 1172 3053 \nL 1172 1153 \nQ 1172 725 1289 603 \nQ 1406 481 1766 481 \nL 2356 481 \nL 2356 0 \nL 1766 0 \nQ 1100 0 847 248 \nQ 594 497 594 1153 \nL 594 3053 \nL 172 3053 \nL 172 3500 \nL 594 3500 \nL 594 4494 \nL 1172 4494 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6f\" d=\"M 1959 3097 \nQ 1497 3097 1228 2736 \nQ 959 2375 959 1747 \nQ 959 1119 1226 758 \nQ 1494 397 1959 397 \nQ 2419 397 2687 759 \nQ 2956 1122 2956 1747 \nQ 2956 2369 2687 2733 \nQ 2419 3097 1959 3097 \nz\nM 1959 3584 \nQ 2709 3584 3137 3096 \nQ 3566 2609 3566 1747 \nQ 3566 888 3137 398 \nQ 2709 -91 1959 -91 \nQ 1206 -91 779 398 \nQ 353 888 353 1747 \nQ 353 2609 779 3096 \nQ 1206 3584 1959 3584 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6b\" d=\"M 581 4863 \nL 1159 4863 \nL 1159 1991 \nL 2875 3500 \nL 3609 3500 \nL 1753 1863 \nL 3688 0 \nL 2938 0 \nL 1159 1709 \nL 1159 0 \nL 581 0 \nL 581 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-65\" d=\"M 3597 1894 \nL 3597 1613 \nL 953 1613 \nQ 991 1019 1311 708 \nQ 1631 397 2203 397 \nQ 2534 397 2845 478 \nQ 3156 559 3463 722 \nL 3463 178 \nQ 3153 47 2828 -22 \nQ 2503 -91 2169 -91 \nQ 1331 -91 842 396 \nQ 353 884 353 1716 \nQ 353 2575 817 3079 \nQ 1281 3584 2069 3584 \nQ 2775 3584 3186 3129 \nQ 3597 2675 3597 1894 \nz\nM 3022 2063 \nQ 3016 2534 2758 2815 \nQ 2500 3097 2075 3097 \nQ 1594 3097 1305 2825 \nQ 1016 2553 972 2059 \nL 3022 2063 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6e\" d=\"M 3513 2113 \nL 3513 0 \nL 2938 0 \nL 2938 2094 \nQ 2938 2591 2744 2837 \nQ 2550 3084 2163 3084 \nQ 1697 3084 1428 2787 \nQ 1159 2491 1159 1978 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1366 3272 1645 3428 \nQ 1925 3584 2291 3584 \nQ 2894 3584 3203 3211 \nQ 3513 2838 3513 2113 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-3a\" d=\"M 750 794 \nL 1409 794 \nL 1409 0 \nL 750 0 \nL 750 794 \nz\nM 750 3309 \nL 1409 3309 \nL 1409 2516 \nL 750 2516 \nL 750 3309 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-20\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-78\" d=\"M 3513 3500 \nL 2247 1797 \nL 3578 0 \nL 2900 0 \nL 1881 1375 \nL 863 0 \nL 184 0 \nL 1544 1831 \nL 300 3500 \nL 978 3500 \nL 1906 2253 \nL 2834 3500 \nL 3513 3500 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-6b\" x=\"100.390625\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"154.675781\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"216.199219\"/>\n <use xlink:href=\"#DejaVuSans-3a\" x=\"279.578125\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"313.269531\"/>\n <use xlink:href=\"#DejaVuSans-78\" x=\"345.056641\"/>\n </g>\n </g>\n </g>\n <g id=\"matplotlib.axis_2\">\n <g id=\"ytick_1\">\n <g id=\"line2d_41\">\n <path d=\"M 45.478125 139.5 \nL 240.778125 139.5 \n\" clip-path=\"url(#p29ba452de2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_42\">\n <defs>\n <path id=\"m4d8b21d6f2\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m4d8b21d6f2\" x=\"45.478125\" y=\"139.5\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_6\">\n <!-- $\\mathdefault{10^{0}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 143.299219) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(128.203125 39.046875) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_2\">\n <g id=\"line2d_43\">\n <path d=\"M 45.478125 101.936282 \nL 240.778125 101.936282 \n\" clip-path=\"url(#p29ba452de2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_44\">\n <g>\n <use xlink:href=\"#m4d8b21d6f2\" x=\"45.478125\" y=\"101.936282\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_7\">\n <!-- $\\mathdefault{10^{1}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 105.735501) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.684375)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.684375)\"/>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(128.203125 38.965625) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_3\">\n <g id=\"line2d_45\">\n <path d=\"M 45.478125 64.372564 \nL 240.778125 64.372564 \n\" clip-path=\"url(#p29ba452de2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_46\">\n <g>\n <use xlink:href=\"#m4d8b21d6f2\" x=\"45.478125\" y=\"64.372564\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_8\">\n <!-- $\\mathdefault{10^{2}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 68.171783) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-32\" transform=\"translate(128.203125 39.046875) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_4\">\n <g id=\"line2d_47\">\n <path d=\"M 45.478125 26.808846 \nL 240.778125 26.808846 \n\" clip-path=\"url(#p29ba452de2)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_48\">\n <g>\n <use xlink:href=\"#m4d8b21d6f2\" x=\"45.478125\" y=\"26.808846\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_9\">\n <!-- $\\mathdefault{10^{3}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 30.608065) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-33\" transform=\"translate(128.203125 39.046875) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_5\">\n <g id=\"line2d_49\">\n <defs>\n <path id=\"mb87622e500\" d=\"M 0 0 \nL -2 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.6\"/>\n </defs>\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"145.318694\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_6\">\n <g id=\"line2d_50\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"143.1403\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_7\">\n <g id=\"line2d_51\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"141.218821\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_8\">\n <g id=\"line2d_52\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"128.192194\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_9\">\n <g id=\"line2d_53\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"121.577552\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_10\">\n <g id=\"line2d_54\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"116.884388\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_11\">\n <g id=\"line2d_55\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"113.244088\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_12\">\n <g id=\"line2d_56\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"110.269746\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_13\">\n <g id=\"line2d_57\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"107.754976\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_14\">\n <g id=\"line2d_58\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"105.576583\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_15\">\n <g id=\"line2d_59\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"103.655104\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_16\">\n <g id=\"line2d_60\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"90.628476\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_17\">\n <g id=\"line2d_61\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"84.013834\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_18\">\n <g id=\"line2d_62\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"79.32067\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_19\">\n <g id=\"line2d_63\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"75.68037\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_20\">\n <g id=\"line2d_64\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"72.706028\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_21\">\n <g id=\"line2d_65\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"70.191258\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_22\">\n <g id=\"line2d_66\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"68.012865\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_23\">\n <g id=\"line2d_67\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"66.091386\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_24\">\n <g id=\"line2d_68\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"53.064758\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_25\">\n <g id=\"line2d_69\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"46.450116\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_26\">\n <g id=\"line2d_70\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"41.756953\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_27\">\n <g id=\"line2d_71\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"38.116652\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_28\">\n <g id=\"line2d_72\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"35.14231\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_29\">\n <g id=\"line2d_73\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"32.62754\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_30\">\n <g id=\"line2d_74\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"30.449147\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_31\">\n <g id=\"line2d_75\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"28.527668\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_32\">\n <g id=\"line2d_76\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"15.501041\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_33\">\n <g id=\"line2d_77\">\n <g>\n <use xlink:href=\"#mb87622e500\" x=\"45.478125\" y=\"8.886398\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"text_10\">\n <!-- frequency: n(x) -->\n <g style=\"fill: #ffffff\" transform=\"translate(14.798438 114.517188) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-66\" d=\"M 2375 4863 \nL 2375 4384 \nL 1825 4384 \nQ 1516 4384 1395 4259 \nQ 1275 4134 1275 3809 \nL 1275 3500 \nL 2222 3500 \nL 2222 3053 \nL 1275 3053 \nL 1275 0 \nL 697 0 \nL 697 3053 \nL 147 3053 \nL 147 3500 \nL 697 3500 \nL 697 3744 \nQ 697 4328 969 4595 \nQ 1241 4863 1831 4863 \nL 2375 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-72\" d=\"M 2631 2963 \nQ 2534 3019 2420 3045 \nQ 2306 3072 2169 3072 \nQ 1681 3072 1420 2755 \nQ 1159 2438 1159 1844 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1341 3275 1631 3429 \nQ 1922 3584 2338 3584 \nQ 2397 3584 2469 3576 \nQ 2541 3569 2628 3553 \nL 2631 2963 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-71\" d=\"M 947 1747 \nQ 947 1113 1208 752 \nQ 1469 391 1925 391 \nQ 2381 391 2643 752 \nQ 2906 1113 2906 1747 \nQ 2906 2381 2643 2742 \nQ 2381 3103 1925 3103 \nQ 1469 3103 1208 2742 \nQ 947 2381 947 1747 \nz\nM 2906 525 \nQ 2725 213 2448 61 \nQ 2172 -91 1784 -91 \nQ 1150 -91 751 415 \nQ 353 922 353 1747 \nQ 353 2572 751 3078 \nQ 1150 3584 1784 3584 \nQ 2172 3584 2448 3432 \nQ 2725 3281 2906 2969 \nL 2906 3500 \nL 3481 3500 \nL 3481 -1331 \nL 2906 -1331 \nL 2906 525 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-75\" d=\"M 544 1381 \nL 544 3500 \nL 1119 3500 \nL 1119 1403 \nQ 1119 906 1312 657 \nQ 1506 409 1894 409 \nQ 2359 409 2629 706 \nQ 2900 1003 2900 1516 \nL 2900 3500 \nL 3475 3500 \nL 3475 0 \nL 2900 0 \nL 2900 538 \nQ 2691 219 2414 64 \nQ 2138 -91 1772 -91 \nQ 1169 -91 856 284 \nQ 544 659 544 1381 \nz\nM 1991 3584 \nL 1991 3584 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-63\" d=\"M 3122 3366 \nL 3122 2828 \nQ 2878 2963 2633 3030 \nQ 2388 3097 2138 3097 \nQ 1578 3097 1268 2742 \nQ 959 2388 959 1747 \nQ 959 1106 1268 751 \nQ 1578 397 2138 397 \nQ 2388 397 2633 464 \nQ 2878 531 3122 666 \nL 3122 134 \nQ 2881 22 2623 -34 \nQ 2366 -91 2075 -91 \nQ 1284 -91 818 406 \nQ 353 903 353 1747 \nQ 353 2603 823 3093 \nQ 1294 3584 2113 3584 \nQ 2378 3584 2631 3529 \nQ 2884 3475 3122 3366 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-79\" d=\"M 2059 -325 \nQ 1816 -950 1584 -1140 \nQ 1353 -1331 966 -1331 \nL 506 -1331 \nL 506 -850 \nL 844 -850 \nQ 1081 -850 1212 -737 \nQ 1344 -625 1503 -206 \nL 1606 56 \nL 191 3500 \nL 800 3500 \nL 1894 763 \nL 2988 3500 \nL 3597 3500 \nL 2059 -325 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-28\" d=\"M 1984 4856 \nQ 1566 4138 1362 3434 \nQ 1159 2731 1159 2009 \nQ 1159 1288 1364 580 \nQ 1569 -128 1984 -844 \nL 1484 -844 \nQ 1016 -109 783 600 \nQ 550 1309 550 2009 \nQ 550 2706 781 3412 \nQ 1013 4119 1484 4856 \nL 1984 4856 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-29\" d=\"M 513 4856 \nL 1013 4856 \nQ 1481 4119 1714 3412 \nQ 1947 2706 1947 2009 \nQ 1947 1309 1714 600 \nQ 1481 -109 1013 -844 \nL 513 -844 \nQ 928 -128 1133 580 \nQ 1338 1288 1338 2009 \nQ 1338 2731 1133 3434 \nQ 928 4138 513 4856 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-66\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"35.205078\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"74.068359\"/>\n <use xlink:href=\"#DejaVuSans-71\" x=\"135.591797\"/>\n <use xlink:href=\"#DejaVuSans-75\" x=\"199.068359\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"262.447266\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"323.970703\"/>\n <use xlink:href=\"#DejaVuSans-63\" x=\"387.349609\"/>\n <use xlink:href=\"#DejaVuSans-79\" x=\"442.330078\"/>\n <use xlink:href=\"#DejaVuSans-3a\" x=\"494.259766\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"527.951172\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"559.738281\"/>\n <use xlink:href=\"#DejaVuSans-28\" x=\"623.117188\"/>\n <use xlink:href=\"#DejaVuSans-78\" x=\"662.130859\"/>\n <use xlink:href=\"#DejaVuSans-29\" x=\"721.310547\"/>\n </g>\n </g>\n </g>\n <g id=\"line2d_78\">\n <path d=\"M -1 22.937391 \nL 54.355398 22.948175 \nL 68.955573 23.233932 \nL 77.496128 24.458034 \nL 83.555748 30.126092 \nL 88.255954 32.744485 \nL 92.096303 36.502574 \nL 95.343271 36.830949 \nL 98.155923 40.091237 \nL 102.85613 40.3137 \nL 104.863705 43.749961 \nL 106.696478 47.517487 \nL 108.382465 48.168938 \nL 111.396684 51.43591 \nL 112.756098 51.809238 \nL 114.033071 52.741704 \nL 115.237033 53.064758 \nL 116.375883 56.910265 \nL 117.456305 57.541843 \nL 118.484001 59.236831 \nL 119.46388 59.236831 \nL 120.400194 59.598035 \nL 121.296653 60.218404 \nL 122.156511 60.473311 \nL 122.982641 60.995394 \nL 123.777588 61.128568 \nL 125.282771 61.128568 \nL 126.687531 61.672409 \nL 127.356273 62.235006 \nL 128.004435 62.235006 \nL 128.633246 62.378741 \nL 129.243828 62.378741 \nL 129.837208 62.523752 \nL 130.414329 63.421982 \nL 130.976058 63.576615 \nL 131.523195 63.89035 \nL 132.05648 65.381982 \nL 133.084176 65.732828 \nL 133.579813 65.732828 \nL 134.064055 65.911122 \nL 134.537414 66.273664 \nL 136.331144 67.023852 \nL 137.173801 67.023852 \nL 137.582816 67.216916 \nL 137.984039 67.216916 \nL 138.377763 67.610036 \nL 139.143796 68.636395 \nL 139.516613 69.065728 \nL 139.882946 69.284707 \nL 140.597035 69.284707 \nL 141.956448 70.191258 \nL 142.60461 70.191258 \nL 142.921362 70.425992 \nL 143.233421 71.151165 \nL 143.540924 72.171104 \nL 144.437383 72.980215 \nL 144.72792 72.980215 \nL 145.014504 73.542812 \nL 145.576233 73.542812 \nL 145.851578 74.125507 \nL 146.123371 74.42485 \nL 146.3917 74.42485 \nL 147.684351 76.009951 \nL 148.90224 76.009951 \nL 149.13759 76.346328 \nL 149.370339 76.346328 \nL 149.600544 76.689788 \nL 149.828261 76.689788 \nL 150.053543 77.040634 \nL 150.715281 77.040634 \nL 150.93132 77.399192 \nL 151.145165 77.399192 \nL 151.566451 78.140852 \nL 151.979476 78.140852 \nL 152.182991 78.524722 \nL 152.384558 78.524722 \nL 152.781996 79.32067 \nL 153.364437 79.32067 \nL 153.743971 80.157455 \nL 153.931205 80.157455 \nL 154.116788 80.592513 \nL 154.843191 80.592513 \nL 155.020944 81.039492 \nL 155.887881 81.039492 \nL 156.057068 81.499064 \nL 156.720543 81.499064 \nL 156.883197 81.971958 \nL 157.678144 81.971958 \nL 157.833596 82.458971 \nL 158.141099 82.458971 \nL 158.293184 82.960971 \nL 158.890773 82.960971 \nL 159.037558 83.47891 \nL 159.328095 83.47891 \nL 159.471874 84.013834 \nL 159.756522 84.013834 \nL 159.897416 84.566894 \nL 160.037374 84.566894 \nL 160.176408 85.139364 \nL 160.858138 85.139364 \nL 160.991875 85.732655 \nL 161.518493 85.732655 \nL 161.648115 86.34834 \nL 162.409533 86.34834 \nL 162.533803 86.988176 \nL 162.902271 86.988176 \nL 163.023676 87.654134 \nL 163.502415 87.654134 \nL 163.620418 88.34844 \nL 164.200719 88.34844 \nL 164.314886 89.073613 \nL 165.423752 89.073613 \nL 165.638689 89.832527 \nL 166.374151 89.832527 \nL 166.579651 90.628476 \nL 167.675405 90.628476 \nL 167.86865 91.46526 \nL 168.716963 91.46526 \nL 168.900926 92.347298 \nL 169.173892 92.347298 \nL 169.353924 93.279764 \nL 169.972187 93.279764 \nL 170.145551 94.268777 \nL 171.483372 94.268777 \nL 171.64478 95.32164 \nL 172.433771 95.32164 \nL 172.588084 96.44717 \nL 173.490948 96.44717 \nL 173.637733 97.656146 \nL 175.256101 97.656146 \nL 175.391124 98.96194 \nL 176.37712 98.96194 \nL 176.505167 100.381419 \nL 178.33794 100.381419 \nL 178.454636 101.936282 \nL 180.451629 101.936282 \nL 180.609805 103.655104 \nL 182.42068 103.655104 \nL 182.564787 105.576583 \nL 185.257418 105.576583 \nL 185.383422 107.754976 \nL 188.528445 107.754976 \nL 188.672225 110.269746 \nL 191.67211 110.269746 \nL 191.796014 113.244088 \nL 195.754423 113.244088 \nL 195.882004 116.884388 \nL 200.724191 116.884388 \nL 200.84513 121.577552 \nL 207.214001 121.577552 \nL 207.332503 128.192194 \nL 216.282641 128.192194 \nL 216.398216 139.5 \nL 231.900852 139.5 \nL 231.900852 139.5 \n\" clip-path=\"url(#p29ba452de2)\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_3\">\n <path d=\"M 45.478125 145.8 \nL 45.478125 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_4\">\n <path d=\"M 240.778125 145.8 \nL 240.778125 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_5\">\n <path d=\"M 45.478125 145.8 \nL 240.778125 145.8 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_6\">\n <path d=\"M 45.478125 7.2 \nL 240.778125 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"p29ba452de2\">\n <rect x=\"45.478125\" y=\"7.2\" width=\"195.3\" height=\"138.6\"/>\n </clipPath>\n </defs>\n</svg>\n"
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
}
],
"execution_count": 99
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:39.691613898Z",
"start_time": "2026-03-29T09:05:39.602184215Z"
}
},
"cell_type": "code",
"source": [
"bigram_tokens = [pair for pair in zip(corpus[:-1], corpus[1:])]\n",
"bigram_vocab = Vocab(bigram_tokens)\n",
"bigram_vocab.token_freqs[:10]"
],
"id": "2826e3ab0863ee64",
"outputs": [
{
"data": {
"text/plain": [
"[(('of', 'the'), 309),\n",
" (('in', 'the'), 169),\n",
" (('i', 'had'), 130),\n",
" (('i', 'was'), 112),\n",
" (('and', 'the'), 109),\n",
" (('the', 'time'), 102),\n",
" (('it', 'was'), 99),\n",
" (('to', 'the'), 85),\n",
" (('as', 'i'), 78),\n",
" (('of', 'a'), 73)]"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 100
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:39.773596513Z",
"start_time": "2026-03-29T09:05:39.693158268Z"
}
},
"cell_type": "code",
"source": [
"trigram_tokens = [triple for triple in zip(\n",
"corpus[:-2], corpus[1:-1], corpus[2:])]\n",
"trigram_vocab = Vocab(trigram_tokens)\n",
"trigram_vocab.token_freqs[:10]"
],
"id": "7c8cd0544bf872bb",
"outputs": [
{
"data": {
"text/plain": [
"[(('the', 'time', 'traveller'), 59),\n",
" (('the', 'time', 'machine'), 30),\n",
" (('the', 'medical', 'man'), 24),\n",
" (('it', 'seemed', 'to'), 16),\n",
" (('it', 'was', 'a'), 15),\n",
" (('here', 'and', 'there'), 15),\n",
" (('seemed', 'to', 'me'), 14),\n",
" (('i', 'did', 'not'), 14),\n",
" (('i', 'saw', 'the'), 13),\n",
" (('i', 'began', 'to'), 13)]"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 101
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:40.025057797Z",
"start_time": "2026-03-29T09:05:39.775024733Z"
}
},
"cell_type": "code",
"source": [
"bigram_freqs = [freq for token, freq in bigram_vocab.token_freqs]\n",
"trigram_freqs = [freq for token, freq in trigram_vocab.token_freqs]\n",
"d2l.plot([freqs, bigram_freqs, trigram_freqs], xlabel='token: x',\n",
"ylabel='frequency: n(x)', xscale='log', yscale='log',\n",
"legend=['unigram', 'bigram', 'trigram'])"
],
"id": "dc3d97dda738613d",
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 350x250 with 1 Axes>"
],
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"247.978125pt\" height=\"183.35625pt\" viewBox=\"0 0 247.978125 183.35625\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <cc:Work>\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n <dc:date>2026-03-29T17:05:39.966276</dc:date>\n <dc:format>image/svg+xml</dc:format>\n <dc:creator>\n <cc:Agent>\n <dc:title>Matplotlib v3.7.2, https://matplotlib.org/</dc:title>\n </cc:Agent>\n </dc:creator>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs>\n <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n <g id=\"patch_1\">\n <path d=\"M 0 183.35625 \nL 247.978125 183.35625 \nL 247.978125 0 \nL 0 0 \nz\n\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 45.478125 145.8 \nL 240.778125 145.8 \nL 240.778125 7.2 \nL 45.478125 7.2 \nz\n\"/>\n </g>\n <g id=\"matplotlib.axis_1\">\n <g id=\"xtick_1\">\n <g id=\"line2d_1\">\n <path d=\"M 54.355398 145.8 \nL 54.355398 7.2 \n\" clip-path=\"url(#p335112cbd0)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_2\">\n <defs>\n <path id=\"mdc36785fde\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#mdc36785fde\" x=\"54.355398\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_1\">\n <!-- $\\mathdefault{10^{0}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(45.555398 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-31\" d=\"M 794 531 \nL 1825 531 \nL 1825 4091 \nL 703 3866 \nL 703 4441 \nL 1819 4666 \nL 2450 4666 \nL 2450 531 \nL 3481 531 \nL 3481 0 \nL 794 0 \nL 794 531 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \nQ 1547 4250 1301 3770 \nQ 1056 3291 1056 2328 \nQ 1056 1369 1301 889 \nQ 1547 409 2034 409 \nQ 2525 409 2770 889 \nQ 3016 1369 3016 2328 \nQ 3016 3291 2770 3770 \nQ 2525 4250 2034 4250 \nz\nM 2034 4750 \nQ 2819 4750 3233 4129 \nQ 3647 3509 3647 2328 \nQ 3647 1150 3233 529 \nQ 2819 -91 2034 -91 \nQ 1250 -91 836 529 \nQ 422 1150 422 2328 \nQ 422 3509 836 4129 \nQ 1250 4750 2034 4750 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(128.203125 39.046875) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_2\">\n <g id=\"line2d_3\">\n <path d=\"M 94.026857 145.8 \nL 94.026857 7.2 \n\" clip-path=\"url(#p335112cbd0)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_4\">\n <g>\n <use xlink:href=\"#mdc36785fde\" x=\"94.026857\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_2\">\n <!-- $\\mathdefault{10^{1}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(85.226857 160.398438) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.684375)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.684375)\"/>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(128.203125 38.965625) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_3\">\n <g id=\"line2d_5\">\n <path d=\"M 133.698316 145.8 \nL 133.698316 7.2 \n\" clip-path=\"url(#p335112cbd0)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_6\">\n <g>\n <use xlink:href=\"#mdc36785fde\" x=\"133.698316\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_3\">\n <!-- $\\mathdefault{10^{2}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(124.898316 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-32\" d=\"M 1228 531 \nL 3431 531 \nL 3431 0 \nL 469 0 \nL 469 531 \nQ 828 903 1448 1529 \nQ 2069 2156 2228 2338 \nQ 2531 2678 2651 2914 \nQ 2772 3150 2772 3378 \nQ 2772 3750 2511 3984 \nQ 2250 4219 1831 4219 \nQ 1534 4219 1204 4116 \nQ 875 4013 500 3803 \nL 500 4441 \nQ 881 4594 1212 4672 \nQ 1544 4750 1819 4750 \nQ 2544 4750 2975 4387 \nQ 3406 4025 3406 3419 \nQ 3406 3131 3298 2873 \nQ 3191 2616 2906 2266 \nQ 2828 2175 2409 1742 \nQ 1991 1309 1228 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-32\" transform=\"translate(128.203125 39.046875) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_4\">\n <g id=\"line2d_7\">\n <path d=\"M 173.369775 145.8 \nL 173.369775 7.2 \n\" clip-path=\"url(#p335112cbd0)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_8\">\n <g>\n <use xlink:href=\"#mdc36785fde\" x=\"173.369775\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_4\">\n <!-- $\\mathdefault{10^{3}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(164.569775 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-33\" d=\"M 2597 2516 \nQ 3050 2419 3304 2112 \nQ 3559 1806 3559 1356 \nQ 3559 666 3084 287 \nQ 2609 -91 1734 -91 \nQ 1441 -91 1130 -33 \nQ 819 25 488 141 \nL 488 750 \nQ 750 597 1062 519 \nQ 1375 441 1716 441 \nQ 2309 441 2620 675 \nQ 2931 909 2931 1356 \nQ 2931 1769 2642 2001 \nQ 2353 2234 1838 2234 \nL 1294 2234 \nL 1294 2753 \nL 1863 2753 \nQ 2328 2753 2575 2939 \nQ 2822 3125 2822 3475 \nQ 2822 3834 2567 4026 \nQ 2313 4219 1838 4219 \nQ 1578 4219 1281 4162 \nQ 984 4106 628 3988 \nL 628 4550 \nQ 988 4650 1302 4700 \nQ 1616 4750 1894 4750 \nQ 2613 4750 3031 4423 \nQ 3450 4097 3450 3541 \nQ 3450 3153 3228 2886 \nQ 3006 2619 2597 2516 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-33\" transform=\"translate(128.203125 39.046875) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_5\">\n <g id=\"line2d_9\">\n <path d=\"M 213.041234 145.8 \nL 213.041234 7.2 \n\" clip-path=\"url(#p335112cbd0)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_10\">\n <g>\n <use xlink:href=\"#mdc36785fde\" x=\"213.041234\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_5\">\n <!-- $\\mathdefault{10^{4}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(204.241234 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-34\" d=\"M 2419 4116 \nL 825 1625 \nL 2419 1625 \nL 2419 4116 \nz\nM 2253 4666 \nL 3047 4666 \nL 3047 1625 \nL 3713 1625 \nL 3713 1100 \nL 3047 1100 \nL 3047 0 \nL 2419 0 \nL 2419 1100 \nL 313 1100 \nL 313 1709 \nL 2253 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.684375)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.684375)\"/>\n <use xlink:href=\"#DejaVuSans-34\" transform=\"translate(128.203125 38.965625) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_6\">\n <g id=\"line2d_11\">\n <defs>\n <path id=\"m953b403261\" d=\"M 0 0 \nL 0 2 \n\" style=\"stroke: #ffffff; stroke-width: 0.6\"/>\n </defs>\n <g>\n <use xlink:href=\"#m953b403261\" x=\"45.554334\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_7\">\n <g id=\"line2d_12\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"48.210211\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_8\">\n <g id=\"line2d_13\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"50.510836\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_9\">\n <g id=\"line2d_14\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"52.540131\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_10\">\n <g id=\"line2d_15\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"66.297697\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_11\">\n <g id=\"line2d_16\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"73.283494\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_12\">\n <g id=\"line2d_17\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"78.239996\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_13\">\n <g id=\"line2d_18\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"82.084558\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_14\">\n <g id=\"line2d_19\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"85.225793\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_15\">\n <g id=\"line2d_20\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"87.88167\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_16\">\n <g id=\"line2d_21\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"90.182295\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_17\">\n <g id=\"line2d_22\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"92.21159\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_18\">\n <g id=\"line2d_23\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"105.969156\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_19\">\n <g id=\"line2d_24\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"112.954953\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_20\">\n <g id=\"line2d_25\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"117.911455\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_21\">\n <g id=\"line2d_26\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"121.756017\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_22\">\n <g id=\"line2d_27\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"124.897252\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_23\">\n <g id=\"line2d_28\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"127.553129\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_24\">\n <g id=\"line2d_29\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"129.853754\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_25\">\n <g id=\"line2d_30\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"131.883049\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_26\">\n <g id=\"line2d_31\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"145.640615\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_27\">\n <g id=\"line2d_32\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"152.626412\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_28\">\n <g id=\"line2d_33\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"157.582914\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_29\">\n <g id=\"line2d_34\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"161.427476\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_30\">\n <g id=\"line2d_35\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"164.568711\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_31\">\n <g id=\"line2d_36\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"167.224588\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_32\">\n <g id=\"line2d_37\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"169.525213\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_33\">\n <g id=\"line2d_38\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"171.554508\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_34\">\n <g id=\"line2d_39\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"185.312074\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_35\">\n <g id=\"line2d_40\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"192.297871\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_36\">\n <g id=\"line2d_41\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"197.254373\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_37\">\n <g id=\"line2d_42\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"201.098935\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_38\">\n <g id=\"line2d_43\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"204.24017\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_39\">\n <g id=\"line2d_44\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"206.896047\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_40\">\n <g id=\"line2d_45\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"209.196672\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_41\">\n <g id=\"line2d_46\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"211.225968\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_42\">\n <g id=\"line2d_47\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"224.983533\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_43\">\n <g id=\"line2d_48\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"231.96933\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_44\">\n <g id=\"line2d_49\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"236.925832\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_45\">\n <g id=\"line2d_50\">\n <g>\n <use xlink:href=\"#m953b403261\" x=\"240.770394\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"text_6\">\n <!-- token: x -->\n <g style=\"fill: #ffffff\" transform=\"translate(122.916406 174.076563) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-74\" d=\"M 1172 4494 \nL 1172 3500 \nL 2356 3500 \nL 2356 3053 \nL 1172 3053 \nL 1172 1153 \nQ 1172 725 1289 603 \nQ 1406 481 1766 481 \nL 2356 481 \nL 2356 0 \nL 1766 0 \nQ 1100 0 847 248 \nQ 594 497 594 1153 \nL 594 3053 \nL 172 3053 \nL 172 3500 \nL 594 3500 \nL 594 4494 \nL 1172 4494 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6f\" d=\"M 1959 3097 \nQ 1497 3097 1228 2736 \nQ 959 2375 959 1747 \nQ 959 1119 1226 758 \nQ 1494 397 1959 397 \nQ 2419 397 2687 759 \nQ 2956 1122 2956 1747 \nQ 2956 2369 2687 2733 \nQ 2419 3097 1959 3097 \nz\nM 1959 3584 \nQ 2709 3584 3137 3096 \nQ 3566 2609 3566 1747 \nQ 3566 888 3137 398 \nQ 2709 -91 1959 -91 \nQ 1206 -91 779 398 \nQ 353 888 353 1747 \nQ 353 2609 779 3096 \nQ 1206 3584 1959 3584 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6b\" d=\"M 581 4863 \nL 1159 4863 \nL 1159 1991 \nL 2875 3500 \nL 3609 3500 \nL 1753 1863 \nL 3688 0 \nL 2938 0 \nL 1159 1709 \nL 1159 0 \nL 581 0 \nL 581 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-65\" d=\"M 3597 1894 \nL 3597 1613 \nL 953 1613 \nQ 991 1019 1311 708 \nQ 1631 397 2203 397 \nQ 2534 397 2845 478 \nQ 3156 559 3463 722 \nL 3463 178 \nQ 3153 47 2828 -22 \nQ 2503 -91 2169 -91 \nQ 1331 -91 842 396 \nQ 353 884 353 1716 \nQ 353 2575 817 3079 \nQ 1281 3584 2069 3584 \nQ 2775 3584 3186 3129 \nQ 3597 2675 3597 1894 \nz\nM 3022 2063 \nQ 3016 2534 2758 2815 \nQ 2500 3097 2075 3097 \nQ 1594 3097 1305 2825 \nQ 1016 2553 972 2059 \nL 3022 2063 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6e\" d=\"M 3513 2113 \nL 3513 0 \nL 2938 0 \nL 2938 2094 \nQ 2938 2591 2744 2837 \nQ 2550 3084 2163 3084 \nQ 1697 3084 1428 2787 \nQ 1159 2491 1159 1978 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1366 3272 1645 3428 \nQ 1925 3584 2291 3584 \nQ 2894 3584 3203 3211 \nQ 3513 2838 3513 2113 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-3a\" d=\"M 750 794 \nL 1409 794 \nL 1409 0 \nL 750 0 \nL 750 794 \nz\nM 750 3309 \nL 1409 3309 \nL 1409 2516 \nL 750 2516 \nL 750 3309 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-20\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-78\" d=\"M 3513 3500 \nL 2247 1797 \nL 3578 0 \nL 2900 0 \nL 1881 1375 \nL 863 0 \nL 184 0 \nL 1544 1831 \nL 300 3500 \nL 978 3500 \nL 1906 2253 \nL 2834 3500 \nL 3513 3500 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-6b\" x=\"100.390625\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"154.675781\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"216.199219\"/>\n <use xlink:href=\"#DejaVuSans-3a\" x=\"279.578125\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"313.269531\"/>\n <use xlink:href=\"#DejaVuSans-78\" x=\"345.056641\"/>\n </g>\n </g>\n </g>\n <g id=\"matplotlib.axis_2\">\n <g id=\"ytick_1\">\n <g id=\"line2d_51\">\n <path d=\"M 45.478125 139.5 \nL 240.778125 139.5 \n\" clip-path=\"url(#p335112cbd0)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_52\">\n <defs>\n <path id=\"m4d6a88fdf2\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m4d6a88fdf2\" x=\"45.478125\" y=\"139.5\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_7\">\n <!-- $\\mathdefault{10^{0}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 143.299219) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(128.203125 39.046875) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_2\">\n <g id=\"line2d_53\">\n <path d=\"M 45.478125 101.936282 \nL 240.778125 101.936282 \n\" clip-path=\"url(#p335112cbd0)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_54\">\n <g>\n <use xlink:href=\"#m4d6a88fdf2\" x=\"45.478125\" y=\"101.936282\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_8\">\n <!-- $\\mathdefault{10^{1}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 105.735501) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.684375)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.684375)\"/>\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(128.203125 38.965625) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_3\">\n <g id=\"line2d_55\">\n <path d=\"M 45.478125 64.372564 \nL 240.778125 64.372564 \n\" clip-path=\"url(#p335112cbd0)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_56\">\n <g>\n <use xlink:href=\"#m4d6a88fdf2\" x=\"45.478125\" y=\"64.372564\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_9\">\n <!-- $\\mathdefault{10^{2}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 68.171783) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-32\" transform=\"translate(128.203125 39.046875) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_4\">\n <g id=\"line2d_57\">\n <path d=\"M 45.478125 26.808846 \nL 240.778125 26.808846 \n\" clip-path=\"url(#p335112cbd0)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_58\">\n <g>\n <use xlink:href=\"#m4d6a88fdf2\" x=\"45.478125\" y=\"26.808846\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_10\">\n <!-- $\\mathdefault{10^{3}}$ -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 30.608065) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\" transform=\"translate(0 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-30\" transform=\"translate(63.623047 0.765625)\"/>\n <use xlink:href=\"#DejaVuSans-33\" transform=\"translate(128.203125 39.046875) scale(0.7)\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_5\">\n <g id=\"line2d_59\">\n <defs>\n <path id=\"m2fb529a583\" d=\"M 0 0 \nL -2 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.6\"/>\n </defs>\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"145.318694\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_6\">\n <g id=\"line2d_60\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"143.1403\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_7\">\n <g id=\"line2d_61\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"141.218821\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_8\">\n <g id=\"line2d_62\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"128.192194\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_9\">\n <g id=\"line2d_63\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"121.577552\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_10\">\n <g id=\"line2d_64\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"116.884388\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_11\">\n <g id=\"line2d_65\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"113.244088\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_12\">\n <g id=\"line2d_66\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"110.269746\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_13\">\n <g id=\"line2d_67\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"107.754976\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_14\">\n <g id=\"line2d_68\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"105.576583\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_15\">\n <g id=\"line2d_69\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"103.655104\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_16\">\n <g id=\"line2d_70\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"90.628476\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_17\">\n <g id=\"line2d_71\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"84.013834\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_18\">\n <g id=\"line2d_72\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"79.32067\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_19\">\n <g id=\"line2d_73\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"75.68037\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_20\">\n <g id=\"line2d_74\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"72.706028\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_21\">\n <g id=\"line2d_75\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"70.191258\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_22\">\n <g id=\"line2d_76\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"68.012865\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_23\">\n <g id=\"line2d_77\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"66.091386\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_24\">\n <g id=\"line2d_78\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"53.064758\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_25\">\n <g id=\"line2d_79\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"46.450116\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_26\">\n <g id=\"line2d_80\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"41.756953\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_27\">\n <g id=\"line2d_81\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"38.116652\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_28\">\n <g id=\"line2d_82\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"35.14231\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_29\">\n <g id=\"line2d_83\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"32.62754\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_30\">\n <g id=\"line2d_84\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"30.449147\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_31\">\n <g id=\"line2d_85\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"28.527668\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_32\">\n <g id=\"line2d_86\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"15.501041\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_33\">\n <g id=\"line2d_87\">\n <g>\n <use xlink:href=\"#m2fb529a583\" x=\"45.478125\" y=\"8.886398\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.6\"/>\n </g>\n </g>\n </g>\n <g id=\"text_11\">\n <!-- frequency: n(x) -->\n <g style=\"fill: #ffffff\" transform=\"translate(14.798438 114.517188) rotate(-90) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-66\" d=\"M 2375 4863 \nL 2375 4384 \nL 1825 4384 \nQ 1516 4384 1395 4259 \nQ 1275 4134 1275 3809 \nL 1275 3500 \nL 2222 3500 \nL 2222 3053 \nL 1275 3053 \nL 1275 0 \nL 697 0 \nL 697 3053 \nL 147 3053 \nL 147 3500 \nL 697 3500 \nL 697 3744 \nQ 697 4328 969 4595 \nQ 1241 4863 1831 4863 \nL 2375 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-72\" d=\"M 2631 2963 \nQ 2534 3019 2420 3045 \nQ 2306 3072 2169 3072 \nQ 1681 3072 1420 2755 \nQ 1159 2438 1159 1844 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1341 3275 1631 3429 \nQ 1922 3584 2338 3584 \nQ 2397 3584 2469 3576 \nQ 2541 3569 2628 3553 \nL 2631 2963 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-71\" d=\"M 947 1747 \nQ 947 1113 1208 752 \nQ 1469 391 1925 391 \nQ 2381 391 2643 752 \nQ 2906 1113 2906 1747 \nQ 2906 2381 2643 2742 \nQ 2381 3103 1925 3103 \nQ 1469 3103 1208 2742 \nQ 947 2381 947 1747 \nz\nM 2906 525 \nQ 2725 213 2448 61 \nQ 2172 -91 1784 -91 \nQ 1150 -91 751 415 \nQ 353 922 353 1747 \nQ 353 2572 751 3078 \nQ 1150 3584 1784 3584 \nQ 2172 3584 2448 3432 \nQ 2725 3281 2906 2969 \nL 2906 3500 \nL 3481 3500 \nL 3481 -1331 \nL 2906 -1331 \nL 2906 525 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-75\" d=\"M 544 1381 \nL 544 3500 \nL 1119 3500 \nL 1119 1403 \nQ 1119 906 1312 657 \nQ 1506 409 1894 409 \nQ 2359 409 2629 706 \nQ 2900 1003 2900 1516 \nL 2900 3500 \nL 3475 3500 \nL 3475 0 \nL 2900 0 \nL 2900 538 \nQ 2691 219 2414 64 \nQ 2138 -91 1772 -91 \nQ 1169 -91 856 284 \nQ 544 659 544 1381 \nz\nM 1991 3584 \nL 1991 3584 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-63\" d=\"M 3122 3366 \nL 3122 2828 \nQ 2878 2963 2633 3030 \nQ 2388 3097 2138 3097 \nQ 1578 3097 1268 2742 \nQ 959 2388 959 1747 \nQ 959 1106 1268 751 \nQ 1578 397 2138 397 \nQ 2388 397 2633 464 \nQ 2878 531 3122 666 \nL 3122 134 \nQ 2881 22 2623 -34 \nQ 2366 -91 2075 -91 \nQ 1284 -91 818 406 \nQ 353 903 353 1747 \nQ 353 2603 823 3093 \nQ 1294 3584 2113 3584 \nQ 2378 3584 2631 3529 \nQ 2884 3475 3122 3366 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-79\" d=\"M 2059 -325 \nQ 1816 -950 1584 -1140 \nQ 1353 -1331 966 -1331 \nL 506 -1331 \nL 506 -850 \nL 844 -850 \nQ 1081 -850 1212 -737 \nQ 1344 -625 1503 -206 \nL 1606 56 \nL 191 3500 \nL 800 3500 \nL 1894 763 \nL 2988 3500 \nL 3597 3500 \nL 2059 -325 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-28\" d=\"M 1984 4856 \nQ 1566 4138 1362 3434 \nQ 1159 2731 1159 2009 \nQ 1159 1288 1364 580 \nQ 1569 -128 1984 -844 \nL 1484 -844 \nQ 1016 -109 783 600 \nQ 550 1309 550 2009 \nQ 550 2706 781 3412 \nQ 1013 4119 1484 4856 \nL 1984 4856 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-29\" d=\"M 513 4856 \nL 1013 4856 \nQ 1481 4119 1714 3412 \nQ 1947 2706 1947 2009 \nQ 1947 1309 1714 600 \nQ 1481 -109 1013 -844 \nL 513 -844 \nQ 928 -128 1133 580 \nQ 1338 1288 1338 2009 \nQ 1338 2731 1133 3434 \nQ 928 4138 513 4856 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-66\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"35.205078\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"74.068359\"/>\n <use xlink:href=\"#DejaVuSans-71\" x=\"135.591797\"/>\n <use xlink:href=\"#DejaVuSans-75\" x=\"199.068359\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"262.447266\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"323.970703\"/>\n <use xlink:href=\"#DejaVuSans-63\" x=\"387.349609\"/>\n <use xlink:href=\"#DejaVuSans-79\" x=\"442.330078\"/>\n <use xlink:href=\"#DejaVuSans-3a\" x=\"494.259766\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"527.951172\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"559.738281\"/>\n <use xlink:href=\"#DejaVuSans-28\" x=\"623.117188\"/>\n <use xlink:href=\"#DejaVuSans-78\" x=\"662.130859\"/>\n <use xlink:href=\"#DejaVuSans-29\" x=\"721.310547\"/>\n </g>\n </g>\n </g>\n <g id=\"line2d_88\">\n <path d=\"M -1 22.934991 \nL 54.355398 22.948175 \nL 66.297697 23.233932 \nL 73.283494 24.458034 \nL 78.239996 30.126092 \nL 82.084558 32.744485 \nL 85.225793 36.502574 \nL 87.88167 36.830949 \nL 90.182295 40.091237 \nL 94.026857 40.3137 \nL 95.668965 43.749961 \nL 97.168092 47.517487 \nL 98.547156 48.168938 \nL 101.012654 51.43591 \nL 102.124594 51.809238 \nL 103.169102 52.741704 \nL 104.15389 53.064758 \nL 105.085419 56.910265 \nL 105.969156 57.541843 \nL 106.809766 59.236831 \nL 107.611264 59.236831 \nL 108.377128 59.598035 \nL 109.110391 60.218404 \nL 109.813718 60.473311 \nL 110.489455 60.995394 \nL 111.139687 61.128568 \nL 112.37086 61.128568 \nL 113.519892 61.672409 \nL 114.066893 62.235006 \nL 114.597061 62.235006 \nL 115.111401 62.378741 \nL 115.61083 62.378741 \nL 116.096189 62.523752 \nL 116.568248 63.421982 \nL 117.027718 63.576615 \nL 117.475252 63.89035 \nL 117.911455 65.381982 \nL 118.752065 65.732828 \nL 119.157475 65.732828 \nL 119.553563 65.911122 \nL 119.94075 66.273664 \nL 121.407942 67.023852 \nL 122.097198 67.023852 \nL 122.431754 67.216916 \nL 122.759937 67.216916 \nL 123.081986 67.610036 \nL 123.708567 68.636395 \nL 124.013515 69.065728 \nL 124.313159 69.284707 \nL 124.897252 69.284707 \nL 126.009193 70.191258 \nL 126.53936 70.191258 \nL 126.798449 70.425992 \nL 127.553129 72.436374 \nL 128.038488 72.980215 \nL 128.276134 72.980215 \nL 128.510547 73.542812 \nL 128.970017 73.542812 \nL 129.417551 74.42485 \nL 129.637033 74.42485 \nL 130.898262 76.009951 \nL 131.690544 76.009951 \nL 131.883049 76.346328 \nL 132.073428 76.346328 \nL 132.261726 76.689788 \nL 132.447988 76.689788 \nL 132.632259 77.040634 \nL 133.173531 77.040634 \nL 133.350241 77.399192 \nL 133.525158 77.399192 \nL 133.869751 78.140852 \nL 134.207587 78.140852 \nL 134.374053 78.524722 \nL 134.538926 78.524722 \nL 134.864013 79.32067 \nL 135.340424 79.32067 \nL 135.650867 80.157455 \nL 135.804015 80.157455 \nL 135.955814 80.592513 \nL 136.54998 80.592513 \nL 136.695374 81.039492 \nL 137.40449 81.039492 \nL 137.542877 81.499064 \nL 138.085571 81.499064 \nL 138.218615 81.971958 \nL 138.868847 81.971958 \nL 138.995999 82.458971 \nL 139.247523 82.458971 \nL 139.371922 82.960971 \nL 139.860723 82.960971 \nL 139.980787 83.47891 \nL 140.218433 83.47891 \nL 140.336039 84.013834 \nL 140.568868 84.013834 \nL 140.684113 84.566894 \nL 140.798592 84.566894 \nL 141.025294 85.139364 \nL 141.469941 85.139364 \nL 141.688034 85.732655 \nL 142.010082 85.732655 \nL 142.221485 86.34834 \nL 142.738914 86.34834 \nL 142.941611 86.988176 \nL 143.141952 86.988176 \nL 143.33999 87.654134 \nL 143.632843 87.654134 \nL 143.825349 88.34844 \nL 144.204025 88.34844 \nL 144.390288 89.073613 \nL 145.204412 89.073613 \nL 145.380221 89.832527 \nL 145.981796 89.832527 \nL 146.149886 90.628476 \nL 147.046164 90.628476 \nL 147.204231 91.46526 \nL 147.898113 91.46526 \nL 148.048587 92.347298 \nL 148.271861 92.347298 \nL 148.419119 93.279764 \nL 148.924831 93.279764 \nL 149.066635 94.268777 \nL 150.160914 94.268777 \nL 150.292938 95.32164 \nL 150.938298 95.32164 \nL 151.064519 96.44717 \nL 151.803022 96.44717 \nL 151.923086 97.656146 \nL 153.246839 97.656146 \nL 153.41224 98.96194 \nL 154.163784 98.96194 \nL 154.320651 100.381419 \nL 155.767648 100.381419 \nL 155.910629 101.936282 \nL 157.496553 101.936282 \nL 157.625933 103.655104 \nL 159.107149 103.655104 \nL 159.225022 105.576583 \nL 161.427476 105.576583 \nL 161.56476 107.754976 \nL 164.103032 107.754976 \nL 164.220637 110.269746 \nL 166.674411 110.269746 \nL 166.801003 113.244088 \nL 170.013563 113.244088 \nL 170.138714 116.884388 \nL 174.078613 116.884388 \nL 174.193969 121.577552 \nL 179.386992 121.577552 \nL 179.508069 128.192194 \nL 186.804739 128.192194 \nL 186.922828 139.5 \nL 199.579747 139.5 \nL 199.579747 139.5 \n\" clip-path=\"url(#p335112cbd0)\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_89\">\n <path d=\"M -1 55.798556 \nL 54.355398 55.812292 \nL 73.283494 62.523752 \nL 78.239996 62.966686 \nL 82.084558 64.04951 \nL 85.225793 64.536523 \nL 87.88167 67.023852 \nL 90.182295 68.425892 \nL 92.21159 69.506666 \nL 94.026857 70.664152 \nL 95.668965 70.905841 \nL 97.168092 72.171104 \nL 98.547156 72.436374 \nL 99.823969 72.436374 \nL 101.012654 72.706028 \nL 102.124594 75.357316 \nL 103.169102 75.357316 \nL 104.15389 76.009951 \nL 105.085419 76.009951 \nL 105.969156 76.689788 \nL 106.809766 76.689788 \nL 108.377128 77.399192 \nL 109.813718 77.399192 \nL 110.489455 77.765807 \nL 111.139687 77.765807 \nL 111.766268 78.917842 \nL 112.37086 79.32067 \nL 112.954953 79.32067 \nL 113.519892 79.733698 \nL 115.111401 79.733698 \nL 115.61083 80.592513 \nL 116.096189 81.039492 \nL 117.027718 81.039492 \nL 117.475252 81.971958 \nL 118.336886 81.971958 \nL 118.752065 82.960971 \nL 119.157475 82.960971 \nL 119.94075 84.013834 \nL 121.052691 84.013834 \nL 121.756017 85.139364 \nL 122.431754 85.139364 \nL 122.759937 85.732655 \nL 123.708567 85.732655 \nL 124.013515 86.34834 \nL 124.607681 86.34834 \nL 124.897252 86.988176 \nL 125.462191 86.988176 \nL 125.737863 87.654134 \nL 126.53936 87.654134 \nL 126.798449 88.34844 \nL 127.553129 88.34844 \nL 127.797518 89.073613 \nL 129.637033 89.073613 \nL 129.853754 89.832527 \nL 130.898262 89.832527 \nL 131.099774 90.628476 \nL 131.495862 90.628476 \nL 131.690544 91.46526 \nL 133.173531 91.46526 \nL 133.350241 92.347298 \nL 134.538926 92.347298 \nL 134.702236 93.279764 \nL 135.18308 93.279764 \nL 135.340424 94.268777 \nL 137.542877 94.268777 \nL 137.680162 95.32164 \nL 139.980787 95.32164 \nL 140.10002 96.44717 \nL 141.796053 96.44717 \nL 142.010082 97.656146 \nL 143.535777 97.656146 \nL 143.729364 98.96194 \nL 145.292541 98.96194 \nL 145.467457 100.381419 \nL 147.438644 100.381419 \nL 147.593166 101.936282 \nL 150.489097 101.936282 \nL 150.61864 103.655104 \nL 152.854615 103.655104 \nL 152.967594 105.576583 \nL 156.099442 105.576583 \nL 156.239707 107.754976 \nL 159.458377 107.754976 \nL 159.57388 110.269746 \nL 163.225504 110.269746 \nL 163.349233 113.244088 \nL 167.82918 113.244088 \nL 167.947593 116.884388 \nL 174.128146 116.884388 \nL 174.243171 121.577552 \nL 182.205262 121.577552 \nL 182.318375 128.192194 \nL 195.477351 128.192194 \nL 195.591578 139.5 \nL 225.183092 139.5 \nL 225.183092 139.5 \n\" clip-path=\"url(#p335112cbd0)\" style=\"fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #bf00bf; stroke-width: 1.5\"/>\n </g>\n <g id=\"line2d_90\">\n <path d=\"M -1 83.998438 \nL 54.355398 84.013834 \nL 66.297697 87.654134 \nL 73.283494 94.268777 \nL 78.239996 95.32164 \nL 82.084558 95.32164 \nL 85.225793 96.44717 \nL 87.88167 96.44717 \nL 90.182295 97.656146 \nL 92.21159 97.656146 \nL 94.026857 98.96194 \nL 98.547156 98.96194 \nL 99.823969 100.381419 \nL 105.969156 100.381419 \nL 106.809766 101.936282 \nL 109.813718 101.936282 \nL 110.489455 103.655104 \nL 114.066893 103.655104 \nL 114.597061 105.576583 \nL 121.052691 105.576583 \nL 121.407942 107.754976 \nL 126.276316 107.754976 \nL 126.53936 110.269746 \nL 132.632259 110.269746 \nL 132.814579 113.244088 \nL 140.568868 113.244088 \nL 140.684113 116.884388 \nL 148.271861 116.884388 \nL 148.419119 121.577552 \nL 160.652212 121.577552 \nL 160.795788 128.192194 \nL 181.787567 128.192194 \nL 181.903446 139.5 \nL 231.900852 139.5 \nL 231.900852 139.5 \n\" clip-path=\"url(#p335112cbd0)\" style=\"fill: none; stroke-dasharray: 9.6,2.4,1.5,2.4; stroke-dashoffset: 0; stroke: #008000; stroke-width: 1.5\"/>\n </g>\n <g id=\"patch_3\">\n <path d=\"M 45.478125 145.8 \nL 45.478125 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_4\">\n <path d=\"M 240.778125 145.8 \nL 240.778125 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_5\">\n <path d=\"M 45.478125 145.8 \nL 240.778125 145.8 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_6\">\n <path d=\"M 45.478125 7.2 \nL 240.778125 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"legend_1\">\n <g id=\"patch_7\">\n <path d=\"M 159.996875 59.234375 \nL 233.778125 59.234375 \nQ 235.778125 59.234375 235.778125 57.234375 \nL 235.778125 14.2 \nQ 235.778125 12.2 233.778125 12.2 \nL 159.996875 12.2 \nQ 157.996875 12.2 157.996875 14.2 \nL 157.996875 57.234375 \nQ 157.996875 59.234375 159.996875 59.234375 \nz\n\" style=\"opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n </g>\n <g id=\"line2d_91\">\n <path d=\"M 161.996875 20.298438 \nL 171.996875 20.298438 \nL 181.996875 20.298438 \n\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"text_12\">\n <!-- unigram -->\n <g style=\"fill: #ffffff\" transform=\"translate(189.996875 23.798438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-69\" d=\"M 603 3500 \nL 1178 3500 \nL 1178 0 \nL 603 0 \nL 603 3500 \nz\nM 603 4863 \nL 1178 4863 \nL 1178 4134 \nL 603 4134 \nL 603 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-67\" d=\"M 2906 1791 \nQ 2906 2416 2648 2759 \nQ 2391 3103 1925 3103 \nQ 1463 3103 1205 2759 \nQ 947 2416 947 1791 \nQ 947 1169 1205 825 \nQ 1463 481 1925 481 \nQ 2391 481 2648 825 \nQ 2906 1169 2906 1791 \nz\nM 3481 434 \nQ 3481 -459 3084 -895 \nQ 2688 -1331 1869 -1331 \nQ 1566 -1331 1297 -1286 \nQ 1028 -1241 775 -1147 \nL 775 -588 \nQ 1028 -725 1275 -790 \nQ 1522 -856 1778 -856 \nQ 2344 -856 2625 -561 \nQ 2906 -266 2906 331 \nL 2906 616 \nQ 2728 306 2450 153 \nQ 2172 0 1784 0 \nQ 1141 0 747 490 \nQ 353 981 353 1791 \nQ 353 2603 747 3093 \nQ 1141 3584 1784 3584 \nQ 2172 3584 2450 3431 \nQ 2728 3278 2906 2969 \nL 2906 3500 \nL 3481 3500 \nL 3481 434 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-61\" d=\"M 2194 1759 \nQ 1497 1759 1228 1600 \nQ 959 1441 959 1056 \nQ 959 750 1161 570 \nQ 1363 391 1709 391 \nQ 2188 391 2477 730 \nQ 2766 1069 2766 1631 \nL 2766 1759 \nL 2194 1759 \nz\nM 3341 1997 \nL 3341 0 \nL 2766 0 \nL 2766 531 \nQ 2569 213 2275 61 \nQ 1981 -91 1556 -91 \nQ 1019 -91 701 211 \nQ 384 513 384 1019 \nQ 384 1609 779 1909 \nQ 1175 2209 1959 2209 \nL 2766 2209 \nL 2766 2266 \nQ 2766 2663 2505 2880 \nQ 2244 3097 1772 3097 \nQ 1472 3097 1187 3025 \nQ 903 2953 641 2809 \nL 641 3341 \nQ 956 3463 1253 3523 \nQ 1550 3584 1831 3584 \nQ 2591 3584 2966 3190 \nQ 3341 2797 3341 1997 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6d\" d=\"M 3328 2828 \nQ 3544 3216 3844 3400 \nQ 4144 3584 4550 3584 \nQ 5097 3584 5394 3201 \nQ 5691 2819 5691 2113 \nL 5691 0 \nL 5113 0 \nL 5113 2094 \nQ 5113 2597 4934 2840 \nQ 4756 3084 4391 3084 \nQ 3944 3084 3684 2787 \nQ 3425 2491 3425 1978 \nL 3425 0 \nL 2847 0 \nL 2847 2094 \nQ 2847 2600 2669 2842 \nQ 2491 3084 2119 3084 \nQ 1678 3084 1418 2786 \nQ 1159 2488 1159 1978 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1356 3278 1631 3431 \nQ 1906 3584 2284 3584 \nQ 2666 3584 2933 3390 \nQ 3200 3197 3328 2828 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-75\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"63.378906\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"126.757812\"/>\n <use xlink:href=\"#DejaVuSans-67\" x=\"154.541016\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"218.017578\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"259.130859\"/>\n <use xlink:href=\"#DejaVuSans-6d\" x=\"320.410156\"/>\n </g>\n </g>\n <g id=\"line2d_92\">\n <path d=\"M 161.996875 34.976563 \nL 171.996875 34.976563 \nL 181.996875 34.976563 \n\" style=\"fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #bf00bf; stroke-width: 1.5\"/>\n </g>\n <g id=\"text_13\">\n <!-- bigram -->\n <g style=\"fill: #ffffff\" transform=\"translate(189.996875 38.476563) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-62\" d=\"M 3116 1747 \nQ 3116 2381 2855 2742 \nQ 2594 3103 2138 3103 \nQ 1681 3103 1420 2742 \nQ 1159 2381 1159 1747 \nQ 1159 1113 1420 752 \nQ 1681 391 2138 391 \nQ 2594 391 2855 752 \nQ 3116 1113 3116 1747 \nz\nM 1159 2969 \nQ 1341 3281 1617 3432 \nQ 1894 3584 2278 3584 \nQ 2916 3584 3314 3078 \nQ 3713 2572 3713 1747 \nQ 3713 922 3314 415 \nQ 2916 -91 2278 -91 \nQ 1894 -91 1617 61 \nQ 1341 213 1159 525 \nL 1159 0 \nL 581 0 \nL 581 4863 \nL 1159 4863 \nL 1159 2969 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-62\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"63.476562\"/>\n <use xlink:href=\"#DejaVuSans-67\" x=\"91.259766\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"154.736328\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"195.849609\"/>\n <use xlink:href=\"#DejaVuSans-6d\" x=\"257.128906\"/>\n </g>\n </g>\n <g id=\"line2d_93\">\n <path d=\"M 161.996875 49.654688 \nL 171.996875 49.654688 \nL 181.996875 49.654688 \n\" style=\"fill: none; stroke-dasharray: 9.6,2.4,1.5,2.4; stroke-dashoffset: 0; stroke: #008000; stroke-width: 1.5\"/>\n </g>\n <g id=\"text_14\">\n <!-- trigram -->\n <g style=\"fill: #ffffff\" transform=\"translate(189.996875 53.154688) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"80.322266\"/>\n <use xlink:href=\"#DejaVuSans-67\" x=\"108.105469\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"171.582031\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"212.695312\"/>\n <use xlink:href=\"#DejaVuSans-6d\" x=\"273.974609\"/>\n </g>\n </g>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"p335112cbd0\">\n <rect x=\"45.478125\" y=\"7.2\" width=\"195.3\" height=\"138.6\"/>\n </clipPath>\n </defs>\n</svg>\n"
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
}
],
"execution_count": 102
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:40.090429874Z",
"start_time": "2026-03-29T09:05:40.040896926Z"
}
},
"cell_type": "code",
"source": [
"import random\n",
"def seq_data_iter_random(corpus, batch_size, num_steps): #@save\n",
" \"\"\"使用随机抽样生成一个小批量子序列\"\"\"\n",
" # 从随机偏移量开始对序列进行分区随机范围包括num_steps-1\n",
" corpus = corpus[random.randint(0, num_steps - 1):]\n",
" # 减去1是因为我们需要考虑标签\n",
" num_subseqs = (len(corpus) - 1) // num_steps\n",
" # 长度为num_steps的子序列的起始索引\n",
" initial_indices = list(range(0, num_subseqs * num_steps, num_steps))\n",
" # 在随机抽样的迭代过程中,\n",
" # 来自两个相邻的、随机的、小批量中的子序列不一定在原始序列上相邻\n",
" random.shuffle(initial_indices)\n",
" def data(pos):\n",
" # 返回从pos位置开始的长度为num_steps的序列\n",
" return corpus[pos: pos + num_steps]\n",
" num_batches = num_subseqs // batch_size\n",
" for i in range(0, batch_size * num_batches, batch_size):\n",
" # 在这里initial_indices包含子序列的随机起始索引\n",
" initial_indices_per_batch = initial_indices[i: i + batch_size]\n",
" X = [data(j) for j in initial_indices_per_batch]\n",
" Y = [data(j + 1) for j in initial_indices_per_batch]\n",
" yield torch.tensor(X), torch.tensor(Y)"
],
"id": "fd015793938b83ab",
"outputs": [],
"execution_count": 103
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:40.149638908Z",
"start_time": "2026-03-29T09:05:40.092265248Z"
}
},
"cell_type": "code",
"source": [
"my_seq = list(range(35))\n",
"for X, Y in seq_data_iter_random(my_seq, batch_size=2, num_steps=5):\n",
" print('X: ', X, '\\nY:', Y)"
],
"id": "8961f4934b8c7cc",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"X: tensor([[26, 27, 28, 29, 30],\n",
" [21, 22, 23, 24, 25]]) \n",
"Y: tensor([[27, 28, 29, 30, 31],\n",
" [22, 23, 24, 25, 26]])\n",
"X: tensor([[11, 12, 13, 14, 15],\n",
" [ 1, 2, 3, 4, 5]]) \n",
"Y: tensor([[12, 13, 14, 15, 16],\n",
" [ 2, 3, 4, 5, 6]])\n",
"X: tensor([[ 6, 7, 8, 9, 10],\n",
" [16, 17, 18, 19, 20]]) \n",
"Y: tensor([[ 7, 8, 9, 10, 11],\n",
" [17, 18, 19, 20, 21]])\n"
]
}
],
"execution_count": 104
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:40.215887628Z",
"start_time": "2026-03-29T09:05:40.163501969Z"
}
},
"cell_type": "code",
"source": [
"def seq_data_iter_sequential(corpus, batch_size, num_steps): #@save\n",
" \"\"\"使用顺序分区生成一个小批量子序列\"\"\"\n",
" # 从随机偏移量开始划分序列\n",
" offset = random.randint(0, num_steps)\n",
" num_tokens = ((len(corpus) - offset - 1) // batch_size) * batch_size\n",
" Xs = torch.tensor(corpus[offset: offset + num_tokens])\n",
" Ys = torch.tensor(corpus[offset + 1: offset + 1 + num_tokens])\n",
" Xs, Ys = Xs.reshape(batch_size, -1), Ys.reshape(batch_size, -1)\n",
" num_batches = Xs.shape[1] // num_steps\n",
" for i in range(0, num_steps * num_batches, num_steps):\n",
" X = Xs[:, i: i + num_steps]\n",
" Y = Ys[:, i: i + num_steps]\n",
" yield X, Y"
],
"id": "621b66c0614b22da",
"outputs": [],
"execution_count": 105
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:40.267211418Z",
"start_time": "2026-03-29T09:05:40.217997368Z"
}
},
"cell_type": "code",
"source": [
"class SeqDataLoader:\n",
" \"\"\"加载序列数据的迭代器\"\"\"\n",
" def __init__(self, batch_size, num_steps, use_random_iter, max_tokens):\n",
" if use_random_iter:\n",
" self.data_iter_fn = seq_data_iter_random\n",
" else:\n",
" self.data_iter_fn = seq_data_iter_sequential\n",
" self.corpus, self.vocab = load_corpus_time_machine(max_tokens)\n",
" self.batch_size, self.num_steps = batch_size, num_steps\n",
" def __iter__(self):\n",
" return self.data_iter_fn(self.corpus, self.batch_size, self.num_steps)\n",
"def load_data_time_machine(batch_size, num_steps, #@save\n",
" use_random_iter=False, max_tokens=10000):\n",
" \"\"\"返回时光机器数据集的迭代器和词表\"\"\"\n",
" data_iter = SeqDataLoader(\n",
" batch_size, num_steps, use_random_iter, max_tokens)\n",
" return data_iter, data_iter.vocab"
],
"id": "f09fe2507a925fe9",
"outputs": [],
"execution_count": 106
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:40.327565785Z",
"start_time": "2026-03-29T09:05:40.269141766Z"
}
},
"cell_type": "code",
"source": [
"batch_size, num_steps = 32, 35\n",
"train_iter, vocab = load_data_time_machine(batch_size, num_steps)"
],
"id": "69272a664d3b9ae1",
"outputs": [],
"execution_count": 107
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:40.390353470Z",
"start_time": "2026-03-29T09:05:40.335766683Z"
}
},
"cell_type": "code",
"source": "F.one_hot(torch.tensor([0,2]),len(vocab))",
"id": "35806d36e5ec3ca7",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0],\n",
" [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0]])"
]
},
"execution_count": 108,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 108
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:40.545044245Z",
"start_time": "2026-03-29T09:05:40.446941053Z"
}
},
"cell_type": "code",
"source": [
"X = torch.arange(10).reshape((2, 5))\n",
"F.one_hot(X.T, 28).shape"
],
"id": "6a4695284b898013",
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([5, 2, 28])"
]
},
"execution_count": 109,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 109
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:40.636340487Z",
"start_time": "2026-03-29T09:05:40.574500540Z"
}
},
"cell_type": "code",
"source": [
"def get_params(vocab_size, num_hiddens, device):\n",
" num_inputs = num_outputs = vocab_size\n",
" def normal(shape):\n",
" return torch.randn(size=shape, device=device) * 0.01\n",
" # 隐藏层参数\n",
" W_xh = normal((num_inputs, num_hiddens))\n",
" W_hh = normal((num_hiddens, num_hiddens))\n",
" b_h = torch.zeros(num_hiddens, device=device)\n",
" # 输出层参数\n",
" W_hq = normal((num_hiddens, num_outputs))\n",
" b_q = torch.zeros(num_outputs, device=device)\n",
" # 附加梯度\n",
" params = [W_xh, W_hh, b_h, W_hq, b_q]\n",
" '''\n",
" W_xh x->H_t\n",
" W_hh H_t-1->H_t\n",
" W_hq H_t->opt\n",
" '''\n",
" for param in params:\n",
" param.requires_grad_(True)\n",
" return params\n",
"def init_rnn_state(batch_size, num_hiddens, device):\n",
" return (torch.zeros((batch_size, num_hiddens), device=device), )\n",
"def rnn(inputs,state,params):\n",
" W_xh,W_hh,b_h,W_hq,b_q = params\n",
" H, = state\n",
" outputs = []\n",
" for X in inputs: # X (batchs,vocab)\n",
" H = torch.tanh(torch.mm(X,W_xh)+torch.mm(H,W_hh)+b_h)\n",
" Y = torch.mm(H,W_hq)+b_q\n",
" outputs.append(Y)\n",
" return torch.cat(outputs,dim=0),(H,)\n",
"class RNNModelScratch: #@save\n",
" \"\"\"从零开始实现的循环神经网络模型\"\"\"\n",
" def __init__(self, vocab_size, num_hiddens, device,\n",
" get_params, init_state, forward_fn):\n",
" self.vocab_size, self.num_hiddens = vocab_size, num_hiddens\n",
" self.params = get_params(vocab_size, num_hiddens, device)\n",
" self.init_state, self.forward_fn = init_state, forward_fn\n",
" def __call__(self, X, state):\n",
" X = F.one_hot(X.T, self.vocab_size).type(torch.float32)\n",
" return self.forward_fn(X, state, self.params)\n",
" def begin_state(self, batch_size, device):\n",
" return self.init_state(batch_size, self.num_hiddens, device)"
],
"id": "405f7c6af8bdd939",
"outputs": [],
"execution_count": 110
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:40.714678739Z",
"start_time": "2026-03-29T09:05:40.640615581Z"
}
},
"cell_type": "code",
"source": [
"num_hiddens = 512\n",
"net = RNNModelScratch(len(vocab), num_hiddens, d2l.try_gpu(), get_params,\n",
"init_rnn_state, rnn)\n",
"state = net.begin_state(X.shape[0], d2l.try_gpu())\n",
"Y, new_state = net(X.to(d2l.try_gpu()), state)\n",
"Y.shape, len(new_state), new_state[0].shape"
],
"id": "7bdd0b37b1458ec2",
"outputs": [
{
"data": {
"text/plain": [
"(torch.Size([10, 28]), 1, torch.Size([2, 512]))"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 111
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:40.933485442Z",
"start_time": "2026-03-29T09:05:40.715946914Z"
}
},
"cell_type": "code",
"source": [
"def predict_ch8(prefix, num_preds, net, vocab, device): #@save\n",
" \"\"\"在prefix后面生成新字符\"\"\"\n",
" state = net.begin_state(batch_size=1, device=device)\n",
" outputs = [vocab[prefix[0]]]\n",
" get_input = lambda: torch.tensor([outputs[-1]], device=device).reshape((1, 1))\n",
" for y in prefix[1:]: # 预热期\n",
" _, state = net(get_input(), state)\n",
" outputs.append(vocab[y])\n",
" for _ in range(num_preds): # 预测num_preds步\n",
" y, state = net(get_input(), state)\n",
" outputs.append(int(y.argmax(dim=1).reshape(1)))\n",
" return ''.join([vocab.idx_to_token[i] for i in outputs])\n",
"predict_ch8('time traveller ', 10, net, vocab, d2l.try_gpu())"
],
"id": "f38dbe2b11e02bc2",
"outputs": [
{
"data": {
"text/plain": [
"'time traveller qxyumumumu'"
]
},
"execution_count": 112,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 112
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:40.987574570Z",
"start_time": "2026-03-29T09:05:40.936566018Z"
}
},
"cell_type": "code",
"source": [
"def grad_clipping(net, theta): #@save\n",
" \"\"\"裁剪梯度\"\"\"\n",
" if isinstance(net, nn.Module):\n",
" params = [p for p in net.parameters() if p.requires_grad]\n",
" else:\n",
" params = net.params\n",
" norm = torch.sqrt(sum(torch.sum((p.grad ** 2)) for p in params))\n",
" if norm > theta:\n",
" for param in params:\n",
" param.grad[:] *= theta / norm"
],
"id": "6c19717736ffbc68",
"outputs": [],
"execution_count": 113
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:41.038078698Z",
"start_time": "2026-03-29T09:05:40.989835785Z"
}
},
"cell_type": "code",
"source": [
"import math\n",
"def train_epoch_ch8(net, train_iter, loss, updater, device, use_random_iter):\n",
" \"\"\"训练网络一个迭代周期定义见第8章\"\"\"\n",
" state, timer = None, d2l.Timer()\n",
" metric = d2l.Accumulator(2) # 训练损失之和,词元数量\n",
" for X, Y in train_iter:\n",
" if state is None or use_random_iter:\n",
" # 在第一次迭代或使用随机抽样时初始化state\n",
" state = net.begin_state(batch_size=X.shape[0], device=device)\n",
" else:\n",
" if isinstance(net, nn.Module) and not isinstance(state, tuple):\n",
" # state对于nn.GRU是个张量\n",
" state.detach_()\n",
" else:\n",
" # state对于nn.LSTM或对于我们从零开始实现的模型是个张量\n",
" for s in state:\n",
" s.detach_()\n",
" y = Y.T.reshape(-1)\n",
" X, y = X.to(device), y.to(device)\n",
" y_hat, state = net(X, state)\n",
" l = loss(y_hat, y.long()).mean()\n",
" if isinstance(updater, torch.optim.Optimizer):\n",
" updater.zero_grad()\n",
" l.backward()\n",
" grad_clipping(net, 1)\n",
" updater.step()\n",
" else:\n",
" l.backward()\n",
" grad_clipping(net, 1)\n",
" # 因为已经调用了mean函数\n",
" updater(batch_size=1)\n",
" metric.add(l * y.numel(), y.numel())\n",
" return math.exp(metric[0]/metric[1]),metric[1]/timer.stop()\n"
],
"id": "37ef611dedcb714b",
"outputs": [],
"execution_count": 114
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:41.089234437Z",
"start_time": "2026-03-29T09:05:41.040415821Z"
}
},
"cell_type": "code",
"source": [
"def train_ch8(net, train_iter, vocab, lr, num_epochs, device,\n",
"use_random_iter=False):\n",
" \"\"\"训练模型定义见第8章\"\"\"\n",
" loss = nn.CrossEntropyLoss()\n",
" animator = d2l.Animator(xlabel='epoch', ylabel='perplexity',\n",
" legend=['train'], xlim=[10, num_epochs])\n",
" # 初始化\n",
" if isinstance(net, nn.Module):\n",
" updater = torch.optim.SGD(net.parameters(), lr)\n",
" else:\n",
" updater = lambda batch_size: d2l.sgd(net.params, lr, batch_size)\n",
" predict = lambda prefix: predict_ch8(prefix, 50, net, vocab, device)\n",
" # 训练和预测\n",
" for epoch in range(num_epochs):\n",
" ppl, speed = train_epoch_ch8(\n",
" net, train_iter, loss, updater, device, use_random_iter)\n",
" if (epoch + 1) % 10 == 0:\n",
" print(predict('time traveller'))\n",
" animator.add(epoch + 1, [ppl])\n",
" print(f'困惑度 {ppl:.1f}, {speed:.1f} 词元/秒 {str(device)}')\n",
" print(predict('time traveller'))\n",
" print(predict('traveller'))"
],
"id": "c96b60b55664378a",
"outputs": [],
"execution_count": 115
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:41.147914921Z",
"start_time": "2026-03-29T09:05:41.099546332Z"
}
},
"cell_type": "code",
"source": [
"num_epochs, lr = 500, 1\n",
"#train_ch8(net, train_iter, vocab, lr, num_epochs, d2l.try_gpu())"
],
"id": "ab4a2fbf4dfd21ef",
"outputs": [],
"execution_count": 116
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:41.196189157Z",
"start_time": "2026-03-29T09:05:41.149680280Z"
}
},
"cell_type": "code",
"source": [
"batch_size, num_steps = 32, 35\n",
"train_iter, vocab = load_data_time_machine(batch_size, num_steps)"
],
"id": "74d672745751714",
"outputs": [],
"execution_count": 117
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:41.583876478Z",
"start_time": "2026-03-29T09:05:41.197696611Z"
}
},
"cell_type": "code",
"source": [
"num_hiddens = 256\n",
"rnn_layer = nn.RNN(len(vocab), num_hiddens)\n",
"state = torch.zeros((1,batch_size,num_hiddens))\n",
"X = torch.rand(size=(num_steps, batch_size, len(vocab)))\n",
"Y, state_new = rnn_layer(X, state)\n",
"Y.shape, state_new.shape"
],
"id": "9694c029c9e657e8",
"outputs": [
{
"data": {
"text/plain": [
"(torch.Size([35, 32, 256]), torch.Size([1, 32, 256]))"
]
},
"execution_count": 118,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 118
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:41.638041580Z",
"start_time": "2026-03-29T09:05:41.586864085Z"
}
},
"cell_type": "code",
"source": [
"class RNNModel(nn.Module):\n",
" \"\"\"循环神经网络模型\"\"\"\n",
" def __init__(self, rnn_layer, vocab_size, **kwargs):\n",
" super(RNNModel, self).__init__(**kwargs)\n",
" self.rnn = rnn_layer\n",
" self.vocab_size = vocab_size\n",
" self.num_hiddens = self.rnn.hidden_size\n",
" # 如果RNN是双向的之后将介绍num_directions应该是2否则应该是1\n",
" if not self.rnn.bidirectional:\n",
" self.num_directions = 1\n",
" self.linear = nn.Linear(self.num_hiddens, self.vocab_size)\n",
" else:\n",
" self.num_directions = 2\n",
" self.linear = nn.Linear(self.num_hiddens * 2, self.vocab_size)\n",
" def forward(self, inputs, state):\n",
" X = F.one_hot(inputs.T.long(), self.vocab_size)\n",
" X = X.to(torch.float32)\n",
" Y, state = self.rnn(X, state)\n",
" # 全连接层首先将Y的形状改为(时间步数*批量大小,隐藏单元数)\n",
" # 它的输出形状是(时间步数*批量大小,词表大小)。\n",
" output = self.linear(Y.reshape((-1, Y.shape[-1])))\n",
" return output, state\n",
" def begin_state(self, device, batch_size=1):\n",
" if not isinstance(self.rnn, nn.LSTM):\n",
" # nn.GRU以张量作为隐状态\n",
" return torch.zeros((self.num_directions * self.rnn.num_layers,\n",
" batch_size, self.num_hiddens),\n",
" device=device)\n",
" else:\n",
" # nn.LSTM以元组作为隐状态\n",
" return (torch.zeros((\n",
" self.num_directions * self.rnn.num_layers,\n",
" batch_size, self.num_hiddens), device=device),\n",
" torch.zeros((\n",
" self.num_directions * self.rnn.num_layers,\n",
" batch_size, self.num_hiddens), device=device))"
],
"id": "858873034be01538",
"outputs": [],
"execution_count": 119
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:41.686881805Z",
"start_time": "2026-03-29T09:05:41.640393942Z"
}
},
"cell_type": "code",
"source": [
"device = d2l.try_gpu()\n",
"net = RNNModel(rnn_layer, vocab_size=len(vocab))\n",
"net = net.to(device)\n",
"#predict_ch8('time traveller', 10, net, vocab, device)"
],
"id": "d59c1599998c8fd4",
"outputs": [],
"execution_count": 120
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:41.737181902Z",
"start_time": "2026-03-29T09:05:41.688775143Z"
}
},
"cell_type": "code",
"source": [
"vocab_size, num_hiddens, device = len(vocab), 256, d2l.try_gpu()\n",
"num_inputs = vocab_size\n",
"gru_layer = nn.GRU(num_inputs, num_hiddens)\n",
"model = RNNModel(gru_layer, len(vocab))\n",
"model = model.to(device)\n",
"#train_ch8(model, train_iter, vocab, lr, num_epochs, device)"
],
"id": "adda23bc3664ec6b",
"outputs": [],
"execution_count": 121
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:41.786646674Z",
"start_time": "2026-03-29T09:05:41.738416914Z"
}
},
"cell_type": "code",
"source": [
"num_inputs = vocab_size\n",
"lstm_layer = nn.LSTM(num_inputs, num_hiddens)\n",
"model = RNNModel(lstm_layer, len(vocab))\n",
"model = model.to(device)\n",
"#train_ch8(model, train_iter, vocab, lr, num_epochs, device)"
],
"id": "b4e30d643d6f755d",
"outputs": [],
"execution_count": 122
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:41.841175343Z",
"start_time": "2026-03-29T09:05:41.788640688Z"
}
},
"cell_type": "code",
"source": [
"d2l.DATA_HUB['fra-eng'] = (d2l.DATA_URL + 'fra-eng.zip',\n",
" '94646ad1522d915e7b0f9296181140edcf86a4f5')"
],
"id": "50554e839be36011",
"outputs": [],
"execution_count": 123
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:41.893584442Z",
"start_time": "2026-03-29T09:05:41.843443764Z"
}
},
"cell_type": "code",
"source": [
"import os\n",
"def read_data_nmt():\n",
" \"\"\"载入“英语-法语”数据集\"\"\"\n",
" data_dir = d2l.download_extract('fra-eng')\n",
" with open(os.path.join(data_dir, 'fra.txt'), 'r',\n",
" encoding='utf-8') as f:\n",
" return f.read()"
],
"id": "9cd4287ed84db220",
"outputs": [],
"execution_count": 124
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:41.981913006Z",
"start_time": "2026-03-29T09:05:41.895418207Z"
}
},
"cell_type": "code",
"source": [
"raw_text = read_data_nmt()\n",
"print(raw_text[:75])"
],
"id": "7c4452b3b6a32f91",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Go.\tVa !\n",
"Hi.\tSalut !\n",
"Run!\tCours!\n",
"Run!\tCourez!\n",
"Who?\tQui ?\n",
"Wow!\tÇa alors!\n",
"\n"
]
}
],
"execution_count": 125
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:43.184417099Z",
"start_time": "2026-03-29T09:05:41.984779926Z"
}
},
"cell_type": "code",
"source": [
"def preprocess_nmt(text):\n",
" def no_space(char,prev_char):\n",
" return char in set(',.!?') and prev_char != ' '\n",
" text = text.replace('\\u202f',' ').replace('\\xa0',' ').lower()\n",
" out = [' ' + char if i >0 and no_space(char,text[i-1]) else char for i,char in enumerate(text)]\n",
" return ''.join(out)\n",
"text = preprocess_nmt(raw_text)\n",
"print(text[:80])"
],
"id": "1c729da265572287",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"go .\tva !\n",
"hi .\tsalut !\n",
"run !\tcours !\n",
"run !\tcourez !\n",
"who ?\tqui ?\n",
"wow !\tça alors !\n"
]
}
],
"execution_count": 126
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:43.281720452Z",
"start_time": "2026-03-29T09:05:43.232801710Z"
}
},
"cell_type": "code",
"source": [
"def tokenize_nmt(text,num_examples=None):\n",
" source,target = [],[]\n",
" for i,line in enumerate(text.split('\\n')):\n",
" if num_examples and i > num_examples:\n",
" break\n",
" parts = line.split('\\t')\n",
" if len(parts) == 2:\n",
" source.append(parts[0].split(' '))\n",
" target.append(parts[1].split(' '))\n",
" return source,target\n",
"\n"
],
"id": "ca16ef22cbe2c02a",
"outputs": [],
"execution_count": 127
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:43.925371949Z",
"start_time": "2026-03-29T09:05:43.283929461Z"
}
},
"cell_type": "code",
"source": [
"source, target = tokenize_nmt(text)\n",
"source[:6], target[:6]"
],
"id": "5ece5cb4b78168d0",
"outputs": [
{
"data": {
"text/plain": [
"([['go', '.'],\n",
" ['hi', '.'],\n",
" ['run', '!'],\n",
" ['run', '!'],\n",
" ['who', '?'],\n",
" ['wow', '!']],\n",
" [['va', '!'],\n",
" ['salut', '!'],\n",
" ['cours', '!'],\n",
" ['courez', '!'],\n",
" ['qui', '?'],\n",
" ['ça', 'alors', '!']])"
]
},
"execution_count": 128,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 128
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:44.088961043Z",
"start_time": "2026-03-29T09:05:43.974341311Z"
}
},
"cell_type": "code",
"source": [
"def show_list_len_pair_hist(legend,xlabel,ylabel,xlist,ylist):\n",
" d2l.set_figsize()\n",
" _,_,patches = d2l.plt.hist([[len(l) for l in xlist],[len(l) for l in ylist]])\n",
" d2l.plt.xlabel(xlabel)\n",
" d2l.plt.ylabel(ylabel)\n",
" for patch in patches[1].patches:\n",
" patch.set_hatch('/')\n",
" d2l.plt.legend(legend)\n",
"\n",
"show_list_len_pair_hist(['source','target'],'# tokens per sequence','count',source,target)"
],
"id": "518249f852ec54c4",
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 350x250 with 1 Axes>"
],
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"274.320356pt\" height=\"183.35625pt\" viewBox=\"0 0 274.320356 183.35625\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <cc:Work>\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n <dc:date>2026-03-29T17:05:44.064312</dc:date>\n <dc:format>image/svg+xml</dc:format>\n <dc:creator>\n <cc:Agent>\n <dc:title>Matplotlib v3.7.2, https://matplotlib.org/</dc:title>\n </cc:Agent>\n </dc:creator>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs>\n <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n <g id=\"patch_1\">\n <path d=\"M 0 183.35625 \nL 274.320356 183.35625 \nL 274.320356 0 \nL 0 0 \nz\n\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 66.053125 145.8 \nL 261.353125 145.8 \nL 261.353125 7.2 \nL 66.053125 7.2 \nz\n\"/>\n </g>\n <g id=\"patch_3\">\n <path d=\"M 74.930398 145.8 \nL 82.177151 145.8 \nL 82.177151 13.8 \nL 74.930398 13.8 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: #8dd3c7\"/>\n </g>\n <g id=\"patch_4\">\n <path d=\"M 93.047281 145.8 \nL 100.294034 145.8 \nL 100.294034 70.342894 \nL 93.047281 70.342894 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: #8dd3c7\"/>\n </g>\n <g id=\"patch_5\">\n <path d=\"M 111.164164 145.8 \nL 118.410917 145.8 \nL 118.410917 141.170363 \nL 111.164164 141.170363 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: #8dd3c7\"/>\n </g>\n <g id=\"patch_6\">\n <path d=\"M 129.281047 145.8 \nL 136.5278 145.8 \nL 136.5278 145.34327 \nL 129.281047 145.34327 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: #8dd3c7\"/>\n </g>\n <g id=\"patch_7\">\n <path d=\"M 147.39793 145.8 \nL 154.644683 145.8 \nL 154.644683 145.744022 \nL 147.39793 145.744022 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: #8dd3c7\"/>\n </g>\n <g id=\"patch_8\">\n <path d=\"M 165.514813 145.8 \nL 172.761567 145.8 \nL 172.761567 145.783461 \nL 165.514813 145.783461 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: #8dd3c7\"/>\n </g>\n <g id=\"patch_9\">\n <path d=\"M 183.631696 145.8 \nL 190.87845 145.8 \nL 190.87845 145.792367 \nL 183.631696 145.792367 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: #8dd3c7\"/>\n </g>\n <g id=\"patch_10\">\n <path d=\"M 201.74858 145.8 \nL 208.995333 145.8 \nL 208.995333 145.798728 \nL 201.74858 145.798728 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: #8dd3c7\"/>\n </g>\n <g id=\"patch_11\">\n <path d=\"M 219.865463 145.8 \nL 227.112216 145.8 \nL 227.112216 145.797456 \nL 219.865463 145.797456 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: #8dd3c7\"/>\n </g>\n <g id=\"patch_12\">\n <path d=\"M 237.982346 145.8 \nL 245.229099 145.8 \nL 245.229099 145.8 \nL 237.982346 145.8 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: #8dd3c7\"/>\n </g>\n <g id=\"patch_13\">\n <path d=\"M 82.177151 145.8 \nL 89.423904 145.8 \nL 89.423904 26.779268 \nL 82.177151 26.779268 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: url(#hfcbf072e96)\"/>\n </g>\n <g id=\"patch_14\">\n <path d=\"M 100.294034 145.8 \nL 107.540787 145.8 \nL 107.540787 60.492034 \nL 100.294034 60.492034 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: url(#hfcbf072e96)\"/>\n </g>\n <g id=\"patch_15\">\n <path d=\"M 118.410917 145.8 \nL 125.65767 145.8 \nL 125.65767 138.604279 \nL 118.410917 138.604279 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: url(#hfcbf072e96)\"/>\n </g>\n <g id=\"patch_16\">\n <path d=\"M 136.5278 145.8 \nL 143.774554 145.8 \nL 143.774554 144.858551 \nL 136.5278 144.858551 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: url(#hfcbf072e96)\"/>\n </g>\n <g id=\"patch_17\">\n <path d=\"M 154.644683 145.8 \nL 161.891437 145.8 \nL 161.891437 145.691861 \nL 154.644683 145.691861 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: url(#hfcbf072e96)\"/>\n </g>\n <g id=\"patch_18\">\n <path d=\"M 172.761567 145.8 \nL 180.00832 145.8 \nL 180.00832 145.758016 \nL 172.761567 145.758016 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: url(#hfcbf072e96)\"/>\n </g>\n <g id=\"patch_19\">\n <path d=\"M 190.87845 145.8 \nL 198.125203 145.8 \nL 198.125203 145.797456 \nL 190.87845 145.797456 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: url(#hfcbf072e96)\"/>\n </g>\n <g id=\"patch_20\">\n <path d=\"M 208.995333 145.8 \nL 216.242086 145.8 \nL 216.242086 145.797456 \nL 208.995333 145.797456 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: url(#hfcbf072e96)\"/>\n </g>\n <g id=\"patch_21\">\n <path d=\"M 227.112216 145.8 \nL 234.358969 145.8 \nL 234.358969 145.797456 \nL 227.112216 145.797456 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: url(#hfcbf072e96)\"/>\n </g>\n <g id=\"patch_22\">\n <path d=\"M 245.229099 145.8 \nL 252.475852 145.8 \nL 252.475852 145.796183 \nL 245.229099 145.796183 \nz\n\" clip-path=\"url(#p37399cdf32)\" style=\"fill: url(#hfcbf072e96)\"/>\n </g>\n <g id=\"matplotlib.axis_1\">\n <g id=\"xtick_1\">\n <g id=\"line2d_1\">\n <defs>\n <path id=\"mdd2d3e935d\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#mdd2d3e935d\" x=\"66.648394\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_1\">\n <!-- 0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(63.467144 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-30\" d=\"M 2034 4250 \nQ 1547 4250 1301 3770 \nQ 1056 3291 1056 2328 \nQ 1056 1369 1301 889 \nQ 1547 409 2034 409 \nQ 2525 409 2770 889 \nQ 3016 1369 3016 2328 \nQ 3016 3291 2770 3770 \nQ 2525 4250 2034 4250 \nz\nM 2034 4750 \nQ 2819 4750 3233 4129 \nQ 3647 3509 3647 2328 \nQ 3647 1150 3233 529 \nQ 2819 -91 2034 -91 \nQ 1250 -91 836 529 \nQ 422 1150 422 2328 \nQ 422 3509 836 4129 \nQ 1250 4750 2034 4750 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_2\">\n <g id=\"line2d_2\">\n <g>\n <use xlink:href=\"#mdd2d3e935d\" x=\"131.351548\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_2\">\n <!-- 20 -->\n <g style=\"fill: #ffffff\" transform=\"translate(124.989048 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-32\" d=\"M 1228 531 \nL 3431 531 \nL 3431 0 \nL 469 0 \nL 469 531 \nQ 828 903 1448 1529 \nQ 2069 2156 2228 2338 \nQ 2531 2678 2651 2914 \nQ 2772 3150 2772 3378 \nQ 2772 3750 2511 3984 \nQ 2250 4219 1831 4219 \nQ 1534 4219 1204 4116 \nQ 875 4013 500 3803 \nL 500 4441 \nQ 881 4594 1212 4672 \nQ 1544 4750 1819 4750 \nQ 2544 4750 2975 4387 \nQ 3406 4025 3406 3419 \nQ 3406 3131 3298 2873 \nQ 3191 2616 2906 2266 \nQ 2828 2175 2409 1742 \nQ 1991 1309 1228 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-32\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_3\">\n <g id=\"line2d_3\">\n <g>\n <use xlink:href=\"#mdd2d3e935d\" x=\"196.054702\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_3\">\n <!-- 40 -->\n <g style=\"fill: #ffffff\" transform=\"translate(189.692202 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-34\" d=\"M 2419 4116 \nL 825 1625 \nL 2419 1625 \nL 2419 4116 \nz\nM 2253 4666 \nL 3047 4666 \nL 3047 1625 \nL 3713 1625 \nL 3713 1100 \nL 3047 1100 \nL 3047 0 \nL 2419 0 \nL 2419 1100 \nL 313 1100 \nL 313 1709 \nL 2253 4666 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-34\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_4\">\n <g id=\"line2d_4\">\n <g>\n <use xlink:href=\"#mdd2d3e935d\" x=\"260.757856\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_4\">\n <!-- 60 -->\n <g style=\"fill: #ffffff\" transform=\"translate(254.395356 160.398438) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-36\" d=\"M 2113 2584 \nQ 1688 2584 1439 2293 \nQ 1191 2003 1191 1497 \nQ 1191 994 1439 701 \nQ 1688 409 2113 409 \nQ 2538 409 2786 701 \nQ 3034 994 3034 1497 \nQ 3034 2003 2786 2293 \nQ 2538 2584 2113 2584 \nz\nM 3366 4563 \nL 3366 3988 \nQ 3128 4100 2886 4159 \nQ 2644 4219 2406 4219 \nQ 1781 4219 1451 3797 \nQ 1122 3375 1075 2522 \nQ 1259 2794 1537 2939 \nQ 1816 3084 2150 3084 \nQ 2853 3084 3261 2657 \nQ 3669 2231 3669 1497 \nQ 3669 778 3244 343 \nQ 2819 -91 2113 -91 \nQ 1303 -91 875 529 \nQ 447 1150 447 2328 \nQ 447 3434 972 4092 \nQ 1497 4750 2381 4750 \nQ 2619 4750 2861 4703 \nQ 3103 4656 3366 4563 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-36\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n </g>\n </g>\n </g>\n <g id=\"text_5\">\n <!-- # tokens per sequence -->\n <g style=\"fill: #ffffff\" transform=\"translate(105.760937 174.076563) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-23\" d=\"M 3272 2816 \nL 2363 2816 \nL 2100 1772 \nL 3016 1772 \nL 3272 2816 \nz\nM 2803 4594 \nL 2478 3297 \nL 3391 3297 \nL 3719 4594 \nL 4219 4594 \nL 3897 3297 \nL 4872 3297 \nL 4872 2816 \nL 3775 2816 \nL 3519 1772 \nL 4513 1772 \nL 4513 1294 \nL 3397 1294 \nL 3072 0 \nL 2572 0 \nL 2894 1294 \nL 1978 1294 \nL 1656 0 \nL 1153 0 \nL 1478 1294 \nL 494 1294 \nL 494 1772 \nL 1594 1772 \nL 1856 2816 \nL 850 2816 \nL 850 3297 \nL 1978 3297 \nL 2297 4594 \nL 2803 4594 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-20\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-74\" d=\"M 1172 4494 \nL 1172 3500 \nL 2356 3500 \nL 2356 3053 \nL 1172 3053 \nL 1172 1153 \nQ 1172 725 1289 603 \nQ 1406 481 1766 481 \nL 2356 481 \nL 2356 0 \nL 1766 0 \nQ 1100 0 847 248 \nQ 594 497 594 1153 \nL 594 3053 \nL 172 3053 \nL 172 3500 \nL 594 3500 \nL 594 4494 \nL 1172 4494 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6f\" d=\"M 1959 3097 \nQ 1497 3097 1228 2736 \nQ 959 2375 959 1747 \nQ 959 1119 1226 758 \nQ 1494 397 1959 397 \nQ 2419 397 2687 759 \nQ 2956 1122 2956 1747 \nQ 2956 2369 2687 2733 \nQ 2419 3097 1959 3097 \nz\nM 1959 3584 \nQ 2709 3584 3137 3096 \nQ 3566 2609 3566 1747 \nQ 3566 888 3137 398 \nQ 2709 -91 1959 -91 \nQ 1206 -91 779 398 \nQ 353 888 353 1747 \nQ 353 2609 779 3096 \nQ 1206 3584 1959 3584 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6b\" d=\"M 581 4863 \nL 1159 4863 \nL 1159 1991 \nL 2875 3500 \nL 3609 3500 \nL 1753 1863 \nL 3688 0 \nL 2938 0 \nL 1159 1709 \nL 1159 0 \nL 581 0 \nL 581 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-65\" d=\"M 3597 1894 \nL 3597 1613 \nL 953 1613 \nQ 991 1019 1311 708 \nQ 1631 397 2203 397 \nQ 2534 397 2845 478 \nQ 3156 559 3463 722 \nL 3463 178 \nQ 3153 47 2828 -22 \nQ 2503 -91 2169 -91 \nQ 1331 -91 842 396 \nQ 353 884 353 1716 \nQ 353 2575 817 3079 \nQ 1281 3584 2069 3584 \nQ 2775 3584 3186 3129 \nQ 3597 2675 3597 1894 \nz\nM 3022 2063 \nQ 3016 2534 2758 2815 \nQ 2500 3097 2075 3097 \nQ 1594 3097 1305 2825 \nQ 1016 2553 972 2059 \nL 3022 2063 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6e\" d=\"M 3513 2113 \nL 3513 0 \nL 2938 0 \nL 2938 2094 \nQ 2938 2591 2744 2837 \nQ 2550 3084 2163 3084 \nQ 1697 3084 1428 2787 \nQ 1159 2491 1159 1978 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1366 3272 1645 3428 \nQ 1925 3584 2291 3584 \nQ 2894 3584 3203 3211 \nQ 3513 2838 3513 2113 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-73\" d=\"M 2834 3397 \nL 2834 2853 \nQ 2591 2978 2328 3040 \nQ 2066 3103 1784 3103 \nQ 1356 3103 1142 2972 \nQ 928 2841 928 2578 \nQ 928 2378 1081 2264 \nQ 1234 2150 1697 2047 \nL 1894 2003 \nQ 2506 1872 2764 1633 \nQ 3022 1394 3022 966 \nQ 3022 478 2636 193 \nQ 2250 -91 1575 -91 \nQ 1294 -91 989 -36 \nQ 684 19 347 128 \nL 347 722 \nQ 666 556 975 473 \nQ 1284 391 1588 391 \nQ 1994 391 2212 530 \nQ 2431 669 2431 922 \nQ 2431 1156 2273 1281 \nQ 2116 1406 1581 1522 \nL 1381 1569 \nQ 847 1681 609 1914 \nQ 372 2147 372 2553 \nQ 372 3047 722 3315 \nQ 1072 3584 1716 3584 \nQ 2034 3584 2315 3537 \nQ 2597 3491 2834 3397 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-70\" d=\"M 1159 525 \nL 1159 -1331 \nL 581 -1331 \nL 581 3500 \nL 1159 3500 \nL 1159 2969 \nQ 1341 3281 1617 3432 \nQ 1894 3584 2278 3584 \nQ 2916 3584 3314 3078 \nQ 3713 2572 3713 1747 \nQ 3713 922 3314 415 \nQ 2916 -91 2278 -91 \nQ 1894 -91 1617 61 \nQ 1341 213 1159 525 \nz\nM 3116 1747 \nQ 3116 2381 2855 2742 \nQ 2594 3103 2138 3103 \nQ 1681 3103 1420 2742 \nQ 1159 2381 1159 1747 \nQ 1159 1113 1420 752 \nQ 1681 391 2138 391 \nQ 2594 391 2855 752 \nQ 3116 1113 3116 1747 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-72\" d=\"M 2631 2963 \nQ 2534 3019 2420 3045 \nQ 2306 3072 2169 3072 \nQ 1681 3072 1420 2755 \nQ 1159 2438 1159 1844 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1341 3275 1631 3429 \nQ 1922 3584 2338 3584 \nQ 2397 3584 2469 3576 \nQ 2541 3569 2628 3553 \nL 2631 2963 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-71\" d=\"M 947 1747 \nQ 947 1113 1208 752 \nQ 1469 391 1925 391 \nQ 2381 391 2643 752 \nQ 2906 1113 2906 1747 \nQ 2906 2381 2643 2742 \nQ 2381 3103 1925 3103 \nQ 1469 3103 1208 2742 \nQ 947 2381 947 1747 \nz\nM 2906 525 \nQ 2725 213 2448 61 \nQ 2172 -91 1784 -91 \nQ 1150 -91 751 415 \nQ 353 922 353 1747 \nQ 353 2572 751 3078 \nQ 1150 3584 1784 3584 \nQ 2172 3584 2448 3432 \nQ 2725 3281 2906 2969 \nL 2906 3500 \nL 3481 3500 \nL 3481 -1331 \nL 2906 -1331 \nL 2906 525 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-75\" d=\"M 544 1381 \nL 544 3500 \nL 1119 3500 \nL 1119 1403 \nQ 1119 906 1312 657 \nQ 1506 409 1894 409 \nQ 2359 409 2629 706 \nQ 2900 1003 2900 1516 \nL 2900 3500 \nL 3475 3500 \nL 3475 0 \nL 2900 0 \nL 2900 538 \nQ 2691 219 2414 64 \nQ 2138 -91 1772 -91 \nQ 1169 -91 856 284 \nQ 544 659 544 1381 \nz\nM 1991 3584 \nL 1991 3584 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-63\" d=\"M 3122 3366 \nL 3122 2828 \nQ 2878 2963 2633 3030 \nQ 2388 3097 2138 3097 \nQ 1578 3097 1268 2742 \nQ 959 2388 959 1747 \nQ 959 1106 1268 751 \nQ 1578 397 2138 397 \nQ 2388 397 2633 464 \nQ 2878 531 3122 666 \nL 3122 134 \nQ 2881 22 2623 -34 \nQ 2366 -91 2075 -91 \nQ 1284 -91 818 406 \nQ 353 903 353 1747 \nQ 353 2603 823 3093 \nQ 1294 3584 2113 3584 \nQ 2378 3584 2631 3529 \nQ 2884 3475 3122 3366 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-23\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"83.789062\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"115.576172\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"154.785156\"/>\n <use xlink:href=\"#DejaVuSans-6b\" x=\"215.966797\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"270.251953\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"331.775391\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"395.154297\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"447.253906\"/>\n <use xlink:href=\"#DejaVuSans-70\" x=\"479.041016\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"542.517578\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"604.041016\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"645.154297\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"676.941406\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"729.041016\"/>\n <use xlink:href=\"#DejaVuSans-71\" x=\"790.564453\"/>\n <use xlink:href=\"#DejaVuSans-75\" x=\"854.041016\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"917.419922\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"978.943359\"/>\n <use xlink:href=\"#DejaVuSans-63\" x=\"1042.322266\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"1097.302734\"/>\n </g>\n </g>\n </g>\n <g id=\"matplotlib.axis_2\">\n <g id=\"ytick_1\">\n <g id=\"line2d_5\">\n <defs>\n <path id=\"mcc649ede9b\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#mcc649ede9b\" x=\"66.053125\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_6\">\n <!-- 0 -->\n <g style=\"fill: #ffffff\" transform=\"translate(52.690625 149.599219) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-30\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_2\">\n <g id=\"line2d_6\">\n <g>\n <use xlink:href=\"#mcc649ede9b\" x=\"66.053125\" y=\"120.355443\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_7\">\n <!-- 20000 -->\n <g style=\"fill: #ffffff\" transform=\"translate(27.240625 124.154662) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-32\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"254.492188\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_3\">\n <g id=\"line2d_7\">\n <g>\n <use xlink:href=\"#mcc649ede9b\" x=\"66.053125\" y=\"94.910886\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_8\">\n <!-- 40000 -->\n <g style=\"fill: #ffffff\" transform=\"translate(27.240625 98.710105) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-34\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"254.492188\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_4\">\n <g id=\"line2d_8\">\n <g>\n <use xlink:href=\"#mcc649ede9b\" x=\"66.053125\" y=\"69.466329\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_9\">\n <!-- 60000 -->\n <g style=\"fill: #ffffff\" transform=\"translate(27.240625 73.265548) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-36\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"254.492188\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_5\">\n <g id=\"line2d_9\">\n <g>\n <use xlink:href=\"#mcc649ede9b\" x=\"66.053125\" y=\"44.021772\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_10\">\n <!-- 80000 -->\n <g style=\"fill: #ffffff\" transform=\"translate(27.240625 47.820991) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-38\" d=\"M 2034 2216 \nQ 1584 2216 1326 1975 \nQ 1069 1734 1069 1313 \nQ 1069 891 1326 650 \nQ 1584 409 2034 409 \nQ 2484 409 2743 651 \nQ 3003 894 3003 1313 \nQ 3003 1734 2745 1975 \nQ 2488 2216 2034 2216 \nz\nM 1403 2484 \nQ 997 2584 770 2862 \nQ 544 3141 544 3541 \nQ 544 4100 942 4425 \nQ 1341 4750 2034 4750 \nQ 2731 4750 3128 4425 \nQ 3525 4100 3525 3541 \nQ 3525 3141 3298 2862 \nQ 3072 2584 2669 2484 \nQ 3125 2378 3379 2068 \nQ 3634 1759 3634 1313 \nQ 3634 634 3220 271 \nQ 2806 -91 2034 -91 \nQ 1263 -91 848 271 \nQ 434 634 434 1313 \nQ 434 1759 690 2068 \nQ 947 2378 1403 2484 \nz\nM 1172 3481 \nQ 1172 3119 1398 2916 \nQ 1625 2713 2034 2713 \nQ 2441 2713 2670 2916 \nQ 2900 3119 2900 3481 \nQ 2900 3844 2670 4047 \nQ 2441 4250 2034 4250 \nQ 1625 4250 1398 4047 \nQ 1172 3844 1172 3481 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-38\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"254.492188\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_6\">\n <g id=\"line2d_10\">\n <g>\n <use xlink:href=\"#mcc649ede9b\" x=\"66.053125\" y=\"18.577216\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_11\">\n <!-- 100000 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 22.376434) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-31\" d=\"M 794 531 \nL 1825 531 \nL 1825 4091 \nL 703 3866 \nL 703 4441 \nL 1819 4666 \nL 2450 4666 \nL 2450 531 \nL 3481 531 \nL 3481 0 \nL 794 0 \nL 794 531 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"127.246094\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"190.869141\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"254.492188\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"318.115234\"/>\n </g>\n </g>\n </g>\n <g id=\"text_12\">\n <!-- count -->\n <g style=\"fill: #ffffff\" transform=\"translate(14.798438 90.60625) rotate(-90) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-63\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"54.980469\"/>\n <use xlink:href=\"#DejaVuSans-75\" x=\"116.162109\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"179.541016\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"242.919922\"/>\n </g>\n </g>\n </g>\n <g id=\"patch_23\">\n <path d=\"M 66.053125 145.8 \nL 66.053125 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_24\">\n <path d=\"M 261.353125 145.8 \nL 261.353125 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_25\">\n <path d=\"M 66.053125 145.8 \nL 261.353125 145.8 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_26\">\n <path d=\"M 66.053125 7.2 \nL 261.353125 7.2 \n\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"legend_1\">\n <g id=\"patch_27\">\n <path d=\"M 189.15 44.55625 \nL 254.353125 44.55625 \nQ 256.353125 44.55625 256.353125 42.55625 \nL 256.353125 14.2 \nQ 256.353125 12.2 254.353125 12.2 \nL 189.15 12.2 \nQ 187.15 12.2 187.15 14.2 \nL 187.15 42.55625 \nQ 187.15 44.55625 189.15 44.55625 \nz\n\" style=\"opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n </g>\n <g id=\"patch_28\">\n <path d=\"M 191.15 23.798438 \nL 211.15 23.798438 \nL 211.15 16.798438 \nL 191.15 16.798438 \nz\n\" style=\"fill: #8dd3c7\"/>\n </g>\n <g id=\"text_13\">\n <!-- source -->\n <g style=\"fill: #ffffff\" transform=\"translate(219.15 23.798438) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-73\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"52.099609\"/>\n <use xlink:href=\"#DejaVuSans-75\" x=\"113.28125\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"176.660156\"/>\n <use xlink:href=\"#DejaVuSans-63\" x=\"215.523438\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"270.503906\"/>\n </g>\n </g>\n <g id=\"patch_29\">\n <path d=\"M 191.15 38.476562 \nL 211.15 38.476562 \nL 211.15 31.476562 \nL 191.15 31.476562 \nz\n\" style=\"fill: url(#hfcbf072e96)\"/>\n </g>\n <g id=\"text_14\">\n <!-- target -->\n <g style=\"fill: #ffffff\" transform=\"translate(219.15 38.476562) scale(0.1 -0.1)\">\n <defs>\n <path id=\"DejaVuSans-61\" d=\"M 2194 1759 \nQ 1497 1759 1228 1600 \nQ 959 1441 959 1056 \nQ 959 750 1161 570 \nQ 1363 391 1709 391 \nQ 2188 391 2477 730 \nQ 2766 1069 2766 1631 \nL 2766 1759 \nL 2194 1759 \nz\nM 3341 1997 \nL 3341 0 \nL 2766 0 \nL 2766 531 \nQ 2569 213 2275 61 \nQ 1981 -91 1556 -91 \nQ 1019 -91 701 211 \nQ 384 513 384 1019 \nQ 384 1609 779 1909 \nQ 1175 2209 1959 2209 \nL 2766 2209 \nL 2766 2266 \nQ 2766 2663 2505 2880 \nQ 2244 3097 1772 3097 \nQ 1472 3097 1187 3025 \nQ 903 2953 641 2809 \nL 641 3341 \nQ 956 3463 1253 3523 \nQ 1550 3584 1831 3584 \nQ 2591 3584 2966 3190 \nQ 3341 2797 3341 1997 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-67\" d=\"M 2906 1791 \nQ 2906 2416 2648 2759 \nQ 2391 3103 1925 3103 \nQ 1463 3103 1205 2759 \nQ 947 2416 947 1791 \nQ 947 1169 1205 825 \nQ 1463 481 1925 481 \nQ 2391 481 2648 825 \nQ 2906 1169 2906 1791 \nz\nM 3481 434 \nQ 3481 -459 3084 -895 \nQ 2688 -1331 1869 -1331 \nQ 1566 -1331 1297 -1286 \nQ 1028 -1241 775 -1147 \nL 775 -588 \nQ 1028 -725 1275 -790 \nQ 1522 -856 1778 -856 \nQ 2344 -856 2625 -561 \nQ 2906 -266 2906 331 \nL 2906 616 \nQ 2728 306 2450 153 \nQ 2172 0 1784 0 \nQ 1141 0 747 490 \nQ 353 981 353 1791 \nQ 353 2603 747 3093 \nQ 1141 3584 1784 3584 \nQ 2172 3584 2450 3431 \nQ 2728 3278 2906 2969 \nL 2906 3500 \nL 3481 3500 \nL 3481 434 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"100.488281\"/>\n <use xlink:href=\"#DejaVuSans-67\" x=\"139.851562\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"203.328125\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"264.851562\"/>\n </g>\n </g>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"p37399cdf32\">\n <rect x=\"66.053125\" y=\"7.2\" width=\"195.3\" height=\"138.6\"/>\n </clipPath>\n </defs>\n <defs>\n <pattern id=\"hfcbf072e96\" patternUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"72\" height=\"72\">\n <rect x=\"0\" y=\"0\" width=\"73\" height=\"73\" fill=\"#feffb3\"/>\n <path d=\"M -36 36 \nL 36 -36 \nM -24 48 \nL 48 -24 \nM -12 60 \nL 60 -12 \nM 0 72 \nL 72 0 \nM 12 84 \nL 84 12 \nM 24 96 \nL 96 24 \nM 36 108 \nL 108 36 \n\" style=\"fill: #000000; stroke: #000000; stroke-width: 1.0; stroke-linecap: butt; stroke-linejoin: miter\"/>\n </pattern>\n </defs>\n</svg>\n"
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
}
],
"execution_count": 129
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:44.211764847Z",
"start_time": "2026-03-29T09:05:44.108134314Z"
}
},
"cell_type": "code",
"source": [
"src_vocab=Vocab(source,min_freq=2,reserved_tokens=['<pad>','<bos>','<eos>'])\n",
"len(src_vocab)"
],
"id": "c2dc82617d5a41a4",
"outputs": [
{
"data": {
"text/plain": [
"10012"
]
},
"execution_count": 130,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 130
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:44.266693213Z",
"start_time": "2026-03-29T09:05:44.214356393Z"
}
},
"cell_type": "code",
"source": [
"def truncate_pad(line,num_steps,padding_token):\n",
" if len(line) > num_steps:\n",
" return line[:num_steps]\n",
" return line + [padding_token] * (num_steps - len(line))\n",
"truncate_pad(src_vocab[source[0]], 10, src_vocab['<pad>'])"
],
"id": "93ae326a3258ecc",
"outputs": [
{
"data": {
"text/plain": [
"[47, 4, 1, 1, 1, 1, 1, 1, 1, 1]"
]
},
"execution_count": 131,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 131
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:44.326945861Z",
"start_time": "2026-03-29T09:05:44.279624651Z"
}
},
"cell_type": "code",
"source": [
"def build_array_nmt(lines, vocab, num_steps):\n",
" \"\"\"将机器翻译的文本序列转换成小批量\"\"\"\n",
" lines = [vocab[l] for l in lines]\n",
" lines = [l + [vocab['<eos>']] for l in lines]\n",
" array = torch.tensor([truncate_pad(\n",
" l, num_steps, vocab['<pad>']) for l in lines])\n",
" valid_len = (array != vocab['<pad>']).type(torch.int32).sum(1)\n",
" return array, valid_len"
],
"id": "acd4344e678cf487",
"outputs": [],
"execution_count": 132
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:44.376299140Z",
"start_time": "2026-03-29T09:05:44.328437032Z"
}
},
"cell_type": "code",
"source": [
"def load_data_nmt(batch_size, num_steps, num_examples=600):\n",
" \"\"\"返回翻译数据集的迭代器和词表\"\"\"\n",
" text = preprocess_nmt(read_data_nmt())\n",
" source, target = tokenize_nmt(text, num_examples)\n",
" src_vocab = d2l.Vocab(source, min_freq=2,\n",
" reserved_tokens=['<pad>', '<bos>', '<eos>'])\n",
" tgt_vocab = d2l.Vocab(target, min_freq=2,\n",
" reserved_tokens=['<pad>', '<bos>', '<eos>'])\n",
" src_array, src_valid_len = build_array_nmt(source, src_vocab, num_steps)\n",
" tgt_array, tgt_valid_len = build_array_nmt(target, tgt_vocab, num_steps)\n",
" data_arrays = (src_array, src_valid_len, tgt_array, tgt_valid_len)\n",
" data_iter = d2l.load_array(data_arrays, batch_size)\n",
" return data_iter, src_vocab, tgt_vocab"
],
"id": "62586b0175993a4f",
"outputs": [],
"execution_count": 133
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T09:05:45.610515926Z",
"start_time": "2026-03-29T09:05:44.378149052Z"
}
},
"cell_type": "code",
"source": [
"train_iter, src_vocab, tgt_vocab = load_data_nmt(batch_size=2, num_steps=8)\n",
"for X, X_valid_len, Y, Y_valid_len in train_iter:\n",
" print('X:', X.type(torch.int32))\n",
" print('X的有效长度:', X_valid_len)\n",
" print('Y:', Y.type(torch.int32))\n",
" print('Y的有效长度:', Y_valid_len)\n",
" break"
],
"id": "87a2f147db41a91d",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"X: tensor([[81, 6, 2, 4, 5, 5, 5, 5],\n",
" [81, 11, 96, 2, 4, 5, 5, 5]], dtype=torch.int32)\n",
"X的有效长度: tensor([4, 5])\n",
"Y: tensor([[103, 79, 166, 55, 105, 6, 2, 4],\n",
" [100, 171, 75, 2, 4, 5, 5, 5]], dtype=torch.int32)\n",
"Y的有效长度: tensor([8, 5])\n"
]
}
],
"execution_count": 134
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T12:26:28.968567662Z",
"start_time": "2026-03-29T12:26:28.880277260Z"
}
},
"cell_type": "code",
"source": [
"class Encoder(nn.Module):\n",
" def __init__(self,**kargs):\n",
" super(Encoder,self).__init__(**kargs)\n",
" def forward(self,X,*args):\n",
" raise NotImplementedError(\"必须实现这个方法\")\n",
"class Decoder(nn.Module):\n",
" \"\"\"编码器-解码器架构的基本解码器接口\"\"\"\n",
" def __init__(self, **kwargs):\n",
" super(Decoder, self).__init__(**kwargs)\n",
" def init_state(self, enc_outputs, *args):\n",
" raise NotImplementedError\n",
" def forward(self, X, state):\n",
" raise NotImplementedError\n",
"class EncoderDecoder(nn.Module):\n",
" \"\"\"编码器-解码器架构的基类\"\"\"\n",
" def __init__(self, encoder, decoder, **kwargs):\n",
" super(EncoderDecoder, self).__init__(**kwargs)\n",
" self.encoder = encoder\n",
" self.decoder = decoder\n",
" def forward(self, enc_X, dec_X, *args):\n",
" enc_outputs = self.encoder(enc_X, *args)\n",
" dec_state = self.decoder.init_state(enc_outputs, *args)\n",
" return self.decoder(dec_X, dec_state)\n",
"class Seq2SeqEncoder(Encoder):\n",
" def __init__(self,vocab_size,embed_size,num_hiddens,num_layers,dropout=0,**kwargs):\n",
" super(Seq2SeqEncoder, self).__init__(**kwargs)\n",
" self.embedding = nn.Embedding(vocab_size, embed_size)\n",
" self.rnn = nn.GRU(embed_size,num_hiddens,num_layers,dropout=dropout)\n",
" def forward(self,X,*args):\n",
" X = self.embedding(X)\n",
" X = X.permute(1,0,2) #(batch,steps,embed_size) -> (steps,batch,embed_size)\n",
" output,state = self.rnn(X)\n",
" return output,state\n",
" # shape of output (steps,batch,num_hiddens)\n",
" # shape of state (num_layers,batch,num_hiddens)\n",
"encoder = Seq2SeqEncoder(vocab_size=10, embed_size=8, num_hiddens=16,\n",
" num_layers=2)\n",
"X = torch.zeros((4,7),dtype=torch.long) #one-hot is integer\n",
"output,state = encoder(X)\n",
"output.shape\n"
],
"id": "d0d01aef4857ee9c",
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([7, 4, 16])"
]
},
"execution_count": 139,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 139
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T12:26:43.259123495Z",
"start_time": "2026-03-29T12:26:43.204225780Z"
}
},
"cell_type": "code",
"source": "state.shape",
"id": "bba15a040c10cb01",
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([2, 4, 16])"
]
},
"execution_count": 140,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 140
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T13:47:51.954052296Z",
"start_time": "2026-03-29T13:47:51.853781706Z"
}
},
"cell_type": "code",
"source": [
"class Seq2SeqDecoder(Decoder):\n",
" def __init__(self,vocab_size,embed_size,num_hiddens,num_layers,dropout=0,**kwargs):\n",
" super(Seq2SeqDecoder, self).__init__(**kwargs)\n",
" self.embedding = nn.Embedding(vocab_size, embed_size)\n",
" self.rnn = nn.GRU(embed_size+num_hiddens,num_hiddens,num_layers,dropout=dropout)\n",
" self.dense = nn.Linear(num_hiddens,vocab_size)\n",
" def init_state(self,enc_outputs,*args):\n",
" return enc_outputs[1]\n",
" def forward(self,X,state):\n",
" X = self.embedding(X).permute(1,0,2)\n",
" context = state[-1].repeat(X.shape[0],1,1)\n",
" X_and_context = torch.cat((X,context),2)\n",
" output,state = self.rnn(X_and_context,state)\n",
" output = self.dense(output).permute(1,0,2)\n",
" return output,state"
],
"id": "b659bfd2fdcabebe",
"outputs": [],
"execution_count": 141
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T13:48:04.405972579Z",
"start_time": "2026-03-29T13:48:04.307991931Z"
}
},
"cell_type": "code",
"source": [
"decoder = Seq2SeqDecoder(vocab_size=10, embed_size=8, num_hiddens=16,\n",
"num_layers=2)\n",
"decoder.eval()\n",
"state = decoder.init_state(encoder(X))\n",
"output, state = decoder(X, state)\n",
"output.shape, state.shape"
],
"id": "e9c451e560ce3769",
"outputs": [
{
"data": {
"text/plain": [
"(torch.Size([4, 7, 10]), torch.Size([2, 4, 16]))"
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 142
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T13:56:58.324121647Z",
"start_time": "2026-03-29T13:56:58.160904863Z"
}
},
"cell_type": "code",
"source": [
"def sequence_mask(X, valid_len, value=0):\n",
" \"\"\"在序列中屏蔽不相关的项\"\"\"\n",
" maxlen = X.size(1)\n",
" mask = torch.arange((maxlen), dtype=torch.float32,\n",
" device=X.device)[None, :] < valid_len[:, None]\n",
" X[~mask] = value\n",
" return X\n",
"X = torch.tensor([[1, 2, 3], [4, 5, 6]])\n",
"sequence_mask(X, torch.tensor([1, 2]))"
],
"id": "9ee2db877c089d48",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[1, 0, 0],\n",
" [4, 5, 0]])"
]
},
"execution_count": 143,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 143
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T13:57:55.473311100Z",
"start_time": "2026-03-29T13:57:55.287150264Z"
}
},
"cell_type": "code",
"source": [
"X = torch.ones(2, 3, 4)\n",
"sequence_mask(X, torch.tensor([1, 2]), value=-1)"
],
"id": "caca450bdfe7f650",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[[ 1., 1., 1., 1.],\n",
" [-1., -1., -1., -1.],\n",
" [-1., -1., -1., -1.]],\n",
"\n",
" [[ 1., 1., 1., 1.],\n",
" [ 1., 1., 1., 1.],\n",
" [-1., -1., -1., -1.]]])"
]
},
"execution_count": 144,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 144
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-29T14:08:10.919373362Z",
"start_time": "2026-03-29T14:08:10.636085289Z"
}
},
"cell_type": "code",
"source": [
"class MaskedSoftmaxCELoss(nn.CrossEntropyLoss):\n",
" \"\"\"带遮蔽的softmax交叉熵损失函数\"\"\"\n",
" # pred的形状(batch_size,num_steps,vocab_size)\n",
" # label的形状(batch_size,num_steps)\n",
" # valid_len的形状(batch_size,)\n",
" def forward(self, pred, label, valid_len):\n",
" weights = torch.ones_like(label)\n",
" weights = sequence_mask(weights, valid_len)\n",
" self.reduction='none'\n",
" unweighted_loss = super(MaskedSoftmaxCELoss, self).forward(\n",
" pred.permute(0, 2, 1), label)\n",
" weighted_loss = (unweighted_loss * weights).mean(dim=1)\n",
" return weighted_loss\n",
"loss = MaskedSoftmaxCELoss()\n",
"loss(torch.ones(3, 4, 10), torch.ones((3, 4), dtype=torch.long),\n",
"torch.tensor([4, 2, 0]))"
],
"id": "46fc96f0246f32b7",
"outputs": [
{
"data": {
"text/plain": [
"tensor([2.3026, 1.1513, 0.0000])"
]
},
"execution_count": 145,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 145
},
{
"metadata": {},
"cell_type": "code",
"outputs": [],
"execution_count": null,
"source": "",
"id": "69c315b5875fc288"
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}