nn/chapter5.ipynb
2026-03-25 23:07:28 +08:00

4666 lines
455 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

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-25T12:53:19.596857715Z",
"start_time": "2026-03-25T12:53:16.588300896Z"
}
},
"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-25T12:53:19.882978594Z",
"start_time": "2026-03-25T12:53:19.641379604Z"
}
},
"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.0824, 0.0285, 0.1192, 0.0922, 0.0465, 0.2007, -0.0262, 0.1639,\n",
" -0.0899, 0.1057],\n",
" [-0.0524, 0.0180, 0.0952, 0.0921, -0.0702, 0.2043, 0.0393, 0.0629,\n",
" -0.1250, 0.0537]], grad_fn=<AddmmBackward0>)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 2
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:53:22.230024033Z",
"start_time": "2026-03-25T12:53:21.253445153Z"
}
},
"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-25T12:53:22.637036131Z",
"start_time": "2026-03-25T12:53:22.314296739Z"
}
},
"cell_type": "code",
"source": [
"net=MLP()\n",
"net(X)"
],
"id": "cca55c6c0c7da12f",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[-0.1096, 0.0395, 0.1076, 0.0112, 0.1523, 0.0678, -0.4146, 0.1690,\n",
" 0.0085, -0.0510],\n",
" [-0.0863, 0.0353, 0.0677, -0.0226, 0.1161, 0.0591, -0.3184, 0.1216,\n",
" -0.0316, -0.1315]], grad_fn=<AddmmBackward0>)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 4
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:53:23.093212653Z",
"start_time": "2026-03-25T12:53:22.726300762Z"
}
},
"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-25T12:53:23.496786702Z",
"start_time": "2026-03-25T12:53:23.216055780Z"
}
},
"cell_type": "code",
"source": [
"net = FixedHiddenMLP()\n",
"net(X)"
],
"id": "fae0187ece4ed5c6",
"outputs": [
{
"data": {
"text/plain": [
"tensor(0.2039, grad_fn=<SumBackward0>)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 6
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:53:23.718703932Z",
"start_time": "2026-03-25T12:53:23.576457566Z"
}
},
"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-25T12:53:24.088583749Z",
"start_time": "2026-03-25T12:53:23.724853929Z"
}
},
"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.3055],\n",
" [0.0396]], grad_fn=<AddmmBackward0>)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 8
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:53:24.533854996Z",
"start_time": "2026-03-25T12:53:24.227646164Z"
}
},
"cell_type": "code",
"source": "print(net[2].state_dict())",
"id": "8c73f8daa02ba28b",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"OrderedDict([('weight', tensor([[-0.0619, -0.2581, -0.0887, 0.1497, 0.3016, 0.0745, 0.3351, -0.2275]])), ('bias', tensor([0.1878]))])\n"
]
}
],
"execution_count": 9
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:53:24.907381106Z",
"start_time": "2026-03-25T12:53:24.595749565Z"
}
},
"cell_type": "code",
"source": "net[2].state_dict()",
"id": "b6fee6b64fb96e3c",
"outputs": [
{
"data": {
"text/plain": [
"OrderedDict([('weight',\n",
" tensor([[-0.0619, -0.2581, -0.0887, 0.1497, 0.3016, 0.0745, 0.3351, -0.2275]])),\n",
" ('bias', tensor([0.1878]))])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 10
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:53:25.145444931Z",
"start_time": "2026-03-25T12:53:24.912612304Z"
}
},
"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-25T12:53:25.261894811Z",
"start_time": "2026-03-25T12:53:25.163843129Z"
}
},
"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.1878], requires_grad=True)\n",
"tensor([0.1878])\n"
]
}
],
"execution_count": 12
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:53:25.341935137Z",
"start_time": "2026-03-25T12:53:25.264357977Z"
}
},
"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-25T12:53:25.433915822Z",
"start_time": "2026-03-25T12:53:25.357825225Z"
}
},
"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-25T12:53:25.543917851Z",
"start_time": "2026-03-25T12:53:25.460879914Z"
}
},
"cell_type": "code",
"source": "net.state_dict()['2.bias'].data",
"id": "cc74913e8742da7d",
"outputs": [
{
"data": {
"text/plain": [
"tensor([0.1878])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 15
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:53:25.617010198Z",
"start_time": "2026-03-25T12:53:25.559343957Z"
}
},
"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-25T12:53:25.713767703Z",
"start_time": "2026-03-25T12:53:25.621699911Z"
}
},
"cell_type": "code",
"source": [
"rgnet = nn.Sequential(block2(),nn.Linear(4,1))\n",
"rgnet(X)"
],
"id": "d3ac7759b619aca",
"outputs": [
{
"data": {
"text/plain": [
"tensor([[-0.3406],\n",
" [-0.3406]], grad_fn=<AddmmBackward0>)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 17
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:53:26.096212878Z",
"start_time": "2026-03-25T12:53:25.758161035Z"
}
},
"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-25T12:53:26.459785465Z",
"start_time": "2026-03-25T12:53:26.247775930Z"
}
},
"cell_type": "code",
"source": "rgnet[0][1][0].bias.data",
"id": "e590aaafca787b50",
"outputs": [
{
"data": {
"text/plain": [
"tensor([ 0.3709, -0.2778, -0.1532, -0.4749, 0.4300, -0.0282, -0.0499, 0.3819])"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 19
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:53:26.559898609Z",
"start_time": "2026-03-25T12:53:26.465566578Z"
}
},
"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.0090, 0.0195, 0.0008, 0.0062]), tensor(0.))"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 20
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:53:26.624188061Z",
"start_time": "2026-03-25T12:53:26.561739279Z"
}
},
"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.0184, 0.4366, -0.5272, 0.1226])\n",
"tensor([[42., 42., 42., 42., 42., 42., 42., 42.]])\n"
]
}
],
"execution_count": 21
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:53:26.720471236Z",
"start_time": "2026-03-25T12:53:26.641527865Z"
}
},
"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-25T12:53:26.986419396Z",
"start_time": "2026-03-25T12:53:26.727284472Z"
}
},
"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-25T12:53:27.038073696Z",
"start_time": "2026-03-25T12:53:26.998499395Z"
}
},
"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-25T12:53:27.097281119Z",
"start_time": "2026-03-25T12:53:27.040823019Z"
}
},
"cell_type": "code",
"source": "torch.save(net.state_dict(), 'mlp.params')",
"id": "aaa22eef549caa6f",
"outputs": [],
"execution_count": 25
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:53:27.229604563Z",
"start_time": "2026-03-25T12:53:27.100431141Z"
}
},
"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-25T12:53:27.413849570Z",
"start_time": "2026-03-25T12:53:27.245765495Z"
}
},
"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-25T12:53:27.819912529Z",
"start_time": "2026-03-25T12:53:27.491059110Z"
}
},
"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-25T12:53:28.107369770Z",
"start_time": "2026-03-25T12:53:27.908345229Z"
}
},
"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-25T12:53:28.483070674Z",
"start_time": "2026-03-25T12:53:28.179399310Z"
}
},
"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-25T12:53:28.940265905Z",
"start_time": "2026-03-25T12:53:28.769072795Z"
}
},
"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-25T12:53:29.204080403Z",
"start_time": "2026-03-25T12:53:29.030462580Z"
}
},
"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-25T12:53:29.646525680Z",
"start_time": "2026-03-25T12:53:29.347929714Z"
}
},
"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-25T12:53:30.137467722Z",
"start_time": "2026-03-25T12:53:29.924865950Z"
}
},
"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-25T12:53:30.333573187Z",
"start_time": "2026-03-25T12:53:30.191438502Z"
}
},
"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-25T12:53:31.737006650Z",
"start_time": "2026-03-25T12:53:30.344801829Z"
}
},
"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.003\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-25T12:53:31.954198352Z",
"start_time": "2026-03-25T12:53:31.789083268Z"
}
},
"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-25T12:53:32.286815333Z",
"start_time": "2026-03-25T12:53:32.015795016Z"
}
},
"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-25T12:53:32.508857009Z",
"start_time": "2026-03-25T12:53:32.348271053Z"
}
},
"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-25T12:53:32.590919691Z",
"start_time": "2026-03-25T12:53:32.513906871Z"
}
},
"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-25T12:53:32.717183431Z",
"start_time": "2026-03-25T12:53:32.611335875Z"
}
},
"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-25T12:53:32.787967768Z",
"start_time": "2026-03-25T12:53:32.720890025Z"
}
},
"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-25T12:53:32.925224132Z",
"start_time": "2026-03-25T12:53:32.820587683Z"
}
},
"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-25T12:53:33.185821813Z",
"start_time": "2026-03-25T12:53:32.981013074Z"
}
},
"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-25T12:53:33.377776100Z",
"start_time": "2026-03-25T12:53:33.230963272Z"
}
},
"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-25T12:53:33.404945478Z",
"start_time": "2026-03-25T12:53:33.381591903Z"
}
},
"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-25T12:53:33.482281628Z",
"start_time": "2026-03-25T12:53:33.427984889Z"
}
},
"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-25T12:53:33.539310405Z",
"start_time": "2026-03-25T12:53:33.485273899Z"
}
},
"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-25T12:53:33.644382591Z",
"start_time": "2026-03-25T12:53:33.542526101Z"
}
},
"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-25T12:53:33.715840072Z",
"start_time": "2026-03-25T12:53:33.685724533Z"
}
},
"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-25T12:53:33.833762326Z",
"start_time": "2026-03-25T12:53:33.752003546Z"
}
},
"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-25T12:53:33.941263303Z",
"start_time": "2026-03-25T12:53:33.837650145Z"
}
},
"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-25T12:53:34.291316821Z",
"start_time": "2026-03-25T12:53:34.048006688Z"
}
},
"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-25T12:53:34.937892470Z",
"start_time": "2026-03-25T12:53:34.524932637Z"
}
},
"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-25T12:53:35.364929618Z",
"start_time": "2026-03-25T12:53:35.250760743Z"
}
},
"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-25T12:53:35.405212051Z",
"start_time": "2026-03-25T12:53:35.381419347Z"
}
},
"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-25T12:53:35.511354814Z",
"start_time": "2026-03-25T12:53:35.428268478Z"
}
},
"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-25T12:53:35.571965177Z",
"start_time": "2026-03-25T12:53:35.523510246Z"
}
},
"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-25T12:53:35.636903197Z",
"start_time": "2026-03-25T12:53:35.575376191Z"
}
},
"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-25T12:53:35.808804883Z",
"start_time": "2026-03-25T12:53:35.667844728Z"
}
},
"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-25T12:54:36.172500455Z",
"start_time": "2026-03-25T12:54:33.846313406Z"
}
},
"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": 62
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:36.218171897Z",
"start_time": "2026-03-25T12:54:36.201338102Z"
}
},
"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": 63
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:36.375790030Z",
"start_time": "2026-03-25T12:54:36.223406778Z"
}
},
"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": 64
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:37.582867237Z",
"start_time": "2026-03-25T12:54:36.386034018Z"
}
},
"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": 65
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:39.007400793Z",
"start_time": "2026-03-25T12:54:37.697851296Z"
}
},
"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": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 66
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:40.559617829Z",
"start_time": "2026-03-25T12:54:39.231004686Z"
}
},
"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": 67
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:41.392761415Z",
"start_time": "2026-03-25T12:54:40.984224963Z"
}
},
"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": 68
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:41.501972047Z",
"start_time": "2026-03-25T12:54:41.455568607Z"
}
},
"cell_type": "code",
"source": [
"blk = Residual(3,3)\n",
"X = torch.rand(4, 3, 6, 6)"
],
"id": "1248323517ff3228",
"outputs": [],
"execution_count": 69
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:41.680548549Z",
"start_time": "2026-03-25T12:54:41.504484009Z"
}
},
"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": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 70
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:41.713889764Z",
"start_time": "2026-03-25T12:54:41.697804378Z"
}
},
"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": 71
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:41.769559409Z",
"start_time": "2026-03-25T12:54:41.715465374Z"
}
},
"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": 72
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:41.849526581Z",
"start_time": "2026-03-25T12:54:41.773164092Z"
}
},
"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": 73
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:41.945086842Z",
"start_time": "2026-03-25T12:54:41.850992491Z"
}
},
"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": 74
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:43.021161834Z",
"start_time": "2026-03-25T12:54:41.947258256Z"
}
},
"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": 75
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:43.115617383Z",
"start_time": "2026-03-25T12:54:43.046016884Z"
}
},
"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": 76
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:43.222301703Z",
"start_time": "2026-03-25T12:54:43.119038826Z"
}
},
"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": 77
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:43.326030676Z",
"start_time": "2026-03-25T12:54:43.296999050Z"
}
},
"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": 78
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:43.395079338Z",
"start_time": "2026-03-25T12:54:43.332112143Z"
}
},
"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": 79
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:43.526691390Z",
"start_time": "2026-03-25T12:54:43.405681993Z"
}
},
"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": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 80
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:44.183397512Z",
"start_time": "2026-03-25T12:54:43.839736167Z"
}
},
"cell_type": "code",
"source": "torch.det(torch.mm(torch.mm(A,C),B))",
"id": "9a85eceac652875f",
"outputs": [
{
"data": {
"text/plain": [
"tensor(1296.)"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 81
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:44.470157150Z",
"start_time": "2026-03-25T12:54:44.297718949Z"
}
},
"cell_type": "code",
"source": "1296**5\n",
"id": "6dc27d79722da58f",
"outputs": [
{
"data": {
"text/plain": [
"3656158440062976"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 82
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:44.641680344Z",
"start_time": "2026-03-25T12:54:44.488342487Z"
}
},
"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": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 83
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:45.007541962Z",
"start_time": "2026-03-25T12:54:44.731090643Z"
}
},
"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-25T20:54:44.863294</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(#p5cf86932f7)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_2\">\n <defs>\n <path id=\"m49149f9012\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m49149f9012\" 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(#p5cf86932f7)\" 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=\"#m49149f9012\" 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(#p5cf86932f7)\" 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=\"#m49149f9012\" 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(#p5cf86932f7)\" 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=\"#m49149f9012\" 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(#p5cf86932f7)\" 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=\"#m49149f9012\" 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 165.221306 \nL 386.960938 165.221306 \n\" clip-path=\"url(#p5cf86932f7)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_12\">\n <defs>\n <path id=\"m7d0767535c\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m7d0767535c\" x=\"52.160938\" y=\"165.221306\" 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 169.020525) 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 139.620338 \nL 386.960938 139.620338 \n\" clip-path=\"url(#p5cf86932f7)\" 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=\"#m7d0767535c\" x=\"52.160938\" y=\"139.620338\" 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 143.419557) 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 114.01937 \nL 386.960938 114.01937 \n\" clip-path=\"url(#p5cf86932f7)\" 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=\"#m7d0767535c\" x=\"52.160938\" y=\"114.01937\" 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 117.818588) 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 88.418401 \nL 386.960938 88.418401 \n\" clip-path=\"url(#p5cf86932f7)\" 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=\"#m7d0767535c\" x=\"52.160938\" y=\"88.418401\" 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 92.21762) 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 62.817433 \nL 386.960938 62.817433 \n\" clip-path=\"url(#p5cf86932f7)\" 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=\"#m7d0767535c\" x=\"52.160938\" y=\"62.817433\" 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 66.616652) 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 37.216465 \nL 386.960938 37.216465 \n\" clip-path=\"url(#p5cf86932f7)\" 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=\"#m7d0767535c\" x=\"52.160938\" y=\"37.216465\" 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 41.015683) 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.615496 \nL 386.960938 11.615496 \n\" clip-path=\"url(#p5cf86932f7)\" 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=\"#m7d0767535c\" x=\"52.160938\" y=\"11.615496\" 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.414715) 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 94.855956 \nL 52.496073 62.934022 \nL 52.831208 81.889164 \nL 53.166343 87.837881 \nL 53.501478 79.411242 \nL 53.836613 81.950186 \nL 54.506883 84.987396 \nL 54.842019 71.144626 \nL 55.177154 104.437754 \nL 55.512289 69.186882 \nL 55.847424 87.220749 \nL 56.182559 92.725262 \nL 56.517694 63.070146 \nL 56.852829 70.799375 \nL 57.187965 91.412548 \nL 57.5231 99.471144 \nL 57.858235 86.590434 \nL 58.19337 85.003761 \nL 58.528505 89.064918 \nL 58.86364 52.753432 \nL 59.198775 91.225162 \nL 59.53391 83.992469 \nL 59.869046 59.390002 \nL 60.204181 77.974178 \nL 60.539316 77.366926 \nL 60.874451 81.363732 \nL 61.544721 65.165201 \nL 62.214992 72.803751 \nL 62.550127 71.414299 \nL 62.885262 68.868394 \nL 63.220397 70.990559 \nL 63.555532 68.946324 \nL 63.890667 70.361047 \nL 64.560938 51.299361 \nL 64.896073 71.008174 \nL 65.231208 72.360573 \nL 65.566343 52.86633 \nL 65.901478 68.013403 \nL 66.236613 38.844215 \nL 66.571748 58.509928 \nL 66.906883 60.891335 \nL 67.242019 77.00334 \nL 67.577154 56.336963 \nL 67.912289 81.162249 \nL 68.247424 77.502081 \nL 68.582559 53.675113 \nL 68.917694 72.030693 \nL 69.587965 48.75033 \nL 69.9231 47.622315 \nL 70.258235 51.215609 \nL 70.59337 52.486897 \nL 70.928505 46.913462 \nL 71.26364 56.564935 \nL 71.598775 77.701469 \nL 71.93391 69.562473 \nL 72.269046 57.709143 \nL 72.604181 60.022143 \nL 72.939316 54.183299 \nL 73.274451 62.916906 \nL 73.609586 57.294556 \nL 73.944721 69.339234 \nL 74.279856 39.936758 \nL 74.614992 56.360203 \nL 74.950127 66.845198 \nL 75.285262 57.987099 \nL 75.620397 24.482267 \nL 75.955532 62.679061 \nL 76.290667 55.013354 \nL 76.625802 56.578708 \nL 76.960938 64.24444 \nL 77.296073 49.052062 \nL 77.631208 44.233902 \nL 78.301478 70.940285 \nL 78.636613 33.009396 \nL 79.306883 47.353237 \nL 79.642019 54.58741 \nL 79.977154 64.492321 \nL 80.312289 51.781899 \nL 80.647424 55.908682 \nL 80.982559 64.474647 \nL 81.317694 40.787742 \nL 81.652829 52.693747 \nL 81.987965 47.527005 \nL 82.3231 59.43463 \nL 82.658235 40.283753 \nL 82.99337 46.890344 \nL 83.328505 32.460132 \nL 83.66364 58.276133 \nL 83.998775 44.004896 \nL 84.33391 47.04144 \nL 84.669046 43.966628 \nL 85.004181 52.328175 \nL 85.339316 35.665106 \nL 85.674451 61.297505 \nL 86.009586 42.38986 \nL 86.344721 57.025438 \nL 86.679856 28.54627 \nL 87.014992 36.466973 \nL 87.350127 31.18166 \nL 87.685262 44.638874 \nL 88.020397 53.594507 \nL 88.355532 42.061118 \nL 88.690667 39.151364 \nL 89.360938 52.736635 \nL 90.031208 37.256554 \nL 90.366343 38.571051 \nL 90.701478 41.754896 \nL 91.036613 62.358498 \nL 91.371748 38.760529 \nL 91.706883 29.383936 \nL 92.042019 26.073013 \nL 92.377154 32.001314 \nL 92.712289 33.731317 \nL 93.047424 53.765925 \nL 93.382559 35.644188 \nL 93.717694 37.868708 \nL 94.052829 27.036874 \nL 94.387965 27.247624 \nL 94.7231 43.852891 \nL 95.058235 45.522971 \nL 95.39337 49.603664 \nL 95.728505 23.683732 \nL 96.06364 26.491553 \nL 96.398775 49.729935 \nL 96.73391 37.091515 \nL 97.069046 44.134539 \nL 97.404181 27.219266 \nL 97.739316 46.912794 \nL 98.074451 24.354687 \nL 98.409586 27.452851 \nL 98.744721 45.135755 \nL 99.079856 33.081964 \nL 99.414992 48.941658 \nL 99.750127 41.177253 \nL 100.085262 46.944985 \nL 100.420397 33.934205 \nL 100.755532 38.840241 \nL 101.090667 49.12123 \nL 101.425802 23.750428 \nL 101.760938 41.552108 \nL 102.096073 36.345228 \nL 102.431208 19.687896 \nL 102.766343 42.393781 \nL 103.101478 25.734188 \nL 103.436613 20.038636 \nL 104.106883 57.414302 \nL 104.442019 67.622424 \nL 105.112289 27.468208 \nL 105.447424 49.68518 \nL 105.782559 35.36294 \nL 106.117694 46.911942 \nL 106.452829 43.541469 \nL 106.787965 27.871592 \nL 107.1231 35.678321 \nL 107.458235 27.576482 \nL 107.79337 50.364521 \nL 108.128505 47.65085 \nL 108.46364 47.968007 \nL 108.798775 39.988856 \nL 109.13391 36.79928 \nL 109.469046 29.544318 \nL 109.804181 34.372326 \nL 110.139316 14.76 \nL 110.474451 37.788999 \nL 110.809586 48.021665 \nL 111.144721 40.011065 \nL 111.479856 39.43012 \nL 111.814992 38.076504 \nL 112.150127 48.301692 \nL 112.485262 47.026192 \nL 112.820397 51.133605 \nL 113.155532 29.794693 \nL 113.490667 23.352537 \nL 113.825802 30.485216 \nL 114.160938 53.900192 \nL 114.496073 57.691549 \nL 114.831208 55.222694 \nL 115.166343 42.378879 \nL 115.501478 37.135767 \nL 115.836613 35.208228 \nL 116.171748 59.593947 \nL 116.506883 20.165368 \nL 116.842019 40.68245 \nL 117.177154 54.013914 \nL 117.512289 37.452191 \nL 117.847424 32.83688 \nL 118.182559 36.676594 \nL 118.517694 54.737086 \nL 118.852829 32.227952 \nL 119.187965 41.503468 \nL 119.858235 32.784223 \nL 120.19337 44.070795 \nL 120.528505 60.176766 \nL 120.86364 35.17666 \nL 121.198775 34.779239 \nL 121.53391 44.767132 \nL 121.869046 43.752845 \nL 122.204181 32.693039 \nL 122.539316 59.594325 \nL 122.874451 68.125921 \nL 123.209586 51.753718 \nL 123.544721 26.442986 \nL 123.879856 37.086522 \nL 124.214992 33.035923 \nL 124.550127 48.066463 \nL 124.885262 47.560194 \nL 125.555532 59.5333 \nL 125.890667 48.280811 \nL 126.225802 51.637558 \nL 126.560938 53.716881 \nL 126.896073 28.890021 \nL 127.231208 52.621631 \nL 127.566343 51.06401 \nL 127.901478 41.574216 \nL 128.236613 63.74882 \nL 128.571748 70.019436 \nL 128.906883 47.165663 \nL 129.242019 38.330426 \nL 129.577154 52.673714 \nL 129.912289 45.618189 \nL 130.247424 59.662031 \nL 130.582559 43.613997 \nL 130.917694 65.253368 \nL 131.252829 39.877021 \nL 131.587965 67.647106 \nL 131.9231 55.584426 \nL 132.258235 53.968969 \nL 132.59337 47.251393 \nL 132.928505 31.315582 \nL 133.26364 53.847941 \nL 133.598775 52.421004 \nL 133.93391 58.404217 \nL 134.269046 50.66857 \nL 134.604181 54.215942 \nL 134.939316 53.911484 \nL 135.274451 50.672589 \nL 135.609586 33.086206 \nL 135.944721 44.942636 \nL 136.279856 64.7198 \nL 136.614992 59.257069 \nL 136.950127 64.48199 \nL 137.285262 45.94596 \nL 137.620397 48.065935 \nL 137.955532 54.514006 \nL 138.290667 69.467642 \nL 138.625802 68.00509 \nL 138.960938 57.278124 \nL 139.296073 63.205024 \nL 139.631208 57.002678 \nL 139.966343 64.073042 \nL 140.301478 51.727414 \nL 140.971748 76.026913 \nL 141.306883 75.604678 \nL 141.642019 57.896086 \nL 141.977154 61.056154 \nL 142.312289 57.427501 \nL 142.647424 60.929337 \nL 142.982559 76.68928 \nL 143.317694 70.480888 \nL 143.652829 73.91271 \nL 144.3231 84.212168 \nL 144.658235 79.363029 \nL 144.99337 62.155988 \nL 145.328505 74.850153 \nL 145.66364 80.639234 \nL 145.998775 74.799821 \nL 146.33391 80.713273 \nL 146.669046 76.093719 \nL 147.004181 79.37483 \nL 147.339316 77.077974 \nL 147.674451 69.172172 \nL 148.009586 85.12478 \nL 148.344721 73.524707 \nL 148.679856 87.293801 \nL 149.014992 58.323775 \nL 149.350127 80.435165 \nL 149.685262 76.443592 \nL 150.020397 70.327553 \nL 150.355532 95.828901 \nL 150.690667 59.454476 \nL 151.025802 85.060321 \nL 151.360938 98.210859 \nL 151.696073 78.304947 \nL 152.031208 89.93512 \nL 152.366343 70.336975 \nL 152.701478 88.254617 \nL 153.036613 80.190574 \nL 153.371748 76.901109 \nL 153.706883 84.408711 \nL 154.042019 79.905811 \nL 154.377154 92.415222 \nL 154.712289 91.524168 \nL 155.047424 72.816703 \nL 155.382559 75.819626 \nL 155.717694 90.36222 \nL 156.052829 85.957392 \nL 156.387965 88.62097 \nL 156.7231 87.85633 \nL 157.058235 89.550477 \nL 157.39337 83.291643 \nL 157.728505 84.556303 \nL 158.06364 77.396682 \nL 158.398775 96.528962 \nL 158.73391 88.248509 \nL 159.069046 99.024933 \nL 159.404181 80.113069 \nL 159.739316 94.123758 \nL 160.074451 93.30402 \nL 160.409586 101.641262 \nL 160.744721 91.364219 \nL 161.079856 92.938549 \nL 161.414992 70.896611 \nL 161.750127 97.673524 \nL 162.085262 102.589448 \nL 162.420397 98.473202 \nL 162.755532 80.604061 \nL 163.090667 95.392431 \nL 163.425802 84.965421 \nL 163.760938 114.49404 \nL 164.096073 90.178554 \nL 164.431208 107.266925 \nL 164.766343 99.772084 \nL 165.101478 97.293314 \nL 165.436613 91.434164 \nL 165.771748 94.530578 \nL 166.106883 93.433322 \nL 166.442019 99.281294 \nL 166.777154 116.206928 \nL 167.112289 114.164968 \nL 167.447424 88.118865 \nL 167.782559 98.881579 \nL 168.452829 106.068558 \nL 168.787965 91.168566 \nL 169.458235 124.92718 \nL 169.79337 114.87199 \nL 170.128505 111.33971 \nL 170.46364 110.854278 \nL 170.798775 88.027342 \nL 171.13391 97.65556 \nL 171.469046 96.05065 \nL 171.804181 82.222363 \nL 172.139316 110.327685 \nL 172.474451 120.183833 \nL 172.809586 125.843511 \nL 173.144721 97.814499 \nL 173.479856 136.311296 \nL 173.814992 122.492676 \nL 174.150127 125.619045 \nL 174.485262 117.016395 \nL 174.820397 130.479294 \nL 175.155532 108.888304 \nL 175.490667 122.552477 \nL 175.825802 109.030289 \nL 176.160938 106.882369 \nL 176.496073 100.123832 \nL 177.166343 130.638681 \nL 177.501478 101.562308 \nL 177.836613 129.491699 \nL 178.171748 108.24749 \nL 178.506883 123.139932 \nL 178.842019 129.4863 \nL 179.512289 123.6837 \nL 179.847424 117.719888 \nL 180.182559 122.522218 \nL 180.517694 110.559275 \nL 180.852829 121.606204 \nL 181.187965 114.685298 \nL 181.5231 123.479301 \nL 181.858235 116.372834 \nL 182.19337 131.904165 \nL 182.528505 97.681972 \nL 182.86364 114.866271 \nL 183.198775 112.337278 \nL 183.53391 132.087979 \nL 183.869046 139.087359 \nL 184.204181 134.010027 \nL 184.539316 111.450121 \nL 184.874451 143.763866 \nL 185.544721 124.899752 \nL 185.879856 112.109346 \nL 186.214992 117.311615 \nL 186.885262 134.448811 \nL 187.220397 130.205913 \nL 187.555532 116.579415 \nL 187.890667 136.747137 \nL 188.560938 124.935221 \nL 188.896073 130.658118 \nL 189.231208 138.454754 \nL 189.566343 134.226378 \nL 189.901478 113.863529 \nL 190.236613 113.735242 \nL 190.571748 111.990046 \nL 190.906883 124.406362 \nL 191.242019 126.913803 \nL 191.577154 127.509248 \nL 191.912289 129.685297 \nL 192.247424 130.915373 \nL 192.582559 145.732575 \nL 192.917694 152.057759 \nL 193.587965 106.992715 \nL 193.9231 145.249164 \nL 194.258235 131.104296 \nL 194.59337 143.548959 \nL 194.928505 125.247111 \nL 195.26364 120.435536 \nL 195.598775 138.098628 \nL 195.93391 118.69653 \nL 196.269046 143.180843 \nL 196.604181 137.624211 \nL 196.939316 128.337578 \nL 197.274451 133.110714 \nL 197.609586 147.380806 \nL 197.944721 134.367222 \nL 198.279856 146.157902 \nL 198.614992 130.900544 \nL 198.950127 120.860675 \nL 199.285262 165.96 \nL 199.620397 144.640676 \nL 199.955532 143.775781 \nL 200.290667 114.716512 \nL 200.960938 135.208678 \nL 201.296073 134.608955 \nL 201.631208 143.055282 \nL 201.966343 147.077718 \nL 202.301478 136.892488 \nL 202.636613 119.356461 \nL 202.971748 134.102878 \nL 203.306883 137.057494 \nL 203.642019 121.759878 \nL 203.977154 143.351607 \nL 204.312289 147.757517 \nL 204.647424 148.199056 \nL 205.317694 126.877409 \nL 205.652829 131.832675 \nL 205.987965 131.480946 \nL 206.3231 149.523801 \nL 206.658235 133.830196 \nL 206.99337 136.241188 \nL 207.328505 140.911604 \nL 207.66364 130.379882 \nL 207.998775 155.186765 \nL 208.33391 121.738109 \nL 208.669046 140.044719 \nL 209.004181 146.186681 \nL 209.339316 137.246386 \nL 209.674451 143.529958 \nL 210.009586 153.702163 \nL 210.344721 139.993765 \nL 210.679856 140.947225 \nL 211.014992 130.115538 \nL 211.350127 150.280763 \nL 211.685262 137.358177 \nL 212.020397 139.08402 \nL 212.355532 141.754696 \nL 212.690667 140.015098 \nL 213.025802 126.613242 \nL 213.360938 125.278475 \nL 213.696073 145.346024 \nL 214.031208 126.366355 \nL 214.366343 150.660471 \nL 214.701478 134.333465 \nL 215.036613 130.372051 \nL 215.371748 144.94817 \nL 215.706883 135.963577 \nL 216.042019 135.292269 \nL 216.377154 126.731765 \nL 216.712289 138.976869 \nL 217.047424 142.059023 \nL 217.717694 129.121705 \nL 218.052829 133.591744 \nL 218.387965 132.274287 \nL 218.7231 139.708891 \nL 219.058235 138.266963 \nL 219.39337 133.181957 \nL 219.728505 137.10839 \nL 220.06364 157.022925 \nL 220.398775 133.789936 \nL 220.73391 142.474212 \nL 221.404181 121.026944 \nL 221.739316 143.784405 \nL 222.074451 126.872273 \nL 222.409586 132.577002 \nL 222.744721 145.576398 \nL 223.414992 125.913893 \nL 223.750127 134.927375 \nL 224.085262 131.182287 \nL 224.420397 123.498079 \nL 224.755532 135.389926 \nL 225.090667 136.609311 \nL 225.425802 155.185783 \nL 225.760938 120.455636 \nL 226.096073 128.425865 \nL 226.431208 127.689424 \nL 226.766343 142.793725 \nL 227.101478 135.36097 \nL 227.436613 140.802322 \nL 227.771748 116.742541 \nL 228.106883 129.148595 \nL 228.442019 136.000221 \nL 228.777154 129.299629 \nL 229.112289 136.931528 \nL 229.447424 129.759839 \nL 229.782559 139.854838 \nL 230.117694 128.6957 \nL 230.452829 129.945048 \nL 230.787965 130.246143 \nL 231.1231 129.016626 \nL 231.458235 137.455135 \nL 231.79337 126.770746 \nL 232.128505 124.020447 \nL 232.46364 127.330115 \nL 232.798775 120.922737 \nL 233.13391 117.868114 \nL 233.469046 122.209325 \nL 233.804181 146.670507 \nL 234.139316 141.379639 \nL 234.474451 121.79077 \nL 234.809586 126.850858 \nL 235.144721 135.664555 \nL 235.479856 128.429863 \nL 235.814992 136.040686 \nL 236.150127 111.270146 \nL 236.485262 130.163883 \nL 237.155532 121.91824 \nL 237.490667 139.938099 \nL 237.825802 111.263878 \nL 238.160938 116.009823 \nL 238.496073 107.075761 \nL 238.831208 108.15364 \nL 239.166343 114.914209 \nL 239.501478 106.841374 \nL 239.836613 128.075776 \nL 240.171748 130.805457 \nL 240.842019 116.676382 \nL 241.177154 123.485191 \nL 241.512289 122.527406 \nL 241.847424 130.821525 \nL 242.182559 118.767196 \nL 242.517694 131.153721 \nL 242.852829 114.781673 \nL 243.187965 88.587014 \nL 243.5231 125.717175 \nL 243.858235 132.753263 \nL 244.19337 110.540017 \nL 244.528505 116.235426 \nL 244.86364 116.842926 \nL 245.198775 113.692311 \nL 245.53391 108.848295 \nL 245.869046 102.225608 \nL 246.204181 116.003667 \nL 246.874451 117.413108 \nL 247.544721 102.073035 \nL 247.879856 106.062459 \nL 248.214992 104.377725 \nL 248.550127 104.340183 \nL 248.885262 132.25809 \nL 249.220397 102.378539 \nL 249.555532 114.092901 \nL 249.890667 112.579703 \nL 250.225802 115.747713 \nL 250.560938 127.667478 \nL 250.896073 97.911852 \nL 251.231208 118.228904 \nL 251.566343 112.657892 \nL 251.901478 101.652224 \nL 252.236613 102.522504 \nL 252.571748 109.140459 \nL 252.906883 93.034991 \nL 253.242019 93.457728 \nL 253.577154 106.003594 \nL 253.912289 92.286335 \nL 254.247424 115.087595 \nL 254.582559 100.878927 \nL 254.917694 106.522586 \nL 255.252829 91.5781 \nL 255.587965 81.885025 \nL 255.9231 89.186667 \nL 256.258235 115.023726 \nL 256.59337 102.194347 \nL 256.928505 130.988618 \nL 257.26364 80.897502 \nL 257.598775 90.662863 \nL 257.93391 113.075088 \nL 258.269046 79.309564 \nL 258.604181 97.169844 \nL 258.939316 99.30483 \nL 259.274451 103.136631 \nL 259.609586 110.584259 \nL 259.944721 93.369708 \nL 260.279856 116.785996 \nL 260.950127 88.526979 \nL 261.285262 97.998329 \nL 261.620397 87.084359 \nL 261.955532 91.352545 \nL 262.290667 72.053547 \nL 262.625802 80.295212 \nL 262.960938 80.124885 \nL 263.296073 104.097524 \nL 263.631208 79.203083 \nL 263.966343 89.524809 \nL 264.301478 92.826014 \nL 264.636613 68.574925 \nL 264.971748 75.238258 \nL 265.306883 75.246014 \nL 265.642019 69.504603 \nL 265.977154 81.702972 \nL 266.312289 57.645222 \nL 266.647424 87.017171 \nL 266.982559 87.256953 \nL 267.317694 95.561485 \nL 267.652829 87.322618 \nL 267.987965 70.058936 \nL 268.3231 86.725006 \nL 268.99337 64.359905 \nL 269.328505 70.331059 \nL 269.66364 93.263825 \nL 269.998775 80.402015 \nL 270.33391 74.243675 \nL 270.669046 56.849574 \nL 271.004181 70.387449 \nL 271.339316 76.349885 \nL 271.674451 74.733718 \nL 272.009586 75.586106 \nL 272.679856 56.863912 \nL 273.014992 81.258507 \nL 273.350127 71.581372 \nL 273.685262 66.856725 \nL 274.020397 71.455629 \nL 274.355532 83.15055 \nL 274.690667 66.481517 \nL 275.025802 81.328939 \nL 275.360937 82.621423 \nL 275.696073 83.35422 \nL 276.031208 70.153009 \nL 276.366343 76.492476 \nL 277.036613 52.198068 \nL 277.371748 72.120261 \nL 277.706883 73.395577 \nL 278.042019 65.209674 \nL 278.377154 74.133307 \nL 278.712289 63.806492 \nL 279.047424 46.626165 \nL 279.382559 52.617615 \nL 279.717694 78.44647 \nL 280.387965 45.890535 \nL 280.7231 73.111227 \nL 281.058235 74.502822 \nL 281.39337 51.77802 \nL 281.728505 47.090727 \nL 282.06364 54.083207 \nL 282.398775 58.515198 \nL 282.73391 47.409874 \nL 283.069046 60.936921 \nL 283.404181 44.682958 \nL 283.739316 65.11568 \nL 284.074451 54.51964 \nL 284.409586 57.676198 \nL 284.744721 54.68283 \nL 285.079856 64.217974 \nL 285.414992 57.74355 \nL 285.750127 47.027322 \nL 286.085262 58.781288 \nL 286.420397 51.936595 \nL 286.755532 54.873071 \nL 287.090667 41.361067 \nL 287.425802 71.210296 \nL 287.760938 45.74313 \nL 288.096073 75.10922 \nL 288.431208 53.44705 \nL 288.766343 53.310945 \nL 289.101478 65.35216 \nL 289.436613 51.023899 \nL 289.771748 59.939364 \nL 290.106883 72.367002 \nL 290.442019 50.367228 \nL 290.777154 46.496351 \nL 291.447424 56.528328 \nL 291.782559 46.05797 \nL 292.117694 55.209949 \nL 292.452829 38.223973 \nL 292.787965 55.220295 \nL 293.1231 49.007514 \nL 293.458235 29.37818 \nL 293.79337 37.90136 \nL 294.128505 17.088884 \nL 294.46364 38.512385 \nL 294.798775 24.618326 \nL 295.13391 34.15778 \nL 295.469046 52.506963 \nL 295.804181 42.272454 \nL 296.139316 39.412815 \nL 296.474451 52.367996 \nL 296.809586 32.382615 \nL 297.144721 28.193199 \nL 297.479856 30.274594 \nL 298.150127 36.341871 \nL 298.485262 44.661024 \nL 298.820397 41.292406 \nL 299.155532 39.65135 \nL 299.490667 18.190165 \nL 299.825802 49.349532 \nL 300.496073 36.292583 \nL 300.831208 35.343695 \nL 301.166343 35.383583 \nL 301.501478 44.336753 \nL 301.836613 44.211212 \nL 302.506883 50.132645 \nL 302.842019 38.200508 \nL 303.177154 35.809429 \nL 303.512289 26.614074 \nL 303.847424 58.723879 \nL 304.182559 43.188575 \nL 304.517694 43.442439 \nL 304.852829 29.805235 \nL 305.187965 32.654726 \nL 305.5231 58.663833 \nL 306.19337 22.709495 \nL 306.528505 37.54151 \nL 306.86364 30.273368 \nL 307.198775 45.889196 \nL 307.869046 36.225131 \nL 308.204181 15.098727 \nL 308.539316 23.959835 \nL 308.874451 41.43918 \nL 309.209586 43.111503 \nL 309.544721 28.373198 \nL 310.214992 49.509654 \nL 310.550127 46.947707 \nL 310.885262 33.695128 \nL 311.220397 52.508385 \nL 311.555532 35.885109 \nL 311.890667 52.240074 \nL 312.560938 34.256813 \nL 312.896073 44.187602 \nL 313.231208 32.258294 \nL 313.566343 39.502742 \nL 313.901478 35.118528 \nL 314.236613 48.435059 \nL 314.571748 42.703205 \nL 314.906883 39.038268 \nL 315.242019 42.440728 \nL 315.577154 38.528895 \nL 315.912289 54.335172 \nL 316.247424 34.406855 \nL 316.582559 38.670725 \nL 316.917694 35.825103 \nL 317.252829 39.723008 \nL 317.587965 32.136323 \nL 317.9231 45.688602 \nL 318.258235 35.656671 \nL 318.59337 35.838672 \nL 318.928505 39.761452 \nL 319.26364 34.034032 \nL 319.598775 37.456607 \nL 319.93391 21.757359 \nL 320.269046 34.929061 \nL 320.604181 38.451799 \nL 320.939316 37.456787 \nL 321.274451 33.648501 \nL 321.609586 39.167719 \nL 321.944721 33.728637 \nL 322.279856 32.895818 \nL 322.614992 53.527064 \nL 322.950127 48.611702 \nL 323.285262 27.860154 \nL 323.620397 29.029601 \nL 323.955532 50.342398 \nL 324.290667 44.539502 \nL 324.625802 50.567583 \nL 324.960938 25.902145 \nL 325.296073 45.666937 \nL 325.631208 49.440816 \nL 325.966343 48.044371 \nL 326.301478 32.142695 \nL 326.636613 53.258642 \nL 326.971748 60.454758 \nL 327.306883 31.02754 \nL 327.642019 30.741922 \nL 328.312289 45.395119 \nL 328.647424 37.76943 \nL 329.317694 58.877358 \nL 329.652829 47.476716 \nL 329.987965 31.979175 \nL 330.3231 27.550511 \nL 330.658235 45.974267 \nL 330.99337 37.629899 \nL 331.328505 51.183811 \nL 331.66364 56.935512 \nL 331.998775 43.649359 \nL 332.33391 50.884438 \nL 332.669046 40.343585 \nL 333.004181 42.910195 \nL 333.339316 63.775421 \nL 333.674451 29.023394 \nL 334.009586 53.238012 \nL 334.344721 48.583328 \nL 334.679856 38.757014 \nL 335.014992 72.637223 \nL 335.350127 45.453608 \nL 335.685262 57.809474 \nL 336.020397 59.249787 \nL 336.355532 41.176624 \nL 336.690667 65.369617 \nL 337.025802 61.314813 \nL 337.360937 50.99245 \nL 337.696073 49.612618 \nL 338.031208 57.722633 \nL 338.701478 60.306165 \nL 339.371748 38.646377 \nL 339.706883 40.19209 \nL 340.042019 60.803508 \nL 340.377154 37.888035 \nL 340.712289 37.771069 \nL 341.047424 59.159662 \nL 341.382559 49.402466 \nL 341.717694 53.60153 \nL 342.052829 45.346359 \nL 342.387965 57.341081 \nL 342.7231 79.334409 \nL 343.058235 56.68575 \nL 343.728505 47.535013 \nL 344.06364 61.745685 \nL 344.398775 30.512756 \nL 344.73391 54.029961 \nL 345.069046 51.444148 \nL 345.404181 61.234228 \nL 345.739316 56.963208 \nL 346.074451 41.253562 \nL 346.409586 54.703707 \nL 346.744721 60.164604 \nL 347.079856 49.116347 \nL 347.414992 52.564396 \nL 347.750127 59.179188 \nL 348.085262 60.303306 \nL 348.420397 51.144323 \nL 348.755532 26.012989 \nL 349.090667 72.00257 \nL 349.760938 50.253731 \nL 350.096073 58.373906 \nL 350.431208 56.965301 \nL 350.766343 44.830919 \nL 351.101478 78.814519 \nL 351.436613 59.377691 \nL 351.771748 66.444577 \nL 352.106883 60.579116 \nL 352.442019 63.28095 \nL 352.777154 51.867873 \nL 353.112289 58.407757 \nL 353.447424 69.343575 \nL 353.782559 61.826456 \nL 354.117694 63.620068 \nL 354.452829 86.989073 \nL 354.787965 72.277376 \nL 355.1231 66.234853 \nL 355.458235 58.130421 \nL 355.79337 74.546133 \nL 356.128505 63.531461 \nL 356.798775 92.737641 \nL 357.13391 80.622478 \nL 357.469046 99.128627 \nL 357.804181 73.238382 \nL 358.139316 94.974196 \nL 358.474451 65.482555 \nL 358.809586 65.930223 \nL 359.144721 78.334677 \nL 359.479856 78.232994 \nL 359.814992 93.378042 \nL 360.150127 73.93272 \nL 360.485262 79.501661 \nL 360.820397 98.094101 \nL 361.155532 91.040069 \nL 361.490667 63.961757 \nL 361.825802 86.072413 \nL 362.160938 84.709746 \nL 362.496073 78.197508 \nL 362.831208 74.22702 \nL 363.166343 91.746422 \nL 363.501478 66.142055 \nL 363.836613 74.632267 \nL 364.171748 89.944277 \nL 364.506883 94.41425 \nL 364.842019 69.4004 \nL 365.177154 83.340406 \nL 365.512289 87.959029 \nL 366.182559 82.146141 \nL 366.517694 81.30587 \nL 366.852829 82.447847 \nL 367.5231 86.189639 \nL 367.858235 94.865671 \nL 368.19337 93.768938 \nL 368.528505 79.311177 \nL 368.86364 98.920524 \nL 369.198775 100.999198 \nL 369.869046 93.493721 \nL 370.204181 79.963327 \nL 370.539316 79.652374 \nL 370.874451 95.789206 \nL 371.209586 90.972247 \nL 371.544721 93.24621 \nL 371.879856 82.999311 \nL 372.214992 104.923768 \nL 372.885262 95.112233 \nL 373.220397 100.868508 \nL 373.890667 95.906279 \nL 374.225802 107.865904 \nL 374.560938 108.164603 \nL 374.896073 108.236894 \nL 375.231208 82.624859 \nL 375.566343 117.754493 \nL 375.901478 80.951443 \nL 376.236613 115.297604 \nL 376.571748 94.118462 \nL 376.906883 93.971646 \nL 377.242019 108.766166 \nL 377.577154 102.743299 \nL 377.912289 103.752676 \nL 378.247424 91.066895 \nL 378.582559 96.616168 \nL 378.917694 115.10855 \nL 379.252829 108.371767 \nL 379.587965 114.749195 \nL 379.9231 110.272379 \nL 380.258235 110.273505 \nL 380.59337 96.574961 \nL 380.928505 107.463909 \nL 381.26364 98.810355 \nL 381.93391 129.426993 \nL 382.269046 115.145142 \nL 382.604181 115.510182 \nL 382.939316 107.514448 \nL 383.274451 111.824595 \nL 383.944721 104.05023 \nL 384.279856 107.587501 \nL 384.614992 126.508886 \nL 384.950127 125.989857 \nL 385.285262 103.043512 \nL 385.620397 106.030121 \nL 386.290667 129.075084 \nL 386.625802 119.713744 \nL 386.960938 98.364787 \nL 386.960938 98.364787 \n\" clip-path=\"url(#p5cf86932f7)\" 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=\"p5cf86932f7\">\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": 84
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:45.287386804Z",
"start_time": "2026-03-25T12:54:45.068746693Z"
}
},
"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([-0.1257, 0.4977, 0.1275, 0.0113, 0.1759, 0.1263, 0.0984, 0.0670,\n",
" 0.3374, -0.3129, 0.3756, 0.0234, -0.0841, 0.4951, 0.3441, -0.0585,\n",
" -0.2159, 0.0357, 0.0667, -0.0126, 0.6966, -0.0548, 0.0864, 0.5669,\n",
" 0.2040, 0.2158, 0.1378, 0.2790, 0.4541, 0.3656, 0.3050, 0.3321,\n",
" 0.3818, 0.3404, 0.3803, 0.3527, 0.5237, 0.7250, 0.3400, 0.3136,\n",
" 0.6944, 0.3985, 0.9682, 0.5841, 0.5376, 0.2229, 0.6266, 0.1417,\n",
" 0.2132, 0.6786, 0.3201, 0.5340, 0.7747, 0.7968, 0.7266, 0.7018,\n",
" 0.8106, 0.6221, 0.2093, 0.3683, 0.5998, 0.5546, 0.6686, 0.4981,\n",
" 0.6079, 0.3726, 0.9469, 0.6261, 0.4213, 0.5943, 1.2487, 0.5027,\n",
" 0.6524, 0.6218, 0.4721, 0.7688, 0.8629, 0.5897, 0.3414, 1.0822,\n",
" 0.9223, 0.8020, 0.6607, 0.4673, 0.7155, 0.6349, 0.4676, 0.9303,\n",
" 0.6977, 0.7986, 0.5661, 0.9401, 0.8111, 1.0929, 0.5887, 0.8674,\n",
" 0.8081, 0.8682, 0.7049, 1.0303, 0.5297, 0.8990, 0.6131, 1.1693,\n",
" 1.0146, 1.1179, 0.8550, 0.6801, 0.9054, 0.9622, 0.8227, 0.6969,\n",
" 0.8629, 0.9992, 0.9735, 0.9114, 0.5090, 0.9698, 1.1530, 1.2176,\n",
" 1.1019, 1.0681, 0.6768, 1.0307, 0.9873, 1.1988, 1.1947, 0.8704,\n",
" 0.8378, 0.7581, 1.2643, 1.2095, 0.7556, 1.0024, 0.8649, 1.1953,\n",
" 0.8106, 1.2512, 1.1907, 0.8453, 1.0807, 0.7710, 0.9226, 0.8100,\n",
" 1.0641, 0.9683, 0.7675, 1.2630, 0.9153, 1.0170, 1.3423, 0.8989,\n",
" 1.2243, 1.3355, 0.9849, 0.6055, 0.4062, 0.8255, 1.1904, 0.7565,\n",
" 1.0362, 0.8106, 0.8765, 1.1825, 1.0300, 1.1883, 0.7432, 0.7962,\n",
" 0.7900, 0.9459, 1.0081, 1.1498, 1.0555, 1.4386, 0.9888, 0.7890,\n",
" 0.9454, 0.9568, 0.9832, 0.7835, 0.8084, 0.7282, 1.1450, 1.2708,\n",
" 1.1315, 0.6742, 0.6001, 0.6483, 0.8992, 1.0016, 1.0392, 0.5630,\n",
" 1.3330, 0.9323, 0.6719, 0.9954, 1.0855, 1.0105, 0.6578, 1.0974,\n",
" 0.9163, 1.0161, 1.0866, 0.8661, 0.5516, 1.0398, 1.0476, 0.8525,\n",
" 0.8723, 1.0883, 0.5629, 0.3963, 0.7161, 1.2104, 1.0025, 1.0816,\n",
" 0.7881, 0.7980, 0.6719, 0.5641, 0.7839, 0.7183, 0.6777, 1.1626,\n",
" 0.6991, 0.7296, 0.9149, 0.4818, 0.3593, 0.8057, 0.9782, 0.6981,\n",
" 0.8359, 0.5616, 0.8751, 0.4524, 0.9480, 0.4057, 0.6413, 0.6728,\n",
" 0.8040, 1.1152, 0.6752, 0.7030, 0.5862, 0.7373, 0.6680, 0.6739,\n",
" 0.7372, 1.0807, 0.8491, 0.4628, 0.5695, 0.4675, 0.8295, 0.7881,\n",
" 0.6622, 0.3701, 0.3987, 0.6082, 0.4924, 0.6136, 0.4755, 0.7166,\n",
" 0.4721, 0.2420, 0.2503, 0.5961, 0.5344, 0.6053, 0.5369, 0.2291,\n",
" 0.3503, 0.2833, 0.1630, 0.0821, 0.1769, 0.5129, 0.2650, 0.1519,\n",
" 0.2660, 0.1505, 0.2407, 0.1766, 0.2215, 0.3759, 0.0643, 0.2909,\n",
" 0.0220, 0.5878, 0.1559, 0.2339, 0.3533, -0.1447, 0.5657, 0.0656,\n",
" -0.1913, 0.1975, -0.0296, 0.3531, 0.0032, 0.1607, 0.2249, 0.0783,\n",
" 0.1663, -0.0781, -0.0607, 0.3047, 0.2461, -0.0380, 0.0481, -0.0040,\n",
" 0.0110, -0.0221, 0.1001, 0.0754, 0.2153, -0.1584, 0.0033, -0.2072,\n",
" 0.1622, -0.1114, -0.0954, -0.2582, -0.0575, -0.0883, 0.3422, -0.1808,\n",
" -0.2768, -0.1964, 0.1526, -0.1362, 0.0674, -0.5093, -0.0344, -0.3681,\n",
" -0.2217, -0.1733, -0.0589, -0.1194, -0.0979, -0.2122, -0.5427, -0.5028,\n",
" 0.0059, -0.2044, -0.2778, -0.3447, -0.0537, -0.4030, -0.7130, -0.5167,\n",
" -0.4477, -0.4382, 0.0076, -0.1804, -0.1491, 0.1210, -0.4279, -0.6204,\n",
" -0.7309, -0.1835, -0.9354, -0.6655, -0.7265, -0.5585, -0.8215, -0.3998,\n",
" -0.6667, -0.4026, -0.3606, -0.2286, -0.5571, -0.8246, -0.2567, -0.8022,\n",
" -0.3873, -0.6781, -0.8021, -0.7463, -0.6887, -0.5723, -0.6661, -0.4324,\n",
" -0.6482, -0.5130, -0.6848, -0.5460, -0.8493, -0.1809, -0.5165, -0.4671,\n",
" -0.8529, -0.9896, -0.8904, -0.4498, -1.0809, -0.9123, -0.7125, -0.4627,\n",
" -0.5643, -0.7416, -0.8990, -0.8161, -0.5500, -0.9439, -0.8327, -0.7132,\n",
" -0.8250, -0.9772, -0.8947, -0.4970, -0.4945, -0.4604, -0.7029, -0.7518,\n",
" -0.7635, -0.8060, -0.8300, -1.1194, -1.2429, -0.7834, -0.3628, -1.1099,\n",
" -0.8337, -1.0767, -0.7193, -0.6253, -0.9703, -0.5913, -1.0695, -0.9610,\n",
" -0.7796, -0.8729, -1.1516, -0.8974, -1.1277, -0.8297, -0.6336, -1.5144,\n",
" -1.0980, -1.0812, -0.5136, -0.6882, -0.9138, -0.9021, -1.0671, -1.1456,\n",
" -0.9467, -0.6042, -0.8922, -0.9499, -0.6512, -1.0729, -1.1589, -1.1675,\n",
" -0.9637, -0.7511, -0.8479, -0.8410, -1.1934, -0.8869, -0.9340, -1.0252,\n",
" -0.8195, -1.3040, -0.6508, -1.0083, -1.1282, -0.9536, -1.0764, -1.2750,\n",
" -1.0073, -1.0259, -0.8144, -1.2082, -0.9558, -0.9895, -1.0417, -1.0077,\n",
" -0.7460, -0.7199, -1.1118, -0.7411, -1.2156, -0.8967, -0.8194, -1.1041,\n",
" -0.9286, -0.9155, -0.7483, -0.9874, -1.0476, -0.9132, -0.7950, -0.8823,\n",
" -0.8565, -1.0017, -0.9736, -0.8743, -0.9509, -1.3399, -0.8861, -1.0557,\n",
" -0.8494, -0.6369, -1.0813, -0.7510, -0.8624, -1.1163, -0.9114, -0.7323,\n",
" -0.9083, -0.8352, -0.6851, -0.9174, -0.9412, -1.3040, -0.6257, -0.7814,\n",
" -0.7670, -1.0620, -0.9168, -1.0231, -0.5532, -0.7955, -0.9293, -0.7984,\n",
" -0.9475, -0.8074, -1.0046, -0.7866, -0.8110, -0.8169, -0.7929, -0.9577,\n",
" -0.7490, -0.6953, -0.7600, -0.6348, -0.5752, -0.6600, -1.1377, -1.0344,\n",
" -0.6518, -0.7506, -0.9227, -0.7814, -0.9301, -0.4463, -0.8153, -0.7221,\n",
" -0.6543, -1.0062, -0.4462, -0.5389, -0.3644, -0.3854, -0.5175, -0.3598,\n",
" -0.7745, -0.8278, -0.6843, -0.5519, -0.6849, -0.6662, -0.8282, -0.5927,\n",
" -0.8346, -0.5149, -0.0033, -0.7285, -0.8659, -0.4320, -0.5433, -0.5551,\n",
" -0.4936, -0.3990, -0.2697, -0.5388, -0.5527, -0.5663, -0.4017, -0.2667,\n",
" -0.3446, -0.3117, -0.3110, -0.8562, -0.2726, -0.5014, -0.4719, -0.5338,\n",
" -0.7666, -0.1854, -0.5822, -0.4734, -0.2585, -0.2755, -0.4047, -0.0902,\n",
" -0.0984, -0.3434, -0.0755, -0.5209, -0.2434, -0.3536, -0.0617, 0.1276,\n",
" -0.0150, -0.5196, -0.2691, -0.8314, 0.1469, -0.0438, -0.4816, 0.1779,\n",
" -0.1709, -0.2126, -0.2875, -0.4329, -0.0967, -0.5540, -0.2296, -0.0021,\n",
" -0.1871, 0.0261, -0.0573, 0.3196, 0.1587, 0.1620, -0.3062, 0.1800,\n",
" -0.0216, -0.0861, 0.3876, 0.2574, 0.2573, 0.3694, 0.1312, 0.6010,\n",
" 0.0274, 0.0227, -0.1395, 0.0214, 0.3586, 0.0331, 0.2754, 0.4699,\n",
" 0.3533, -0.0946, 0.1566, 0.2768, 0.6166, 0.3522, 0.2357, 0.2673,\n",
" 0.2506, 0.4461, 0.6163, 0.1398, 0.3288, 0.4211, 0.3313, 0.1029,\n",
" 0.4284, 0.1385, 0.1132, 0.0989, 0.3567, 0.2329, 0.4514, 0.7074,\n",
" 0.3183, 0.2934, 0.4533, 0.2790, 0.4807, 0.8162, 0.6992, 0.1948,\n",
" 0.5107, 0.8306, 0.2990, 0.2718, 0.7156, 0.8072, 0.6706, 0.5840,\n",
" 0.8009, 0.5367, 0.8542, 0.4551, 0.6621, 0.6004, 0.6589, 0.4726,\n",
" 0.5991, 0.8084, 0.5788, 0.7125, 0.6552, 0.9191, 0.3361, 0.8335,\n",
" 0.2599, 0.6830, 0.6857, 0.4505, 0.7303, 0.5562, 0.3135, 0.7432,\n",
" 0.8188, 0.7189, 0.6228, 0.8273, 0.6486, 0.9803, 0.6484, 0.7697,\n",
" 1.1531, 0.9866, 1.3931, 0.9747, 1.2460, 1.0597, 0.7014, 0.9013,\n",
" 0.9571, 0.7041, 1.0944, 1.1762, 1.1356, 1.0760, 1.0171, 0.8546,\n",
" 0.9204, 0.9524, 1.3716, 0.7630, 0.9069, 1.0180, 1.0366, 1.0358,\n",
" 0.8609, 0.8634, 0.8047, 0.7477, 0.9808, 1.0275, 1.2071, 0.5799,\n",
" 0.8834, 0.8784, 1.1447, 1.0891, 0.5811, 0.9703, 1.2833, 0.9937,\n",
" 1.1356, 0.8306, 0.9129, 1.0194, 1.4320, 1.2589, 0.9175, 0.8849,\n",
" 1.1727, 0.9605, 0.7599, 0.8099, 1.0688, 0.7013, 1.0260, 0.7066,\n",
" 0.8967, 1.0578, 0.8639, 1.0968, 0.9553, 1.0410, 0.7809, 0.8928,\n",
" 0.9644, 0.8980, 0.9744, 0.6657, 1.0549, 0.9716, 1.0272, 0.9510,\n",
" 1.0992, 0.8345, 1.0305, 1.0269, 0.9503, 1.0622, 0.9953, 1.3019,\n",
" 1.0447, 0.9759, 0.9953, 1.0697, 0.9619, 1.0681, 1.0844, 0.6814,\n",
" 0.7774, 1.1827, 1.1599, 0.7436, 0.8570, 0.7392, 1.2210, 0.8350,\n",
" 0.7613, 0.7885, 1.0991, 0.6867, 0.5461, 1.1209, 1.1265, 0.9876,\n",
" 0.8403, 0.9892, 0.7838, 0.5770, 0.7996, 1.1023, 1.1888, 0.8290,\n",
" 0.9919, 0.7272, 0.6149, 0.8744, 0.7331, 0.9389, 0.8888, 0.4813,\n",
" 1.1600, 0.6871, 0.7780, 0.9699, 0.3082, 0.8391, 0.5978, 0.5697,\n",
" 0.9227, 0.4502, 0.5293, 0.7309, 0.7579, 0.5995, 0.5698, 0.5490,\n",
" 0.7483, 0.9721, 0.9419, 0.5393, 0.9869, 0.9892, 0.5714, 0.7620,\n",
" 0.6800, 0.8412, 0.6070, 0.1774, 0.6198, 0.7153, 0.7985, 0.5209,\n",
" 1.1309, 0.6716, 0.7221, 0.5309, 0.6143, 0.9212, 0.6585, 0.5518,\n",
" 0.7676, 0.7002, 0.5711, 0.5491, 0.7280, 1.2188, 0.3206, 0.5493,\n",
" 0.7454, 0.5868, 0.6143, 0.8513, 0.1876, 0.5672, 0.4292, 0.5437,\n",
" 0.4909, 0.7139, 0.5861, 0.3725, 0.5194, 0.4843, 0.0279, 0.3152,\n",
" 0.4333, 0.5915, 0.2709, 0.4861, 0.1708, -0.0844, 0.1523, -0.2092,\n",
" 0.2965, -0.1280, 0.4479, 0.4392, 0.1969, 0.1989, -0.0969, 0.2829,\n",
" 0.1741, -0.1890, -0.0512, 0.4777, 0.0458, 0.0724, 0.1996, 0.2772,\n",
" -0.0650, 0.4351, 0.2693, -0.0298, -0.1171, 0.3714, 0.0992, 0.0090,\n",
" 0.0618, 0.1225, 0.1389, 0.1166, 0.0821, 0.0435, -0.1259, -0.1045,\n",
" 0.1779, -0.2051, -0.2457, -0.1619, -0.0991, 0.1651, 0.1712, -0.1440,\n",
" -0.0499, -0.0943, 0.1058, -0.3224, -0.2115, -0.1307, -0.2432, -0.1935,\n",
" -0.1462, -0.3798, -0.3857, -0.3871, 0.1132, -0.5729, 0.1458, -0.5250,\n",
" -0.1113, -0.1085, -0.3974, -0.2798, -0.2995, -0.0517, -0.1601, -0.5213,\n",
" -0.3897, -0.5143, -0.4268, -0.4268, -0.1593, -0.3720, -0.2030, -0.5328,\n",
" -0.8009, -0.5220, -0.5291, -0.3730, -0.4571, -0.3859, -0.3053, -0.3744,\n",
" -0.7439, -0.7338, -0.2856, -0.3440, -0.6041, -0.7940, -0.6112, -0.1943]),\n",
" tensor([[-0.1257, 0.4977, 0.1275, 0.0113],\n",
" [ 0.4977, 0.1275, 0.0113, 0.1759],\n",
" [ 0.1275, 0.0113, 0.1759, 0.1263],\n",
" ...,\n",
" [-0.7338, -0.2856, -0.3440, -0.6041],\n",
" [-0.2856, -0.3440, -0.6041, -0.7940],\n",
" [-0.3440, -0.6041, -0.7940, -0.6112]]),\n",
" tensor([[ 0.1759],\n",
" [ 0.1263],\n",
" [ 0.0984],\n",
" [ 0.0670],\n",
" [ 0.3374],\n",
" [-0.3129],\n",
" [ 0.3756],\n",
" [ 0.0234],\n",
" [-0.0841],\n",
" [ 0.4951],\n",
" [ 0.3441],\n",
" [-0.0585],\n",
" [-0.2159],\n",
" [ 0.0357],\n",
" [ 0.0667],\n",
" [-0.0126],\n",
" [ 0.6966],\n",
" [-0.0548],\n",
" [ 0.0864],\n",
" [ 0.5669],\n",
" [ 0.2040],\n",
" [ 0.2158],\n",
" [ 0.1378],\n",
" [ 0.2790],\n",
" [ 0.4541],\n",
" [ 0.3656],\n",
" [ 0.3050],\n",
" [ 0.3321],\n",
" [ 0.3818],\n",
" [ 0.3404],\n",
" [ 0.3803],\n",
" [ 0.3527],\n",
" [ 0.5237],\n",
" [ 0.7250],\n",
" [ 0.3400],\n",
" [ 0.3136],\n",
" [ 0.6944],\n",
" [ 0.3985],\n",
" [ 0.9682],\n",
" [ 0.5841],\n",
" [ 0.5376],\n",
" [ 0.2229],\n",
" [ 0.6266],\n",
" [ 0.1417],\n",
" [ 0.2132],\n",
" [ 0.6786],\n",
" [ 0.3201],\n",
" [ 0.5340],\n",
" [ 0.7747],\n",
" [ 0.7968],\n",
" [ 0.7266],\n",
" [ 0.7018],\n",
" [ 0.8106],\n",
" [ 0.6221],\n",
" [ 0.2093],\n",
" [ 0.3683],\n",
" [ 0.5998],\n",
" [ 0.5546],\n",
" [ 0.6686],\n",
" [ 0.4981],\n",
" [ 0.6079],\n",
" [ 0.3726],\n",
" [ 0.9469],\n",
" [ 0.6261],\n",
" [ 0.4213],\n",
" [ 0.5943],\n",
" [ 1.2487],\n",
" [ 0.5027],\n",
" [ 0.6524],\n",
" [ 0.6218],\n",
" [ 0.4721],\n",
" [ 0.7688],\n",
" [ 0.8629],\n",
" [ 0.5897],\n",
" [ 0.3414],\n",
" [ 1.0822],\n",
" [ 0.9223],\n",
" [ 0.8020],\n",
" [ 0.6607],\n",
" [ 0.4673],\n",
" [ 0.7155],\n",
" [ 0.6349],\n",
" [ 0.4676],\n",
" [ 0.9303],\n",
" [ 0.6977],\n",
" [ 0.7986],\n",
" [ 0.5661],\n",
" [ 0.9401],\n",
" [ 0.8111],\n",
" [ 1.0929],\n",
" [ 0.5887],\n",
" [ 0.8674],\n",
" [ 0.8081],\n",
" [ 0.8682],\n",
" [ 0.7049],\n",
" [ 1.0303],\n",
" [ 0.5297],\n",
" [ 0.8990],\n",
" [ 0.6131],\n",
" [ 1.1693],\n",
" [ 1.0146],\n",
" [ 1.1179],\n",
" [ 0.8550],\n",
" [ 0.6801],\n",
" [ 0.9054],\n",
" [ 0.9622],\n",
" [ 0.8227],\n",
" [ 0.6969],\n",
" [ 0.8629],\n",
" [ 0.9992],\n",
" [ 0.9735],\n",
" [ 0.9114],\n",
" [ 0.5090],\n",
" [ 0.9698],\n",
" [ 1.1530],\n",
" [ 1.2176],\n",
" [ 1.1019],\n",
" [ 1.0681],\n",
" [ 0.6768],\n",
" [ 1.0307],\n",
" [ 0.9873],\n",
" [ 1.1988],\n",
" [ 1.1947],\n",
" [ 0.8704],\n",
" [ 0.8378],\n",
" [ 0.7581],\n",
" [ 1.2643],\n",
" [ 1.2095],\n",
" [ 0.7556],\n",
" [ 1.0024],\n",
" [ 0.8649],\n",
" [ 1.1953],\n",
" [ 0.8106],\n",
" [ 1.2512],\n",
" [ 1.1907],\n",
" [ 0.8453],\n",
" [ 1.0807],\n",
" [ 0.7710],\n",
" [ 0.9226],\n",
" [ 0.8100],\n",
" [ 1.0641],\n",
" [ 0.9683],\n",
" [ 0.7675],\n",
" [ 1.2630],\n",
" [ 0.9153],\n",
" [ 1.0170],\n",
" [ 1.3423],\n",
" [ 0.8989],\n",
" [ 1.2243],\n",
" [ 1.3355],\n",
" [ 0.9849],\n",
" [ 0.6055],\n",
" [ 0.4062],\n",
" [ 0.8255],\n",
" [ 1.1904],\n",
" [ 0.7565],\n",
" [ 1.0362],\n",
" [ 0.8106],\n",
" [ 0.8765],\n",
" [ 1.1825],\n",
" [ 1.0300],\n",
" [ 1.1883],\n",
" [ 0.7432],\n",
" [ 0.7962],\n",
" [ 0.7900],\n",
" [ 0.9459],\n",
" [ 1.0081],\n",
" [ 1.1498],\n",
" [ 1.0555],\n",
" [ 1.4386],\n",
" [ 0.9888],\n",
" [ 0.7890],\n",
" [ 0.9454],\n",
" [ 0.9568],\n",
" [ 0.9832],\n",
" [ 0.7835],\n",
" [ 0.8084],\n",
" [ 0.7282],\n",
" [ 1.1450],\n",
" [ 1.2708],\n",
" [ 1.1315],\n",
" [ 0.6742],\n",
" [ 0.6001],\n",
" [ 0.6483],\n",
" [ 0.8992],\n",
" [ 1.0016],\n",
" [ 1.0392],\n",
" [ 0.5630],\n",
" [ 1.3330],\n",
" [ 0.9323],\n",
" [ 0.6719],\n",
" [ 0.9954],\n",
" [ 1.0855],\n",
" [ 1.0105],\n",
" [ 0.6578],\n",
" [ 1.0974],\n",
" [ 0.9163],\n",
" [ 1.0161],\n",
" [ 1.0866],\n",
" [ 0.8661],\n",
" [ 0.5516],\n",
" [ 1.0398],\n",
" [ 1.0476],\n",
" [ 0.8525],\n",
" [ 0.8723],\n",
" [ 1.0883],\n",
" [ 0.5629],\n",
" [ 0.3963],\n",
" [ 0.7161],\n",
" [ 1.2104],\n",
" [ 1.0025],\n",
" [ 1.0816],\n",
" [ 0.7881],\n",
" [ 0.7980],\n",
" [ 0.6719],\n",
" [ 0.5641],\n",
" [ 0.7839],\n",
" [ 0.7183],\n",
" [ 0.6777],\n",
" [ 1.1626],\n",
" [ 0.6991],\n",
" [ 0.7296],\n",
" [ 0.9149],\n",
" [ 0.4818],\n",
" [ 0.3593],\n",
" [ 0.8057],\n",
" [ 0.9782],\n",
" [ 0.6981],\n",
" [ 0.8359],\n",
" [ 0.5616],\n",
" [ 0.8751],\n",
" [ 0.4524],\n",
" [ 0.9480],\n",
" [ 0.4057],\n",
" [ 0.6413],\n",
" [ 0.6728],\n",
" [ 0.8040],\n",
" [ 1.1152],\n",
" [ 0.6752],\n",
" [ 0.7030],\n",
" [ 0.5862],\n",
" [ 0.7373],\n",
" [ 0.6680],\n",
" [ 0.6739],\n",
" [ 0.7372],\n",
" [ 1.0807],\n",
" [ 0.8491],\n",
" [ 0.4628],\n",
" [ 0.5695],\n",
" [ 0.4675],\n",
" [ 0.8295],\n",
" [ 0.7881],\n",
" [ 0.6622],\n",
" [ 0.3701],\n",
" [ 0.3987],\n",
" [ 0.6082],\n",
" [ 0.4924],\n",
" [ 0.6136],\n",
" [ 0.4755],\n",
" [ 0.7166],\n",
" [ 0.4721],\n",
" [ 0.2420],\n",
" [ 0.2503],\n",
" [ 0.5961],\n",
" [ 0.5344],\n",
" [ 0.6053],\n",
" [ 0.5369],\n",
" [ 0.2291],\n",
" [ 0.3503],\n",
" [ 0.2833],\n",
" [ 0.1630],\n",
" [ 0.0821],\n",
" [ 0.1769],\n",
" [ 0.5129],\n",
" [ 0.2650],\n",
" [ 0.1519],\n",
" [ 0.2660],\n",
" [ 0.1505],\n",
" [ 0.2407],\n",
" [ 0.1766],\n",
" [ 0.2215],\n",
" [ 0.3759],\n",
" [ 0.0643],\n",
" [ 0.2909],\n",
" [ 0.0220],\n",
" [ 0.5878],\n",
" [ 0.1559],\n",
" [ 0.2339],\n",
" [ 0.3533],\n",
" [-0.1447],\n",
" [ 0.5657],\n",
" [ 0.0656],\n",
" [-0.1913],\n",
" [ 0.1975],\n",
" [-0.0296],\n",
" [ 0.3531],\n",
" [ 0.0032],\n",
" [ 0.1607],\n",
" [ 0.2249],\n",
" [ 0.0783],\n",
" [ 0.1663],\n",
" [-0.0781],\n",
" [-0.0607],\n",
" [ 0.3047],\n",
" [ 0.2461],\n",
" [-0.0380],\n",
" [ 0.0481],\n",
" [-0.0040],\n",
" [ 0.0110],\n",
" [-0.0221],\n",
" [ 0.1001],\n",
" [ 0.0754],\n",
" [ 0.2153],\n",
" [-0.1584],\n",
" [ 0.0033],\n",
" [-0.2072],\n",
" [ 0.1622],\n",
" [-0.1114],\n",
" [-0.0954],\n",
" [-0.2582],\n",
" [-0.0575],\n",
" [-0.0883],\n",
" [ 0.3422],\n",
" [-0.1808],\n",
" [-0.2768],\n",
" [-0.1964],\n",
" [ 0.1526],\n",
" [-0.1362],\n",
" [ 0.0674],\n",
" [-0.5093],\n",
" [-0.0344],\n",
" [-0.3681],\n",
" [-0.2217],\n",
" [-0.1733],\n",
" [-0.0589],\n",
" [-0.1194],\n",
" [-0.0979],\n",
" [-0.2122],\n",
" [-0.5427],\n",
" [-0.5028],\n",
" [ 0.0059],\n",
" [-0.2044],\n",
" [-0.2778],\n",
" [-0.3447],\n",
" [-0.0537],\n",
" [-0.4030],\n",
" [-0.7130],\n",
" [-0.5167],\n",
" [-0.4477],\n",
" [-0.4382],\n",
" [ 0.0076],\n",
" [-0.1804],\n",
" [-0.1491],\n",
" [ 0.1210],\n",
" [-0.4279],\n",
" [-0.6204],\n",
" [-0.7309],\n",
" [-0.1835],\n",
" [-0.9354],\n",
" [-0.6655],\n",
" [-0.7265],\n",
" [-0.5585],\n",
" [-0.8215],\n",
" [-0.3998],\n",
" [-0.6667],\n",
" [-0.4026],\n",
" [-0.3606],\n",
" [-0.2286],\n",
" [-0.5571],\n",
" [-0.8246],\n",
" [-0.2567],\n",
" [-0.8022],\n",
" [-0.3873],\n",
" [-0.6781],\n",
" [-0.8021],\n",
" [-0.7463],\n",
" [-0.6887],\n",
" [-0.5723],\n",
" [-0.6661],\n",
" [-0.4324],\n",
" [-0.6482],\n",
" [-0.5130],\n",
" [-0.6848],\n",
" [-0.5460],\n",
" [-0.8493],\n",
" [-0.1809],\n",
" [-0.5165],\n",
" [-0.4671],\n",
" [-0.8529],\n",
" [-0.9896],\n",
" [-0.8904],\n",
" [-0.4498],\n",
" [-1.0809],\n",
" [-0.9123],\n",
" [-0.7125],\n",
" [-0.4627],\n",
" [-0.5643],\n",
" [-0.7416],\n",
" [-0.8990],\n",
" [-0.8161],\n",
" [-0.5500],\n",
" [-0.9439],\n",
" [-0.8327],\n",
" [-0.7132],\n",
" [-0.8250],\n",
" [-0.9772],\n",
" [-0.8947],\n",
" [-0.4970],\n",
" [-0.4945],\n",
" [-0.4604],\n",
" [-0.7029],\n",
" [-0.7518],\n",
" [-0.7635],\n",
" [-0.8060],\n",
" [-0.8300],\n",
" [-1.1194],\n",
" [-1.2429],\n",
" [-0.7834],\n",
" [-0.3628],\n",
" [-1.1099],\n",
" [-0.8337],\n",
" [-1.0767],\n",
" [-0.7193],\n",
" [-0.6253],\n",
" [-0.9703],\n",
" [-0.5913],\n",
" [-1.0695],\n",
" [-0.9610],\n",
" [-0.7796],\n",
" [-0.8729],\n",
" [-1.1516],\n",
" [-0.8974],\n",
" [-1.1277],\n",
" [-0.8297],\n",
" [-0.6336],\n",
" [-1.5144],\n",
" [-1.0980],\n",
" [-1.0812],\n",
" [-0.5136],\n",
" [-0.6882],\n",
" [-0.9138],\n",
" [-0.9021],\n",
" [-1.0671],\n",
" [-1.1456],\n",
" [-0.9467],\n",
" [-0.6042],\n",
" [-0.8922],\n",
" [-0.9499],\n",
" [-0.6512],\n",
" [-1.0729],\n",
" [-1.1589],\n",
" [-1.1675],\n",
" [-0.9637],\n",
" [-0.7511],\n",
" [-0.8479],\n",
" [-0.8410],\n",
" [-1.1934],\n",
" [-0.8869],\n",
" [-0.9340],\n",
" [-1.0252],\n",
" [-0.8195],\n",
" [-1.3040],\n",
" [-0.6508],\n",
" [-1.0083],\n",
" [-1.1282],\n",
" [-0.9536],\n",
" [-1.0764],\n",
" [-1.2750],\n",
" [-1.0073],\n",
" [-1.0259],\n",
" [-0.8144],\n",
" [-1.2082],\n",
" [-0.9558],\n",
" [-0.9895],\n",
" [-1.0417],\n",
" [-1.0077],\n",
" [-0.7460],\n",
" [-0.7199],\n",
" [-1.1118],\n",
" [-0.7411],\n",
" [-1.2156],\n",
" [-0.8967],\n",
" [-0.8194],\n",
" [-1.1041],\n",
" [-0.9286],\n",
" [-0.9155],\n",
" [-0.7483],\n",
" [-0.9874],\n",
" [-1.0476],\n",
" [-0.9132],\n",
" [-0.7950],\n",
" [-0.8823],\n",
" [-0.8565],\n",
" [-1.0017],\n",
" [-0.9736],\n",
" [-0.8743],\n",
" [-0.9509],\n",
" [-1.3399],\n",
" [-0.8861],\n",
" [-1.0557],\n",
" [-0.8494],\n",
" [-0.6369],\n",
" [-1.0813],\n",
" [-0.7510],\n",
" [-0.8624],\n",
" [-1.1163],\n",
" [-0.9114],\n",
" [-0.7323],\n",
" [-0.9083],\n",
" [-0.8352],\n",
" [-0.6851],\n",
" [-0.9174],\n",
" [-0.9412],\n",
" [-1.3040],\n",
" [-0.6257],\n",
" [-0.7814],\n",
" [-0.7670],\n",
" [-1.0620],\n",
" [-0.9168],\n",
" [-1.0231],\n",
" [-0.5532],\n",
" [-0.7955],\n",
" [-0.9293],\n",
" [-0.7984],\n",
" [-0.9475],\n",
" [-0.8074],\n",
" [-1.0046],\n",
" [-0.7866],\n",
" [-0.8110],\n",
" [-0.8169],\n",
" [-0.7929],\n",
" [-0.9577],\n",
" [-0.7490],\n",
" [-0.6953],\n",
" [-0.7600],\n",
" [-0.6348],\n",
" [-0.5752],\n",
" [-0.6600],\n",
" [-1.1377],\n",
" [-1.0344],\n",
" [-0.6518],\n",
" [-0.7506],\n",
" [-0.9227],\n",
" [-0.7814],\n",
" [-0.9301],\n",
" [-0.4463],\n",
" [-0.8153],\n",
" [-0.7221],\n",
" [-0.6543],\n",
" [-1.0062],\n",
" [-0.4462],\n",
" [-0.5389],\n",
" [-0.3644],\n",
" [-0.3854],\n",
" [-0.5175],\n",
" [-0.3598],\n",
" [-0.7745],\n",
" [-0.8278],\n",
" [-0.6843],\n",
" [-0.5519],\n",
" [-0.6849],\n",
" [-0.6662],\n",
" [-0.8282],\n",
" [-0.5927],\n",
" [-0.8346],\n",
" [-0.5149],\n",
" [-0.0033],\n",
" [-0.7285],\n",
" [-0.8659],\n",
" [-0.4320],\n",
" [-0.5433],\n",
" [-0.5551],\n",
" [-0.4936],\n",
" [-0.3990],\n",
" [-0.2697],\n",
" [-0.5388],\n",
" [-0.5527],\n",
" [-0.5663],\n",
" [-0.4017],\n",
" [-0.2667],\n",
" [-0.3446],\n",
" [-0.3117],\n",
" [-0.3110],\n",
" [-0.8562],\n",
" [-0.2726],\n",
" [-0.5014],\n",
" [-0.4719],\n",
" [-0.5338],\n",
" [-0.7666],\n",
" [-0.1854],\n",
" [-0.5822],\n",
" [-0.4734],\n",
" [-0.2585],\n",
" [-0.2755],\n",
" [-0.4047],\n",
" [-0.0902],\n",
" [-0.0984],\n",
" [-0.3434],\n",
" [-0.0755],\n",
" [-0.5209],\n",
" [-0.2434],\n",
" [-0.3536],\n",
" [-0.0617],\n",
" [ 0.1276],\n",
" [-0.0150],\n",
" [-0.5196],\n",
" [-0.2691],\n",
" [-0.8314],\n",
" [ 0.1469],\n",
" [-0.0438],\n",
" [-0.4816],\n",
" [ 0.1779],\n",
" [-0.1709],\n",
" [-0.2126],\n",
" [-0.2875],\n",
" [-0.4329],\n",
" [-0.0967],\n",
" [-0.5540],\n",
" [-0.2296],\n",
" [-0.0021],\n",
" [-0.1871],\n",
" [ 0.0261],\n",
" [-0.0573],\n",
" [ 0.3196],\n",
" [ 0.1587],\n",
" [ 0.1620],\n",
" [-0.3062],\n",
" [ 0.1800],\n",
" [-0.0216],\n",
" [-0.0861],\n",
" [ 0.3876],\n",
" [ 0.2574],\n",
" [ 0.2573],\n",
" [ 0.3694],\n",
" [ 0.1312],\n",
" [ 0.6010],\n",
" [ 0.0274],\n",
" [ 0.0227],\n",
" [-0.1395],\n",
" [ 0.0214],\n",
" [ 0.3586],\n",
" [ 0.0331],\n",
" [ 0.2754],\n",
" [ 0.4699],\n",
" [ 0.3533],\n",
" [-0.0946],\n",
" [ 0.1566],\n",
" [ 0.2768],\n",
" [ 0.6166],\n",
" [ 0.3522],\n",
" [ 0.2357],\n",
" [ 0.2673],\n",
" [ 0.2506],\n",
" [ 0.4461],\n",
" [ 0.6163],\n",
" [ 0.1398],\n",
" [ 0.3288],\n",
" [ 0.4211],\n",
" [ 0.3313],\n",
" [ 0.1029],\n",
" [ 0.4284],\n",
" [ 0.1385],\n",
" [ 0.1132],\n",
" [ 0.0989],\n",
" [ 0.3567],\n",
" [ 0.2329],\n",
" [ 0.4514],\n",
" [ 0.7074],\n",
" [ 0.3183],\n",
" [ 0.2934],\n",
" [ 0.4533],\n",
" [ 0.2790],\n",
" [ 0.4807],\n",
" [ 0.8162],\n",
" [ 0.6992],\n",
" [ 0.1948],\n",
" [ 0.5107],\n",
" [ 0.8306],\n",
" [ 0.2990],\n",
" [ 0.2718],\n",
" [ 0.7156],\n",
" [ 0.8072],\n",
" [ 0.6706],\n",
" [ 0.5840],\n",
" [ 0.8009],\n",
" [ 0.5367],\n",
" [ 0.8542],\n",
" [ 0.4551],\n",
" [ 0.6621],\n",
" [ 0.6004],\n",
" [ 0.6589],\n",
" [ 0.4726],\n",
" [ 0.5991],\n",
" [ 0.8084],\n",
" [ 0.5788],\n",
" [ 0.7125],\n",
" [ 0.6552],\n",
" [ 0.9191],\n",
" [ 0.3361],\n",
" [ 0.8335],\n",
" [ 0.2599],\n",
" [ 0.6830],\n",
" [ 0.6857],\n",
" [ 0.4505],\n",
" [ 0.7303],\n",
" [ 0.5562],\n",
" [ 0.3135],\n",
" [ 0.7432],\n",
" [ 0.8188],\n",
" [ 0.7189],\n",
" [ 0.6228],\n",
" [ 0.8273],\n",
" [ 0.6486],\n",
" [ 0.9803],\n",
" [ 0.6484],\n",
" [ 0.7697],\n",
" [ 1.1531],\n",
" [ 0.9866],\n",
" [ 1.3931],\n",
" [ 0.9747],\n",
" [ 1.2460],\n",
" [ 1.0597],\n",
" [ 0.7014],\n",
" [ 0.9013],\n",
" [ 0.9571],\n",
" [ 0.7041],\n",
" [ 1.0944],\n",
" [ 1.1762],\n",
" [ 1.1356],\n",
" [ 1.0760],\n",
" [ 1.0171],\n",
" [ 0.8546],\n",
" [ 0.9204],\n",
" [ 0.9524],\n",
" [ 1.3716],\n",
" [ 0.7630],\n",
" [ 0.9069],\n",
" [ 1.0180],\n",
" [ 1.0366],\n",
" [ 1.0358],\n",
" [ 0.8609],\n",
" [ 0.8634],\n",
" [ 0.8047],\n",
" [ 0.7477],\n",
" [ 0.9808],\n",
" [ 1.0275],\n",
" [ 1.2071],\n",
" [ 0.5799],\n",
" [ 0.8834],\n",
" [ 0.8784],\n",
" [ 1.1447],\n",
" [ 1.0891],\n",
" [ 0.5811],\n",
" [ 0.9703],\n",
" [ 1.2833],\n",
" [ 0.9937],\n",
" [ 1.1356],\n",
" [ 0.8306],\n",
" [ 0.9129],\n",
" [ 1.0194],\n",
" [ 1.4320],\n",
" [ 1.2589],\n",
" [ 0.9175],\n",
" [ 0.8849],\n",
" [ 1.1727],\n",
" [ 0.9605],\n",
" [ 0.7599],\n",
" [ 0.8099],\n",
" [ 1.0688],\n",
" [ 0.7013],\n",
" [ 1.0260],\n",
" [ 0.7066],\n",
" [ 0.8967],\n",
" [ 1.0578],\n",
" [ 0.8639],\n",
" [ 1.0968],\n",
" [ 0.9553],\n",
" [ 1.0410],\n",
" [ 0.7809],\n",
" [ 0.8928],\n",
" [ 0.9644],\n",
" [ 0.8980],\n",
" [ 0.9744],\n",
" [ 0.6657],\n",
" [ 1.0549],\n",
" [ 0.9716],\n",
" [ 1.0272],\n",
" [ 0.9510],\n",
" [ 1.0992],\n",
" [ 0.8345],\n",
" [ 1.0305],\n",
" [ 1.0269],\n",
" [ 0.9503],\n",
" [ 1.0622],\n",
" [ 0.9953],\n",
" [ 1.3019],\n",
" [ 1.0447],\n",
" [ 0.9759],\n",
" [ 0.9953],\n",
" [ 1.0697],\n",
" [ 0.9619],\n",
" [ 1.0681],\n",
" [ 1.0844],\n",
" [ 0.6814],\n",
" [ 0.7774],\n",
" [ 1.1827],\n",
" [ 1.1599],\n",
" [ 0.7436],\n",
" [ 0.8570],\n",
" [ 0.7392],\n",
" [ 1.2210],\n",
" [ 0.8350],\n",
" [ 0.7613],\n",
" [ 0.7885],\n",
" [ 1.0991],\n",
" [ 0.6867],\n",
" [ 0.5461],\n",
" [ 1.1209],\n",
" [ 1.1265],\n",
" [ 0.9876],\n",
" [ 0.8403],\n",
" [ 0.9892],\n",
" [ 0.7838],\n",
" [ 0.5770],\n",
" [ 0.7996],\n",
" [ 1.1023],\n",
" [ 1.1888],\n",
" [ 0.8290],\n",
" [ 0.9919],\n",
" [ 0.7272],\n",
" [ 0.6149],\n",
" [ 0.8744],\n",
" [ 0.7331],\n",
" [ 0.9389],\n",
" [ 0.8888],\n",
" [ 0.4813],\n",
" [ 1.1600],\n",
" [ 0.6871],\n",
" [ 0.7780],\n",
" [ 0.9699],\n",
" [ 0.3082],\n",
" [ 0.8391],\n",
" [ 0.5978],\n",
" [ 0.5697],\n",
" [ 0.9227],\n",
" [ 0.4502],\n",
" [ 0.5293],\n",
" [ 0.7309],\n",
" [ 0.7579],\n",
" [ 0.5995],\n",
" [ 0.5698],\n",
" [ 0.5490],\n",
" [ 0.7483],\n",
" [ 0.9721],\n",
" [ 0.9419],\n",
" [ 0.5393],\n",
" [ 0.9869],\n",
" [ 0.9892],\n",
" [ 0.5714],\n",
" [ 0.7620],\n",
" [ 0.6800],\n",
" [ 0.8412],\n",
" [ 0.6070],\n",
" [ 0.1774],\n",
" [ 0.6198],\n",
" [ 0.7153],\n",
" [ 0.7985],\n",
" [ 0.5209],\n",
" [ 1.1309],\n",
" [ 0.6716],\n",
" [ 0.7221],\n",
" [ 0.5309],\n",
" [ 0.6143],\n",
" [ 0.9212],\n",
" [ 0.6585],\n",
" [ 0.5518],\n",
" [ 0.7676],\n",
" [ 0.7002],\n",
" [ 0.5711],\n",
" [ 0.5491],\n",
" [ 0.7280],\n",
" [ 1.2188],\n",
" [ 0.3206],\n",
" [ 0.5493],\n",
" [ 0.7454],\n",
" [ 0.5868],\n",
" [ 0.6143],\n",
" [ 0.8513],\n",
" [ 0.1876],\n",
" [ 0.5672],\n",
" [ 0.4292],\n",
" [ 0.5437],\n",
" [ 0.4909],\n",
" [ 0.7139],\n",
" [ 0.5861],\n",
" [ 0.3725],\n",
" [ 0.5194],\n",
" [ 0.4843],\n",
" [ 0.0279],\n",
" [ 0.3152],\n",
" [ 0.4333],\n",
" [ 0.5915],\n",
" [ 0.2709],\n",
" [ 0.4861],\n",
" [ 0.1708],\n",
" [-0.0844],\n",
" [ 0.1523],\n",
" [-0.2092],\n",
" [ 0.2965],\n",
" [-0.1280],\n",
" [ 0.4479],\n",
" [ 0.4392],\n",
" [ 0.1969],\n",
" [ 0.1989],\n",
" [-0.0969],\n",
" [ 0.2829],\n",
" [ 0.1741],\n",
" [-0.1890],\n",
" [-0.0512],\n",
" [ 0.4777],\n",
" [ 0.0458],\n",
" [ 0.0724],\n",
" [ 0.1996],\n",
" [ 0.2772],\n",
" [-0.0650],\n",
" [ 0.4351],\n",
" [ 0.2693],\n",
" [-0.0298],\n",
" [-0.1171],\n",
" [ 0.3714],\n",
" [ 0.0992],\n",
" [ 0.0090],\n",
" [ 0.0618],\n",
" [ 0.1225],\n",
" [ 0.1389],\n",
" [ 0.1166],\n",
" [ 0.0821],\n",
" [ 0.0435],\n",
" [-0.1259],\n",
" [-0.1045],\n",
" [ 0.1779],\n",
" [-0.2051],\n",
" [-0.2457],\n",
" [-0.1619],\n",
" [-0.0991],\n",
" [ 0.1651],\n",
" [ 0.1712],\n",
" [-0.1440],\n",
" [-0.0499],\n",
" [-0.0943],\n",
" [ 0.1058],\n",
" [-0.3224],\n",
" [-0.2115],\n",
" [-0.1307],\n",
" [-0.2432],\n",
" [-0.1935],\n",
" [-0.1462],\n",
" [-0.3798],\n",
" [-0.3857],\n",
" [-0.3871],\n",
" [ 0.1132],\n",
" [-0.5729],\n",
" [ 0.1458],\n",
" [-0.5250],\n",
" [-0.1113],\n",
" [-0.1085],\n",
" [-0.3974],\n",
" [-0.2798],\n",
" [-0.2995],\n",
" [-0.0517],\n",
" [-0.1601],\n",
" [-0.5213],\n",
" [-0.3897],\n",
" [-0.5143],\n",
" [-0.4268],\n",
" [-0.4268],\n",
" [-0.1593],\n",
" [-0.3720],\n",
" [-0.2030],\n",
" [-0.5328],\n",
" [-0.8009],\n",
" [-0.5220],\n",
" [-0.5291],\n",
" [-0.3730],\n",
" [-0.4571],\n",
" [-0.3859],\n",
" [-0.3053],\n",
" [-0.3744],\n",
" [-0.7439],\n",
" [-0.7338],\n",
" [-0.2856],\n",
" [-0.3440],\n",
" [-0.6041],\n",
" [-0.7940],\n",
" [-0.6112],\n",
" [-0.1943]]))"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 85
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:45.359640179Z",
"start_time": "2026-03-25T12:54:45.318414005Z"
}
},
"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": 86
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:45.428803377Z",
"start_time": "2026-03-25T12:54:45.361568655Z"
}
},
"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": 87
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:45.522687266Z",
"start_time": "2026-03-25T12:54:45.432893670Z"
}
},
"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": 88
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:45.821846960Z",
"start_time": "2026-03-25T12:54:45.527750802Z"
}
},
"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.069361\n",
"epoch 2, loss: 0.057280\n",
"epoch 3, loss: 0.054714\n",
"epoch 4, loss: 0.054167\n",
"epoch 5, loss: 0.050941\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": 89
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:46.022554993Z",
"start_time": "2026-03-25T12:54:45.826680707Z"
}
},
"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-25T20:54:45.966103</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(#p37412f0ba3)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_2\">\n <defs>\n <path id=\"m7724595e6b\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m7724595e6b\" 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(#p37412f0ba3)\" 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=\"#m7724595e6b\" 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(#p37412f0ba3)\" 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=\"#m7724595e6b\" 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(#p37412f0ba3)\" 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=\"#m7724595e6b\" 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(#p37412f0ba3)\" 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=\"#m7724595e6b\" 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 165.221306 \nL 386.960938 165.221306 \n\" clip-path=\"url(#p37412f0ba3)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_12\">\n <defs>\n <path id=\"mae183f0f21\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#mae183f0f21\" x=\"52.160938\" y=\"165.221306\" 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 169.020525) 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 139.620338 \nL 386.960938 139.620338 \n\" clip-path=\"url(#p37412f0ba3)\" 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=\"#mae183f0f21\" x=\"52.160938\" y=\"139.620338\" 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 143.419557) 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 114.01937 \nL 386.960938 114.01937 \n\" clip-path=\"url(#p37412f0ba3)\" 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=\"#mae183f0f21\" x=\"52.160938\" y=\"114.01937\" 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 117.818588) 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 88.418401 \nL 386.960938 88.418401 \n\" clip-path=\"url(#p37412f0ba3)\" 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=\"#mae183f0f21\" x=\"52.160938\" y=\"88.418401\" 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 92.21762) 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 62.817433 \nL 386.960938 62.817433 \n\" clip-path=\"url(#p37412f0ba3)\" 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=\"#mae183f0f21\" x=\"52.160938\" y=\"62.817433\" 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 66.616652) 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 37.216465 \nL 386.960938 37.216465 \n\" clip-path=\"url(#p37412f0ba3)\" 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=\"#mae183f0f21\" x=\"52.160938\" y=\"37.216465\" 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 41.015683) 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.615496 \nL 386.960938 11.615496 \n\" clip-path=\"url(#p37412f0ba3)\" 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=\"#mae183f0f21\" x=\"52.160938\" y=\"11.615496\" 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.414715) 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 94.855956 \nL 52.496073 62.934022 \nL 52.831208 81.889164 \nL 53.166343 87.837881 \nL 53.501478 79.411242 \nL 53.836613 81.950186 \nL 54.506883 84.987396 \nL 54.842019 71.144626 \nL 55.177154 104.437754 \nL 55.512289 69.186882 \nL 55.847424 87.220749 \nL 56.182559 92.725262 \nL 56.517694 63.070146 \nL 56.852829 70.799375 \nL 57.187965 91.412548 \nL 57.5231 99.471144 \nL 57.858235 86.590434 \nL 58.19337 85.003761 \nL 58.528505 89.064918 \nL 58.86364 52.753432 \nL 59.198775 91.225162 \nL 59.53391 83.992469 \nL 59.869046 59.390002 \nL 60.204181 77.974178 \nL 60.539316 77.366926 \nL 60.874451 81.363732 \nL 61.544721 65.165201 \nL 62.214992 72.803751 \nL 62.550127 71.414299 \nL 62.885262 68.868394 \nL 63.220397 70.990559 \nL 63.555532 68.946324 \nL 63.890667 70.361047 \nL 64.560938 51.299361 \nL 64.896073 71.008174 \nL 65.231208 72.360573 \nL 65.566343 52.86633 \nL 65.901478 68.013403 \nL 66.236613 38.844215 \nL 66.571748 58.509928 \nL 66.906883 60.891335 \nL 67.242019 77.00334 \nL 67.577154 56.336963 \nL 67.912289 81.162249 \nL 68.247424 77.502081 \nL 68.582559 53.675113 \nL 68.917694 72.030693 \nL 69.587965 48.75033 \nL 69.9231 47.622315 \nL 70.258235 51.215609 \nL 70.59337 52.486897 \nL 70.928505 46.913462 \nL 71.26364 56.564935 \nL 71.598775 77.701469 \nL 71.93391 69.562473 \nL 72.269046 57.709143 \nL 72.604181 60.022143 \nL 72.939316 54.183299 \nL 73.274451 62.916906 \nL 73.609586 57.294556 \nL 73.944721 69.339234 \nL 74.279856 39.936758 \nL 74.614992 56.360203 \nL 74.950127 66.845198 \nL 75.285262 57.987099 \nL 75.620397 24.482267 \nL 75.955532 62.679061 \nL 76.290667 55.013354 \nL 76.625802 56.578708 \nL 76.960938 64.24444 \nL 77.296073 49.052062 \nL 77.631208 44.233902 \nL 78.301478 70.940285 \nL 78.636613 33.009396 \nL 79.306883 47.353237 \nL 79.642019 54.58741 \nL 79.977154 64.492321 \nL 80.312289 51.781899 \nL 80.647424 55.908682 \nL 80.982559 64.474647 \nL 81.317694 40.787742 \nL 81.652829 52.693747 \nL 81.987965 47.527005 \nL 82.3231 59.43463 \nL 82.658235 40.283753 \nL 82.99337 46.890344 \nL 83.328505 32.460132 \nL 83.66364 58.276133 \nL 83.998775 44.004896 \nL 84.33391 47.04144 \nL 84.669046 43.966628 \nL 85.004181 52.328175 \nL 85.339316 35.665106 \nL 85.674451 61.297505 \nL 86.009586 42.38986 \nL 86.344721 57.025438 \nL 86.679856 28.54627 \nL 87.014992 36.466973 \nL 87.350127 31.18166 \nL 87.685262 44.638874 \nL 88.020397 53.594507 \nL 88.355532 42.061118 \nL 88.690667 39.151364 \nL 89.360938 52.736635 \nL 90.031208 37.256554 \nL 90.366343 38.571051 \nL 90.701478 41.754896 \nL 91.036613 62.358498 \nL 91.371748 38.760529 \nL 91.706883 29.383936 \nL 92.042019 26.073013 \nL 92.377154 32.001314 \nL 92.712289 33.731317 \nL 93.047424 53.765925 \nL 93.382559 35.644188 \nL 93.717694 37.868708 \nL 94.052829 27.036874 \nL 94.387965 27.247624 \nL 94.7231 43.852891 \nL 95.058235 45.522971 \nL 95.39337 49.603664 \nL 95.728505 23.683732 \nL 96.06364 26.491553 \nL 96.398775 49.729935 \nL 96.73391 37.091515 \nL 97.069046 44.134539 \nL 97.404181 27.219266 \nL 97.739316 46.912794 \nL 98.074451 24.354687 \nL 98.409586 27.452851 \nL 98.744721 45.135755 \nL 99.079856 33.081964 \nL 99.414992 48.941658 \nL 99.750127 41.177253 \nL 100.085262 46.944985 \nL 100.420397 33.934205 \nL 100.755532 38.840241 \nL 101.090667 49.12123 \nL 101.425802 23.750428 \nL 101.760938 41.552108 \nL 102.096073 36.345228 \nL 102.431208 19.687896 \nL 102.766343 42.393781 \nL 103.101478 25.734188 \nL 103.436613 20.038636 \nL 104.106883 57.414302 \nL 104.442019 67.622424 \nL 105.112289 27.468208 \nL 105.447424 49.68518 \nL 105.782559 35.36294 \nL 106.117694 46.911942 \nL 106.452829 43.541469 \nL 106.787965 27.871592 \nL 107.1231 35.678321 \nL 107.458235 27.576482 \nL 107.79337 50.364521 \nL 108.128505 47.65085 \nL 108.46364 47.968007 \nL 108.798775 39.988856 \nL 109.13391 36.79928 \nL 109.469046 29.544318 \nL 109.804181 34.372326 \nL 110.139316 14.76 \nL 110.474451 37.788999 \nL 110.809586 48.021665 \nL 111.144721 40.011065 \nL 111.479856 39.43012 \nL 111.814992 38.076504 \nL 112.150127 48.301692 \nL 112.485262 47.026192 \nL 112.820397 51.133605 \nL 113.155532 29.794693 \nL 113.490667 23.352537 \nL 113.825802 30.485216 \nL 114.160938 53.900192 \nL 114.496073 57.691549 \nL 114.831208 55.222694 \nL 115.166343 42.378879 \nL 115.501478 37.135767 \nL 115.836613 35.208228 \nL 116.171748 59.593947 \nL 116.506883 20.165368 \nL 116.842019 40.68245 \nL 117.177154 54.013914 \nL 117.512289 37.452191 \nL 117.847424 32.83688 \nL 118.182559 36.676594 \nL 118.517694 54.737086 \nL 118.852829 32.227952 \nL 119.187965 41.503468 \nL 119.858235 32.784223 \nL 120.19337 44.070795 \nL 120.528505 60.176766 \nL 120.86364 35.17666 \nL 121.198775 34.779239 \nL 121.53391 44.767132 \nL 121.869046 43.752845 \nL 122.204181 32.693039 \nL 122.539316 59.594325 \nL 122.874451 68.125921 \nL 123.209586 51.753718 \nL 123.544721 26.442986 \nL 123.879856 37.086522 \nL 124.214992 33.035923 \nL 124.550127 48.066463 \nL 124.885262 47.560194 \nL 125.555532 59.5333 \nL 125.890667 48.280811 \nL 126.225802 51.637558 \nL 126.560938 53.716881 \nL 126.896073 28.890021 \nL 127.231208 52.621631 \nL 127.566343 51.06401 \nL 127.901478 41.574216 \nL 128.236613 63.74882 \nL 128.571748 70.019436 \nL 128.906883 47.165663 \nL 129.242019 38.330426 \nL 129.577154 52.673714 \nL 129.912289 45.618189 \nL 130.247424 59.662031 \nL 130.582559 43.613997 \nL 130.917694 65.253368 \nL 131.252829 39.877021 \nL 131.587965 67.647106 \nL 131.9231 55.584426 \nL 132.258235 53.968969 \nL 132.59337 47.251393 \nL 132.928505 31.315582 \nL 133.26364 53.847941 \nL 133.598775 52.421004 \nL 133.93391 58.404217 \nL 134.269046 50.66857 \nL 134.604181 54.215942 \nL 134.939316 53.911484 \nL 135.274451 50.672589 \nL 135.609586 33.086206 \nL 135.944721 44.942636 \nL 136.279856 64.7198 \nL 136.614992 59.257069 \nL 136.950127 64.48199 \nL 137.285262 45.94596 \nL 137.620397 48.065935 \nL 137.955532 54.514006 \nL 138.290667 69.467642 \nL 138.625802 68.00509 \nL 138.960938 57.278124 \nL 139.296073 63.205024 \nL 139.631208 57.002678 \nL 139.966343 64.073042 \nL 140.301478 51.727414 \nL 140.971748 76.026913 \nL 141.306883 75.604678 \nL 141.642019 57.896086 \nL 141.977154 61.056154 \nL 142.312289 57.427501 \nL 142.647424 60.929337 \nL 142.982559 76.68928 \nL 143.317694 70.480888 \nL 143.652829 73.91271 \nL 144.3231 84.212168 \nL 144.658235 79.363029 \nL 144.99337 62.155988 \nL 145.328505 74.850153 \nL 145.66364 80.639234 \nL 145.998775 74.799821 \nL 146.33391 80.713273 \nL 146.669046 76.093719 \nL 147.004181 79.37483 \nL 147.339316 77.077974 \nL 147.674451 69.172172 \nL 148.009586 85.12478 \nL 148.344721 73.524707 \nL 148.679856 87.293801 \nL 149.014992 58.323775 \nL 149.350127 80.435165 \nL 149.685262 76.443592 \nL 150.020397 70.327553 \nL 150.355532 95.828901 \nL 150.690667 59.454476 \nL 151.025802 85.060321 \nL 151.360938 98.210859 \nL 151.696073 78.304947 \nL 152.031208 89.93512 \nL 152.366343 70.336975 \nL 152.701478 88.254617 \nL 153.036613 80.190574 \nL 153.371748 76.901109 \nL 153.706883 84.408711 \nL 154.042019 79.905811 \nL 154.377154 92.415222 \nL 154.712289 91.524168 \nL 155.047424 72.816703 \nL 155.382559 75.819626 \nL 155.717694 90.36222 \nL 156.052829 85.957392 \nL 156.387965 88.62097 \nL 156.7231 87.85633 \nL 157.058235 89.550477 \nL 157.39337 83.291643 \nL 157.728505 84.556303 \nL 158.06364 77.396682 \nL 158.398775 96.528962 \nL 158.73391 88.248509 \nL 159.069046 99.024933 \nL 159.404181 80.113069 \nL 159.739316 94.123758 \nL 160.074451 93.30402 \nL 160.409586 101.641262 \nL 160.744721 91.364219 \nL 161.079856 92.938549 \nL 161.414992 70.896611 \nL 161.750127 97.673524 \nL 162.085262 102.589448 \nL 162.420397 98.473202 \nL 162.755532 80.604061 \nL 163.090667 95.392431 \nL 163.425802 84.965421 \nL 163.760938 114.49404 \nL 164.096073 90.178554 \nL 164.431208 107.266925 \nL 164.766343 99.772084 \nL 165.101478 97.293314 \nL 165.436613 91.434164 \nL 165.771748 94.530578 \nL 166.106883 93.433322 \nL 166.442019 99.281294 \nL 166.777154 116.206928 \nL 167.112289 114.164968 \nL 167.447424 88.118865 \nL 167.782559 98.881579 \nL 168.452829 106.068558 \nL 168.787965 91.168566 \nL 169.458235 124.92718 \nL 169.79337 114.87199 \nL 170.128505 111.33971 \nL 170.46364 110.854278 \nL 170.798775 88.027342 \nL 171.13391 97.65556 \nL 171.469046 96.05065 \nL 171.804181 82.222363 \nL 172.139316 110.327685 \nL 172.474451 120.183833 \nL 172.809586 125.843511 \nL 173.144721 97.814499 \nL 173.479856 136.311296 \nL 173.814992 122.492676 \nL 174.150127 125.619045 \nL 174.485262 117.016395 \nL 174.820397 130.479294 \nL 175.155532 108.888304 \nL 175.490667 122.552477 \nL 175.825802 109.030289 \nL 176.160938 106.882369 \nL 176.496073 100.123832 \nL 177.166343 130.638681 \nL 177.501478 101.562308 \nL 177.836613 129.491699 \nL 178.171748 108.24749 \nL 178.506883 123.139932 \nL 178.842019 129.4863 \nL 179.512289 123.6837 \nL 179.847424 117.719888 \nL 180.182559 122.522218 \nL 180.517694 110.559275 \nL 180.852829 121.606204 \nL 181.187965 114.685298 \nL 181.5231 123.479301 \nL 181.858235 116.372834 \nL 182.19337 131.904165 \nL 182.528505 97.681972 \nL 182.86364 114.866271 \nL 183.198775 112.337278 \nL 183.53391 132.087979 \nL 183.869046 139.087359 \nL 184.204181 134.010027 \nL 184.539316 111.450121 \nL 184.874451 143.763866 \nL 185.544721 124.899752 \nL 185.879856 112.109346 \nL 186.214992 117.311615 \nL 186.885262 134.448811 \nL 187.220397 130.205913 \nL 187.555532 116.579415 \nL 187.890667 136.747137 \nL 188.560938 124.935221 \nL 188.896073 130.658118 \nL 189.231208 138.454754 \nL 189.566343 134.226378 \nL 189.901478 113.863529 \nL 190.236613 113.735242 \nL 190.571748 111.990046 \nL 190.906883 124.406362 \nL 191.242019 126.913803 \nL 191.577154 127.509248 \nL 191.912289 129.685297 \nL 192.247424 130.915373 \nL 192.582559 145.732575 \nL 192.917694 152.057759 \nL 193.587965 106.992715 \nL 193.9231 145.249164 \nL 194.258235 131.104296 \nL 194.59337 143.548959 \nL 194.928505 125.247111 \nL 195.26364 120.435536 \nL 195.598775 138.098628 \nL 195.93391 118.69653 \nL 196.269046 143.180843 \nL 196.604181 137.624211 \nL 196.939316 128.337578 \nL 197.274451 133.110714 \nL 197.609586 147.380806 \nL 197.944721 134.367222 \nL 198.279856 146.157902 \nL 198.614992 130.900544 \nL 198.950127 120.860675 \nL 199.285262 165.96 \nL 199.620397 144.640676 \nL 199.955532 143.775781 \nL 200.290667 114.716512 \nL 200.960938 135.208678 \nL 201.296073 134.608955 \nL 201.631208 143.055282 \nL 201.966343 147.077718 \nL 202.301478 136.892488 \nL 202.636613 119.356461 \nL 202.971748 134.102878 \nL 203.306883 137.057494 \nL 203.642019 121.759878 \nL 203.977154 143.351607 \nL 204.312289 147.757517 \nL 204.647424 148.199056 \nL 205.317694 126.877409 \nL 205.652829 131.832675 \nL 205.987965 131.480946 \nL 206.3231 149.523801 \nL 206.658235 133.830196 \nL 206.99337 136.241188 \nL 207.328505 140.911604 \nL 207.66364 130.379882 \nL 207.998775 155.186765 \nL 208.33391 121.738109 \nL 208.669046 140.044719 \nL 209.004181 146.186681 \nL 209.339316 137.246386 \nL 209.674451 143.529958 \nL 210.009586 153.702163 \nL 210.344721 139.993765 \nL 210.679856 140.947225 \nL 211.014992 130.115538 \nL 211.350127 150.280763 \nL 211.685262 137.358177 \nL 212.020397 139.08402 \nL 212.355532 141.754696 \nL 212.690667 140.015098 \nL 213.025802 126.613242 \nL 213.360938 125.278475 \nL 213.696073 145.346024 \nL 214.031208 126.366355 \nL 214.366343 150.660471 \nL 214.701478 134.333465 \nL 215.036613 130.372051 \nL 215.371748 144.94817 \nL 215.706883 135.963577 \nL 216.042019 135.292269 \nL 216.377154 126.731765 \nL 216.712289 138.976869 \nL 217.047424 142.059023 \nL 217.717694 129.121705 \nL 218.052829 133.591744 \nL 218.387965 132.274287 \nL 218.7231 139.708891 \nL 219.058235 138.266963 \nL 219.39337 133.181957 \nL 219.728505 137.10839 \nL 220.06364 157.022925 \nL 220.398775 133.789936 \nL 220.73391 142.474212 \nL 221.404181 121.026944 \nL 221.739316 143.784405 \nL 222.074451 126.872273 \nL 222.409586 132.577002 \nL 222.744721 145.576398 \nL 223.414992 125.913893 \nL 223.750127 134.927375 \nL 224.085262 131.182287 \nL 224.420397 123.498079 \nL 224.755532 135.389926 \nL 225.090667 136.609311 \nL 225.425802 155.185783 \nL 225.760938 120.455636 \nL 226.096073 128.425865 \nL 226.431208 127.689424 \nL 226.766343 142.793725 \nL 227.101478 135.36097 \nL 227.436613 140.802322 \nL 227.771748 116.742541 \nL 228.106883 129.148595 \nL 228.442019 136.000221 \nL 228.777154 129.299629 \nL 229.112289 136.931528 \nL 229.447424 129.759839 \nL 229.782559 139.854838 \nL 230.117694 128.6957 \nL 230.452829 129.945048 \nL 230.787965 130.246143 \nL 231.1231 129.016626 \nL 231.458235 137.455135 \nL 231.79337 126.770746 \nL 232.128505 124.020447 \nL 232.46364 127.330115 \nL 232.798775 120.922737 \nL 233.13391 117.868114 \nL 233.469046 122.209325 \nL 233.804181 146.670507 \nL 234.139316 141.379639 \nL 234.474451 121.79077 \nL 234.809586 126.850858 \nL 235.144721 135.664555 \nL 235.479856 128.429863 \nL 235.814992 136.040686 \nL 236.150127 111.270146 \nL 236.485262 130.163883 \nL 237.155532 121.91824 \nL 237.490667 139.938099 \nL 237.825802 111.263878 \nL 238.160938 116.009823 \nL 238.496073 107.075761 \nL 238.831208 108.15364 \nL 239.166343 114.914209 \nL 239.501478 106.841374 \nL 239.836613 128.075776 \nL 240.171748 130.805457 \nL 240.842019 116.676382 \nL 241.177154 123.485191 \nL 241.512289 122.527406 \nL 241.847424 130.821525 \nL 242.182559 118.767196 \nL 242.517694 131.153721 \nL 242.852829 114.781673 \nL 243.187965 88.587014 \nL 243.5231 125.717175 \nL 243.858235 132.753263 \nL 244.19337 110.540017 \nL 244.528505 116.235426 \nL 244.86364 116.842926 \nL 245.198775 113.692311 \nL 245.53391 108.848295 \nL 245.869046 102.225608 \nL 246.204181 116.003667 \nL 246.874451 117.413108 \nL 247.544721 102.073035 \nL 247.879856 106.062459 \nL 248.214992 104.377725 \nL 248.550127 104.340183 \nL 248.885262 132.25809 \nL 249.220397 102.378539 \nL 249.555532 114.092901 \nL 249.890667 112.579703 \nL 250.225802 115.747713 \nL 250.560938 127.667478 \nL 250.896073 97.911852 \nL 251.231208 118.228904 \nL 251.566343 112.657892 \nL 251.901478 101.652224 \nL 252.236613 102.522504 \nL 252.571748 109.140459 \nL 252.906883 93.034991 \nL 253.242019 93.457728 \nL 253.577154 106.003594 \nL 253.912289 92.286335 \nL 254.247424 115.087595 \nL 254.582559 100.878927 \nL 254.917694 106.522586 \nL 255.252829 91.5781 \nL 255.587965 81.885025 \nL 255.9231 89.186667 \nL 256.258235 115.023726 \nL 256.59337 102.194347 \nL 256.928505 130.988618 \nL 257.26364 80.897502 \nL 257.598775 90.662863 \nL 257.93391 113.075088 \nL 258.269046 79.309564 \nL 258.604181 97.169844 \nL 258.939316 99.30483 \nL 259.274451 103.136631 \nL 259.609586 110.584259 \nL 259.944721 93.369708 \nL 260.279856 116.785996 \nL 260.950127 88.526979 \nL 261.285262 97.998329 \nL 261.620397 87.084359 \nL 261.955532 91.352545 \nL 262.290667 72.053547 \nL 262.625802 80.295212 \nL 262.960938 80.124885 \nL 263.296073 104.097524 \nL 263.631208 79.203083 \nL 263.966343 89.524809 \nL 264.301478 92.826014 \nL 264.636613 68.574925 \nL 264.971748 75.238258 \nL 265.306883 75.246014 \nL 265.642019 69.504603 \nL 265.977154 81.702972 \nL 266.312289 57.645222 \nL 266.647424 87.017171 \nL 266.982559 87.256953 \nL 267.317694 95.561485 \nL 267.652829 87.322618 \nL 267.987965 70.058936 \nL 268.3231 86.725006 \nL 268.99337 64.359905 \nL 269.328505 70.331059 \nL 269.66364 93.263825 \nL 269.998775 80.402015 \nL 270.33391 74.243675 \nL 270.669046 56.849574 \nL 271.004181 70.387449 \nL 271.339316 76.349885 \nL 271.674451 74.733718 \nL 272.009586 75.586106 \nL 272.679856 56.863912 \nL 273.014992 81.258507 \nL 273.350127 71.581372 \nL 273.685262 66.856725 \nL 274.020397 71.455629 \nL 274.355532 83.15055 \nL 274.690667 66.481517 \nL 275.025802 81.328939 \nL 275.360937 82.621423 \nL 275.696073 83.35422 \nL 276.031208 70.153009 \nL 276.366343 76.492476 \nL 277.036613 52.198068 \nL 277.371748 72.120261 \nL 277.706883 73.395577 \nL 278.042019 65.209674 \nL 278.377154 74.133307 \nL 278.712289 63.806492 \nL 279.047424 46.626165 \nL 279.382559 52.617615 \nL 279.717694 78.44647 \nL 280.387965 45.890535 \nL 280.7231 73.111227 \nL 281.058235 74.502822 \nL 281.39337 51.77802 \nL 281.728505 47.090727 \nL 282.06364 54.083207 \nL 282.398775 58.515198 \nL 282.73391 47.409874 \nL 283.069046 60.936921 \nL 283.404181 44.682958 \nL 283.739316 65.11568 \nL 284.074451 54.51964 \nL 284.409586 57.676198 \nL 284.744721 54.68283 \nL 285.079856 64.217974 \nL 285.414992 57.74355 \nL 285.750127 47.027322 \nL 286.085262 58.781288 \nL 286.420397 51.936595 \nL 286.755532 54.873071 \nL 287.090667 41.361067 \nL 287.425802 71.210296 \nL 287.760938 45.74313 \nL 288.096073 75.10922 \nL 288.431208 53.44705 \nL 288.766343 53.310945 \nL 289.101478 65.35216 \nL 289.436613 51.023899 \nL 289.771748 59.939364 \nL 290.106883 72.367002 \nL 290.442019 50.367228 \nL 290.777154 46.496351 \nL 291.447424 56.528328 \nL 291.782559 46.05797 \nL 292.117694 55.209949 \nL 292.452829 38.223973 \nL 292.787965 55.220295 \nL 293.1231 49.007514 \nL 293.458235 29.37818 \nL 293.79337 37.90136 \nL 294.128505 17.088884 \nL 294.46364 38.512385 \nL 294.798775 24.618326 \nL 295.13391 34.15778 \nL 295.469046 52.506963 \nL 295.804181 42.272454 \nL 296.139316 39.412815 \nL 296.474451 52.367996 \nL 296.809586 32.382615 \nL 297.144721 28.193199 \nL 297.479856 30.274594 \nL 298.150127 36.341871 \nL 298.485262 44.661024 \nL 298.820397 41.292406 \nL 299.155532 39.65135 \nL 299.490667 18.190165 \nL 299.825802 49.349532 \nL 300.496073 36.292583 \nL 300.831208 35.343695 \nL 301.166343 35.383583 \nL 301.501478 44.336753 \nL 301.836613 44.211212 \nL 302.506883 50.132645 \nL 302.842019 38.200508 \nL 303.177154 35.809429 \nL 303.512289 26.614074 \nL 303.847424 58.723879 \nL 304.182559 43.188575 \nL 304.517694 43.442439 \nL 304.852829 29.805235 \nL 305.187965 32.654726 \nL 305.5231 58.663833 \nL 306.19337 22.709495 \nL 306.528505 37.54151 \nL 306.86364 30.273368 \nL 307.198775 45.889196 \nL 307.869046 36.225131 \nL 308.204181 15.098727 \nL 308.539316 23.959835 \nL 308.874451 41.43918 \nL 309.209586 43.111503 \nL 309.544721 28.373198 \nL 310.214992 49.509654 \nL 310.550127 46.947707 \nL 310.885262 33.695128 \nL 311.220397 52.508385 \nL 311.555532 35.885109 \nL 311.890667 52.240074 \nL 312.560938 34.256813 \nL 312.896073 44.187602 \nL 313.231208 32.258294 \nL 313.566343 39.502742 \nL 313.901478 35.118528 \nL 314.236613 48.435059 \nL 314.571748 42.703205 \nL 314.906883 39.038268 \nL 315.242019 42.440728 \nL 315.577154 38.528895 \nL 315.912289 54.335172 \nL 316.247424 34.406855 \nL 316.582559 38.670725 \nL 316.917694 35.825103 \nL 317.252829 39.723008 \nL 317.587965 32.136323 \nL 317.9231 45.688602 \nL 318.258235 35.656671 \nL 318.59337 35.838672 \nL 318.928505 39.761452 \nL 319.26364 34.034032 \nL 319.598775 37.456607 \nL 319.93391 21.757359 \nL 320.269046 34.929061 \nL 320.604181 38.451799 \nL 320.939316 37.456787 \nL 321.274451 33.648501 \nL 321.609586 39.167719 \nL 321.944721 33.728637 \nL 322.279856 32.895818 \nL 322.614992 53.527064 \nL 322.950127 48.611702 \nL 323.285262 27.860154 \nL 323.620397 29.029601 \nL 323.955532 50.342398 \nL 324.290667 44.539502 \nL 324.625802 50.567583 \nL 324.960938 25.902145 \nL 325.296073 45.666937 \nL 325.631208 49.440816 \nL 325.966343 48.044371 \nL 326.301478 32.142695 \nL 326.636613 53.258642 \nL 326.971748 60.454758 \nL 327.306883 31.02754 \nL 327.642019 30.741922 \nL 328.312289 45.395119 \nL 328.647424 37.76943 \nL 329.317694 58.877358 \nL 329.652829 47.476716 \nL 329.987965 31.979175 \nL 330.3231 27.550511 \nL 330.658235 45.974267 \nL 330.99337 37.629899 \nL 331.328505 51.183811 \nL 331.66364 56.935512 \nL 331.998775 43.649359 \nL 332.33391 50.884438 \nL 332.669046 40.343585 \nL 333.004181 42.910195 \nL 333.339316 63.775421 \nL 333.674451 29.023394 \nL 334.009586 53.238012 \nL 334.344721 48.583328 \nL 334.679856 38.757014 \nL 335.014992 72.637223 \nL 335.350127 45.453608 \nL 335.685262 57.809474 \nL 336.020397 59.249787 \nL 336.355532 41.176624 \nL 336.690667 65.369617 \nL 337.025802 61.314813 \nL 337.360937 50.99245 \nL 337.696073 49.612618 \nL 338.031208 57.722633 \nL 338.701478 60.306165 \nL 339.371748 38.646377 \nL 339.706883 40.19209 \nL 340.042019 60.803508 \nL 340.377154 37.888035 \nL 340.712289 37.771069 \nL 341.047424 59.159662 \nL 341.382559 49.402466 \nL 341.717694 53.60153 \nL 342.052829 45.346359 \nL 342.387965 57.341081 \nL 342.7231 79.334409 \nL 343.058235 56.68575 \nL 343.728505 47.535013 \nL 344.06364 61.745685 \nL 344.398775 30.512756 \nL 344.73391 54.029961 \nL 345.069046 51.444148 \nL 345.404181 61.234228 \nL 345.739316 56.963208 \nL 346.074451 41.253562 \nL 346.409586 54.703707 \nL 346.744721 60.164604 \nL 347.079856 49.116347 \nL 347.414992 52.564396 \nL 347.750127 59.179188 \nL 348.085262 60.303306 \nL 348.420397 51.144323 \nL 348.755532 26.012989 \nL 349.090667 72.00257 \nL 349.760938 50.253731 \nL 350.096073 58.373906 \nL 350.431208 56.965301 \nL 350.766343 44.830919 \nL 351.101478 78.814519 \nL 351.436613 59.377691 \nL 351.771748 66.444577 \nL 352.106883 60.579116 \nL 352.442019 63.28095 \nL 352.777154 51.867873 \nL 353.112289 58.407757 \nL 353.447424 69.343575 \nL 353.782559 61.826456 \nL 354.117694 63.620068 \nL 354.452829 86.989073 \nL 354.787965 72.277376 \nL 355.1231 66.234853 \nL 355.458235 58.130421 \nL 355.79337 74.546133 \nL 356.128505 63.531461 \nL 356.798775 92.737641 \nL 357.13391 80.622478 \nL 357.469046 99.128627 \nL 357.804181 73.238382 \nL 358.139316 94.974196 \nL 358.474451 65.482555 \nL 358.809586 65.930223 \nL 359.144721 78.334677 \nL 359.479856 78.232994 \nL 359.814992 93.378042 \nL 360.150127 73.93272 \nL 360.485262 79.501661 \nL 360.820397 98.094101 \nL 361.155532 91.040069 \nL 361.490667 63.961757 \nL 361.825802 86.072413 \nL 362.160938 84.709746 \nL 362.496073 78.197508 \nL 362.831208 74.22702 \nL 363.166343 91.746422 \nL 363.501478 66.142055 \nL 363.836613 74.632267 \nL 364.171748 89.944277 \nL 364.506883 94.41425 \nL 364.842019 69.4004 \nL 365.177154 83.340406 \nL 365.512289 87.959029 \nL 366.182559 82.146141 \nL 366.517694 81.30587 \nL 366.852829 82.447847 \nL 367.5231 86.189639 \nL 367.858235 94.865671 \nL 368.19337 93.768938 \nL 368.528505 79.311177 \nL 368.86364 98.920524 \nL 369.198775 100.999198 \nL 369.869046 93.493721 \nL 370.204181 79.963327 \nL 370.539316 79.652374 \nL 370.874451 95.789206 \nL 371.209586 90.972247 \nL 371.544721 93.24621 \nL 371.879856 82.999311 \nL 372.214992 104.923768 \nL 372.885262 95.112233 \nL 373.220397 100.868508 \nL 373.890667 95.906279 \nL 374.225802 107.865904 \nL 374.560938 108.164603 \nL 374.896073 108.236894 \nL 375.231208 82.624859 \nL 375.566343 117.754493 \nL 375.901478 80.951443 \nL 376.236613 115.297604 \nL 376.571748 94.118462 \nL 376.906883 93.971646 \nL 377.242019 108.766166 \nL 377.577154 102.743299 \nL 377.912289 103.752676 \nL 378.247424 91.066895 \nL 378.582559 96.616168 \nL 378.917694 115.10855 \nL 379.252829 108.371767 \nL 379.587965 114.749195 \nL 379.9231 110.272379 \nL 380.258235 110.273505 \nL 380.59337 96.574961 \nL 380.928505 107.463909 \nL 381.26364 98.810355 \nL 381.93391 129.426993 \nL 382.269046 115.145142 \nL 382.604181 115.510182 \nL 382.939316 107.514448 \nL 383.274451 111.824595 \nL 383.944721 104.05023 \nL 384.279856 107.587501 \nL 384.614992 126.508886 \nL 384.950127 125.989857 \nL 385.285262 103.043512 \nL 385.620397 106.030121 \nL 386.290667 129.075084 \nL 386.625802 119.713744 \nL 386.960938 98.364787 \nL 386.960938 98.364787 \n\" clip-path=\"url(#p37412f0ba3)\" 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 80.382404 \nL 53.836613 79.177102 \nL 54.171748 82.731891 \nL 54.842019 82.636899 \nL 55.177154 80.537856 \nL 55.512289 85.219563 \nL 55.847424 83.473584 \nL 56.182559 85.729603 \nL 56.517694 87.009198 \nL 56.852829 79.126081 \nL 57.187965 77.623643 \nL 57.5231 77.855226 \nL 57.858235 85.493072 \nL 58.19337 90.292502 \nL 58.86364 89.265823 \nL 59.198775 78.026439 \nL 59.53391 79.599663 \nL 59.869046 78.421194 \nL 60.204181 74.750624 \nL 60.539316 75.859143 \nL 60.874451 74.056327 \nL 61.209586 73.974482 \nL 61.544721 77.621159 \nL 62.214992 71.346729 \nL 62.885262 66.811915 \nL 63.220397 68.087331 \nL 63.555532 68.750391 \nL 63.890667 67.839742 \nL 64.560938 65.54199 \nL 64.896073 61.254898 \nL 65.231208 61.482812 \nL 65.566343 63.088116 \nL 65.901478 59.842546 \nL 66.236613 63.705595 \nL 66.571748 63.475914 \nL 66.906883 53.016537 \nL 67.242019 60.745754 \nL 67.577154 58.852558 \nL 67.912289 61.182581 \nL 68.582559 72.259378 \nL 68.917694 65.865626 \nL 69.252829 69.878622 \nL 69.587965 69.040346 \nL 69.9231 54.879798 \nL 70.258235 59.398813 \nL 70.59337 52.208465 \nL 70.928505 49.688454 \nL 71.26364 49.171522 \nL 71.598775 50.773548 \nL 72.269046 62.0706 \nL 72.604181 63.005807 \nL 72.939316 66.796064 \nL 73.609586 55.406285 \nL 73.944721 56.902726 \nL 74.279856 56.850954 \nL 74.614992 57.568931 \nL 74.950127 54.957248 \nL 75.285262 61.500821 \nL 75.620397 53.895101 \nL 75.955532 51.095231 \nL 76.290667 56.395642 \nL 76.625802 57.967314 \nL 76.960938 51.12751 \nL 77.296073 56.842088 \nL 77.631208 53.764265 \nL 77.966343 52.602117 \nL 78.301478 54.358611 \nL 78.636613 53.977453 \nL 78.971748 50.179385 \nL 79.642019 56.755122 \nL 79.977154 45.505221 \nL 80.312289 50.909954 \nL 80.982559 53.723431 \nL 81.317694 57.839571 \nL 81.652829 51.590406 \nL 81.987965 52.925515 \nL 82.3231 55.230919 \nL 82.658235 49.399552 \nL 82.99337 50.247805 \nL 83.328505 48.094162 \nL 83.66364 48.762437 \nL 83.998775 45.713902 \nL 84.33391 49.014814 \nL 84.669046 45.703977 \nL 85.004181 49.283306 \nL 85.674451 46.090314 \nL 86.009586 48.230086 \nL 86.344721 52.044455 \nL 86.679856 48.207975 \nL 87.014992 52.130722 \nL 87.350127 42.891304 \nL 87.685262 44.400632 \nL 88.020397 39.441662 \nL 88.355532 44.218759 \nL 88.690667 44.46575 \nL 89.360938 46.699184 \nL 89.696073 46.4767 \nL 90.031208 46.459524 \nL 90.366343 45.961629 \nL 90.701478 45.256466 \nL 91.036613 43.355308 \nL 91.371748 46.387576 \nL 91.706883 46.460686 \nL 92.042019 43.987305 \nL 92.377154 46.037868 \nL 92.712289 37.361078 \nL 93.047424 36.455675 \nL 93.382559 40.444648 \nL 93.717694 42.093111 \nL 94.387965 42.446619 \nL 94.7231 37.189327 \nL 95.058235 39.190041 \nL 95.39337 40.312508 \nL 95.728505 43.533915 \nL 96.06364 43.07582 \nL 96.398775 40.929096 \nL 96.73391 41.933669 \nL 97.069046 39.093498 \nL 97.404181 41.714328 \nL 97.739316 42.787247 \nL 98.074451 41.807456 \nL 98.409586 41.191267 \nL 98.744721 36.308129 \nL 99.079856 40.853049 \nL 99.414992 37.836584 \nL 100.085262 44.969694 \nL 100.420397 44.097026 \nL 100.755532 44.848833 \nL 101.090667 42.702198 \nL 101.425802 44.800251 \nL 101.760938 40.213474 \nL 102.096073 41.240363 \nL 102.431208 43.590335 \nL 102.766343 35.649926 \nL 103.101478 39.540103 \nL 103.436613 37.63206 \nL 103.771748 33.186881 \nL 104.106883 37.598507 \nL 104.442019 40.208201 \nL 104.777154 46.644089 \nL 105.112289 50.618775 \nL 105.447424 51.327643 \nL 105.782559 52.735628 \nL 106.117694 44.669594 \nL 106.452829 42.088963 \nL 106.787965 46.338926 \nL 107.1231 41.301315 \nL 107.458235 41.750013 \nL 107.79337 38.977481 \nL 108.128505 39.595928 \nL 108.46364 43.539278 \nL 108.798775 44.527346 \nL 109.13391 47.220884 \nL 110.139316 39.591393 \nL 110.474451 35.389815 \nL 110.809586 35.284287 \nL 111.144721 39.699975 \nL 111.479856 39.061026 \nL 111.814992 43.350916 \nL 112.150127 43.944127 \nL 112.485262 43.897244 \nL 113.155532 46.742176 \nL 113.490667 45.483309 \nL 113.825802 41.875717 \nL 114.160938 39.587669 \nL 114.496073 39.494734 \nL 115.166343 48.588132 \nL 115.501478 50.902605 \nL 115.836613 49.817573 \nL 116.171748 45.470576 \nL 116.506883 45.559783 \nL 116.842019 41.548113 \nL 117.177154 41.12451 \nL 117.512289 51.008237 \nL 117.847424 41.0742 \nL 118.182559 43.076272 \nL 118.517694 43.829761 \nL 118.852829 43.440305 \nL 119.187965 42.201935 \nL 119.5231 43.023004 \nL 119.858235 45.391252 \nL 120.19337 39.61571 \nL 120.528505 42.117038 \nL 120.86364 45.482653 \nL 121.198775 44.62724 \nL 121.53391 44.483472 \nL 121.869046 47.828826 \nL 122.204181 42.714466 \nL 122.539316 41.801016 \nL 123.209586 52.263778 \nL 123.544721 53.351725 \nL 123.879856 52.581117 \nL 124.214992 52.449118 \nL 124.550127 42.603668 \nL 124.885262 40.046934 \nL 125.220397 44.107073 \nL 125.555532 46.340922 \nL 125.890667 51.286305 \nL 126.225802 50.995285 \nL 126.560938 51.598121 \nL 126.896073 52.605358 \nL 127.231208 46.370336 \nL 127.566343 48.072201 \nL 127.901478 51.460454 \nL 128.236613 44.536142 \nL 128.906883 56.151614 \nL 129.242019 54.205807 \nL 129.577154 55.966985 \nL 129.912289 55.980684 \nL 130.247424 47.400853 \nL 130.582559 48.629302 \nL 130.917694 50.992169 \nL 131.252829 51.593165 \nL 131.587965 55.740035 \nL 131.9231 51.708141 \nL 132.258235 61.86549 \nL 132.59337 52.570479 \nL 132.928505 57.674654 \nL 133.26364 48.228548 \nL 133.598775 47.997982 \nL 133.93391 49.100059 \nL 134.269046 48.387926 \nL 134.604181 52.230463 \nL 134.939316 52.016039 \nL 135.274451 52.929458 \nL 135.609586 51.067303 \nL 135.944721 48.087216 \nL 136.279856 47.667336 \nL 136.614992 49.917967 \nL 136.950127 49.863736 \nL 137.285262 56.456023 \nL 137.620397 58.155742 \nL 137.955532 54.07432 \nL 138.290667 54.827903 \nL 138.625802 52.791614 \nL 138.960938 57.680196 \nL 139.296073 59.197295 \nL 139.631208 61.834412 \nL 139.966343 61.246927 \nL 140.301478 56.434486 \nL 140.636613 57.663255 \nL 140.971748 55.605676 \nL 141.306883 62.314301 \nL 141.642019 66.324791 \nL 141.977154 65.513378 \nL 142.312289 66.303661 \nL 142.647424 65.926822 \nL 142.982559 55.790016 \nL 143.317694 59.628427 \nL 143.652829 65.143382 \nL 143.987965 68.480638 \nL 144.3231 74.469482 \nL 144.99337 79.879762 \nL 145.66364 73.291039 \nL 145.998775 73.044344 \nL 146.33391 72.244605 \nL 146.669046 77.198 \nL 147.004181 77.682381 \nL 147.339316 77.410774 \nL 147.674451 77.880799 \nL 148.009586 75.17086 \nL 148.344721 76.615979 \nL 148.679856 76.171 \nL 149.014992 78.21448 \nL 149.350127 75.808468 \nL 149.685262 74.352542 \nL 150.020397 75.458573 \nL 150.355532 70.825313 \nL 150.690667 79.740516 \nL 151.025802 76.301778 \nL 151.360938 79.048259 \nL 151.696073 83.24833 \nL 152.031208 84.574838 \nL 152.366343 87.774391 \nL 152.701478 83.619723 \nL 153.036613 82.164585 \nL 153.371748 81.69857 \nL 153.706883 79.009539 \nL 154.042019 81.564011 \nL 154.377154 80.379195 \nL 155.047424 87.630544 \nL 155.717694 81.744698 \nL 156.052829 81.236547 \nL 156.387965 83.003883 \nL 157.058235 88.337997 \nL 157.39337 88.437078 \nL 157.728505 87.51493 \nL 158.06364 86.185546 \nL 158.398775 83.423748 \nL 158.73391 85.111003 \nL 159.069046 87.450575 \nL 159.404181 91.54763 \nL 159.739316 90.86728 \nL 160.074451 89.808978 \nL 161.079856 95.373799 \nL 161.414992 94.221309 \nL 161.750127 87.934409 \nL 162.085262 87.234871 \nL 162.755532 96.164007 \nL 163.090667 93.85816 \nL 163.425802 92.546998 \nL 163.760938 89.839931 \nL 164.096073 94.756045 \nL 165.101478 102.114305 \nL 165.436613 98.563034 \nL 165.771748 97.511229 \nL 166.106883 94.882438 \nL 166.442019 93.949614 \nL 166.777154 94.888457 \nL 167.447424 107.143455 \nL 168.117694 101.110475 \nL 168.452829 99.916463 \nL 168.787965 99.861453 \nL 169.1231 99.280094 \nL 169.458235 101.022748 \nL 169.79337 108.426482 \nL 170.128505 111.530948 \nL 170.46364 113.585027 \nL 170.798775 112.996653 \nL 171.13391 104.192663 \nL 171.469046 99.292593 \nL 171.804181 97.163544 \nL 172.139316 91.02022 \nL 172.474451 95.879322 \nL 173.144721 113.057557 \nL 173.479856 112.426643 \nL 173.814992 117.347227 \nL 174.150127 120.530193 \nL 174.485262 120.243659 \nL 174.820397 122.379998 \nL 175.155532 121.862638 \nL 175.490667 118.765872 \nL 176.160938 115.602428 \nL 176.496073 110.09311 \nL 176.831208 107.140591 \nL 177.166343 107.114155 \nL 177.501478 114.290132 \nL 177.836613 113.044375 \nL 178.171748 117.009235 \nL 178.506883 117.10709 \nL 178.842019 114.525047 \nL 179.177154 121.148756 \nL 179.512289 121.738958 \nL 179.847424 123.754708 \nL 180.517694 120.169254 \nL 180.852829 116.648906 \nL 181.187965 116.066597 \nL 181.5231 115.908269 \nL 181.858235 116.476332 \nL 182.19337 117.605681 \nL 182.528505 120.361324 \nL 183.198775 111.950117 \nL 183.53391 112.421238 \nL 183.869046 114.708214 \nL 184.204181 124.918021 \nL 184.539316 129.115311 \nL 184.874451 125.960889 \nL 185.209586 125.560367 \nL 185.544721 130.305993 \nL 186.214992 124.52345 \nL 186.550127 118.666979 \nL 186.885262 118.544611 \nL 187.555532 126.351526 \nL 187.890667 124.381621 \nL 188.560938 127.451943 \nL 188.896073 125.796326 \nL 189.566343 129.451524 \nL 189.901478 130.764299 \nL 190.571748 120.594896 \nL 190.906883 115.35692 \nL 191.242019 114.904831 \nL 191.912289 122.068783 \nL 192.247424 125.378738 \nL 192.582559 126.903832 \nL 192.917694 131.900475 \nL 193.252829 138.720643 \nL 193.587965 137.252533 \nL 193.9231 127.872076 \nL 194.258235 124.985718 \nL 195.26364 133.232416 \nL 195.598775 126.522168 \nL 195.93391 128.320127 \nL 196.269046 124.392623 \nL 196.604181 126.807042 \nL 196.939316 132.921498 \nL 197.274451 130.338441 \nL 197.609586 130.962164 \nL 197.944721 133.985533 \nL 198.279856 134.538685 \nL 198.614992 134.464342 \nL 198.950127 136.577129 \nL 199.285262 129.395659 \nL 199.620397 132.634744 \nL 199.955532 140.985355 \nL 200.290667 137.554787 \nL 200.625802 137.875176 \nL 200.960938 124.808312 \nL 201.296073 126.504049 \nL 201.631208 126.833453 \nL 202.301478 137.695348 \nL 202.636613 138.030391 \nL 203.306883 127.99069 \nL 203.642019 129.958196 \nL 203.977154 126.662246 \nL 204.312289 129.090438 \nL 204.647424 136.210477 \nL 204.982559 138.769442 \nL 205.317694 139.428592 \nL 205.987965 130.65301 \nL 206.3231 129.359687 \nL 206.99337 135.287023 \nL 207.328505 132.842384 \nL 207.66364 135.43365 \nL 207.998775 133.001658 \nL 208.33391 134.250753 \nL 208.669046 134.920618 \nL 209.004181 128.841082 \nL 209.339316 137.715795 \nL 209.674451 135.264439 \nL 210.009586 135.73845 \nL 210.344721 139.754303 \nL 210.679856 141.194824 \nL 211.014992 136.931287 \nL 211.350127 136.27467 \nL 211.685262 133.795945 \nL 212.020397 137.713628 \nL 212.355532 134.47491 \nL 212.690667 136.788908 \nL 213.025802 136.548765 \nL 213.360938 133.639225 \nL 213.696073 129.196296 \nL 214.031208 130.887015 \nL 214.366343 129.881685 \nL 214.701478 131.335848 \nL 215.036613 136.970955 \nL 215.371748 131.847736 \nL 215.706883 133.862701 \nL 216.042019 134.686527 \nL 217.047424 130.486695 \nL 217.382559 134.007867 \nL 217.717694 134.052967 \nL 218.7231 130.130059 \nL 219.058235 131.680667 \nL 219.39337 133.996969 \nL 219.728505 133.409092 \nL 220.06364 133.073557 \nL 220.398775 136.999826 \nL 220.73391 138.872006 \nL 221.069046 134.349396 \nL 221.404181 137.194978 \nL 221.739316 128.92333 \nL 222.074451 129.415744 \nL 222.409586 129.577121 \nL 222.744721 128.680743 \nL 223.079856 134.005163 \nL 223.414992 133.847173 \nL 223.750127 131.647817 \nL 224.420397 129.582083 \nL 224.755532 126.606558 \nL 225.425802 130.10623 \nL 225.760938 135.405411 \nL 226.096073 134.89269 \nL 226.431208 127.293233 \nL 226.766343 129.839258 \nL 227.101478 128.710404 \nL 227.436613 132.372298 \nL 227.771748 133.537634 \nL 228.106883 130.490714 \nL 228.442019 125.471561 \nL 228.777154 128.294278 \nL 229.112289 127.02132 \nL 229.447424 130.495252 \nL 229.782559 130.612523 \nL 230.117694 131.251006 \nL 230.452829 131.443835 \nL 230.787965 129.242666 \nL 231.1231 129.150426 \nL 231.458235 127.32109 \nL 231.79337 129.54789 \nL 232.128505 128.945822 \nL 232.46364 126.427294 \nL 232.798775 125.78273 \nL 233.469046 120.14198 \nL 233.804181 119.696391 \nL 234.474451 132.395129 \nL 234.809586 130.925933 \nL 235.144721 128.024553 \nL 235.479856 128.600243 \nL 235.814992 127.051915 \nL 236.150127 129.543861 \nL 236.485262 125.003266 \nL 236.820397 122.826334 \nL 237.155532 123.805317 \nL 237.490667 121.082845 \nL 237.825802 127.168704 \nL 238.831208 115.105626 \nL 239.166343 108.950797 \nL 239.501478 110.157215 \nL 239.836613 108.715 \nL 240.171748 113.66404 \nL 240.506883 120.338462 \nL 240.842019 122.004056 \nL 241.177154 121.927286 \nL 241.512289 120.75902 \nL 241.847424 120.005738 \nL 242.182559 122.246368 \nL 242.517694 122.341056 \nL 242.852829 123.611355 \nL 243.187965 121.79709 \nL 243.5231 110.086227 \nL 243.858235 111.242589 \nL 244.19337 116.536088 \nL 244.528505 117.69757 \nL 244.86364 117.906763 \nL 245.198775 116.555528 \nL 245.53391 113.356152 \nL 245.869046 112.118256 \nL 246.204181 108.301668 \nL 246.539316 108.640445 \nL 247.209586 112.94049 \nL 247.544721 113.217346 \nL 247.879856 109.016763 \nL 248.550127 104.473885 \nL 248.885262 103.61124 \nL 249.220397 111.641211 \nL 249.555532 111.519304 \nL 249.890667 111.2534 \nL 250.225802 113.035894 \nL 250.560938 110.878374 \nL 250.896073 116.749893 \nL 251.231208 112.496006 \nL 251.566343 112.009829 \nL 251.901478 112.671302 \nL 252.236613 107.089744 \nL 252.906883 105.240411 \nL 253.577154 97.860484 \nL 253.912289 99.358416 \nL 254.247424 96.797385 \nL 254.582559 101.512488 \nL 254.917694 103.80694 \nL 255.252829 103.34023 \nL 255.587965 101.835416 \nL 255.9231 93.433773 \nL 256.258235 90.498567 \nL 256.59337 94.502924 \nL 256.928505 100.804046 \nL 257.26364 109.983475 \nL 257.598775 106.514313 \nL 257.93391 100.093947 \nL 258.269046 102.85593 \nL 258.604181 93.075736 \nL 258.939316 95.211873 \nL 259.274451 96.507475 \nL 259.609586 96.263035 \nL 259.944721 102.825294 \nL 260.279856 101.418725 \nL 260.614992 104.799126 \nL 260.950127 105.088366 \nL 261.285262 98.663341 \nL 261.620397 98.318971 \nL 261.955532 93.137168 \nL 262.290667 90.989034 \nL 262.960938 81.845446 \nL 263.296073 79.842905 \nL 263.631208 84.679154 \nL 264.301478 89.816182 \nL 264.636613 90.59994 \nL 264.971748 83.221064 \nL 265.642019 77.175308 \nL 265.977154 69.974778 \nL 266.312289 74.010192 \nL 266.647424 70.752352 \nL 266.982559 72.548557 \nL 267.317694 77.880301 \nL 267.652829 85.714739 \nL 267.987965 90.062682 \nL 268.3231 84.482369 \nL 268.658235 83.367933 \nL 268.99337 79.120604 \nL 269.328505 73.016757 \nL 269.66364 73.285709 \nL 269.998775 74.350557 \nL 270.33391 80.830477 \nL 270.669046 80.224993 \nL 271.004181 75.983086 \nL 271.339316 69.519231 \nL 271.674451 69.24571 \nL 272.009586 68.517644 \nL 272.344721 72.534643 \nL 272.679856 72.483807 \nL 273.014992 66.395748 \nL 273.350127 67.402322 \nL 273.685262 69.620574 \nL 274.020397 68.144533 \nL 274.355532 71.581536 \nL 274.690667 71.399378 \nL 275.025802 71.741928 \nL 275.696073 77.639397 \nL 276.031208 78.353328 \nL 276.366343 79.413231 \nL 276.701478 77.166258 \nL 277.036613 72.965127 \nL 277.371748 63.432086 \nL 277.706883 65.889894 \nL 278.377154 64.793496 \nL 278.712289 68.089426 \nL 279.047424 68.348633 \nL 279.382559 59.65489 \nL 279.717694 61.03845 \nL 280.052829 58.817926 \nL 280.387965 59.244773 \nL 280.7231 56.553875 \nL 281.058235 65.757829 \nL 281.39337 64.915162 \nL 281.728505 60.955665 \nL 282.06364 62.285223 \nL 282.398775 61.354679 \nL 282.73391 51.774141 \nL 283.069046 50.581323 \nL 283.404181 52.976643 \nL 283.739316 54.109761 \nL 284.074451 52.267855 \nL 284.409586 58.44943 \nL 284.744721 52.679626 \nL 285.079856 57.662721 \nL 285.414992 54.801297 \nL 285.750127 56.337104 \nL 286.085262 53.169226 \nL 286.420397 56.184208 \nL 286.755532 54.143832 \nL 287.090667 51.359483 \nL 287.425802 51.244495 \nL 287.760938 52.855124 \nL 288.096073 56.802551 \nL 288.431208 57.372528 \nL 288.766343 66.423178 \nL 289.101478 54.428013 \nL 289.436613 64.508049 \nL 289.771748 53.901791 \nL 290.106883 54.171729 \nL 290.442019 60.839575 \nL 290.777154 55.044583 \nL 291.112289 56.115062 \nL 291.447424 59.492173 \nL 291.782559 50.640389 \nL 292.117694 49.557828 \nL 292.452829 50.987606 \nL 292.787965 50.268225 \nL 293.1231 48.37809 \nL 293.458235 51.986454 \nL 293.79337 44.158155 \nL 294.128505 46.722241 \nL 294.46364 39.00843 \nL 294.798775 36.246604 \nL 295.13391 36.929869 \nL 295.469046 34.488688 \nL 295.804181 41.73891 \nL 296.139316 41.677293 \nL 296.474451 43.624498 \nL 296.809586 47.639396 \nL 297.479856 40.9086 \nL 297.814992 40.940189 \nL 298.150127 36.939306 \nL 298.485262 37.467265 \nL 298.820397 40.269513 \nL 299.155532 42.105147 \nL 299.490667 42.895277 \nL 299.825802 39.971247 \nL 300.160938 40.894192 \nL 300.496073 43.62881 \nL 300.831208 39.520437 \nL 301.166343 43.426776 \nL 301.501478 41.101615 \nL 301.836613 41.472232 \nL 302.506883 44.518697 \nL 302.842019 47.275311 \nL 303.512289 44.491929 \nL 303.847424 41.451534 \nL 304.182559 42.926468 \nL 304.517694 44.990391 \nL 304.852829 43.850721 \nL 305.187965 47.140671 \nL 305.5231 40.817385 \nL 305.858235 44.199465 \nL 306.19337 42.930691 \nL 306.528505 40.55728 \nL 306.86364 45.522525 \nL 307.198775 38.178632 \nL 307.53391 38.516334 \nL 307.869046 42.411528 \nL 308.204181 41.340739 \nL 308.539316 39.113372 \nL 308.874451 35.596146 \nL 309.209586 36.313989 \nL 309.544721 36.726004 \nL 309.879856 38.39595 \nL 310.550127 43.472051 \nL 310.885262 43.373549 \nL 311.220397 44.016899 \nL 311.555532 46.697805 \nL 312.225802 44.698013 \nL 312.560938 48.880224 \nL 312.896073 43.049849 \nL 313.231208 45.268338 \nL 313.566343 41.923756 \nL 313.901478 40.829446 \nL 314.236613 41.679249 \nL 314.571748 41.915248 \nL 314.906883 44.048498 \nL 315.242019 43.287913 \nL 315.577154 45.081246 \nL 315.912289 43.393441 \nL 316.247424 45.251067 \nL 316.582559 44.617749 \nL 316.917694 43.205995 \nL 317.252829 44.276293 \nL 317.587965 40.799684 \nL 317.9231 40.586517 \nL 318.258235 41.626876 \nL 318.59337 41.973264 \nL 318.928505 40.557152 \nL 319.26364 42.598031 \nL 319.598775 40.348685 \nL 319.93391 40.504611 \nL 320.269046 38.32738 \nL 320.604181 37.266982 \nL 320.939316 38.802154 \nL 321.274451 37.920565 \nL 321.609586 40.078685 \nL 321.944721 40.945933 \nL 322.279856 40.253603 \nL 322.614992 39.14108 \nL 322.950127 43.01485 \nL 323.285262 44.577494 \nL 323.620397 42.568379 \nL 323.955532 44.686422 \nL 324.290667 42.837444 \nL 324.625802 41.660596 \nL 324.960938 44.724564 \nL 325.296073 44.764443 \nL 325.631208 43.636486 \nL 325.966343 47.536359 \nL 326.301478 43.916343 \nL 326.971748 46.690077 \nL 327.306883 50.613257 \nL 327.642019 45.013631 \nL 327.977154 47.506838 \nL 328.312289 46.153647 \nL 328.647424 40.471498 \nL 328.982559 41.305062 \nL 329.317694 44.200789 \nL 329.652829 48.377553 \nL 329.987965 48.097031 \nL 330.3231 46.775817 \nL 330.658235 46.774868 \nL 330.99337 42.122259 \nL 331.328505 40.277216 \nL 331.66364 42.773972 \nL 331.998775 48.632116 \nL 332.33391 47.430651 \nL 332.669046 49.770803 \nL 333.004181 49.427257 \nL 333.339316 45.533262 \nL 333.674451 49.707547 \nL 334.009586 45.473463 \nL 334.344721 46.931114 \nL 334.679856 55.833935 \nL 335.014992 43.710146 \nL 335.350127 52.085951 \nL 335.685262 54.637631 \nL 336.020397 51.946471 \nL 336.355532 63.296891 \nL 336.690667 49.772649 \nL 337.360937 59.116924 \nL 337.696073 52.867276 \nL 338.031208 56.502005 \nL 338.366343 53.658059 \nL 338.701478 52.714228 \nL 339.036613 53.958583 \nL 339.371748 54.100932 \nL 340.377154 48.334445 \nL 340.712289 45.845645 \nL 341.047424 44.818315 \nL 341.382559 50.711696 \nL 341.717694 47.139777 \nL 342.052829 48.951134 \nL 342.387965 51.712594 \nL 342.7231 50.4328 \nL 343.058235 56.757905 \nL 343.39337 58.530296 \nL 343.728505 58.150457 \nL 344.06364 65.113376 \nL 344.398775 52.768975 \nL 344.73391 49.154584 \nL 345.069046 48.330301 \nL 345.404181 55.521884 \nL 345.739316 48.588266 \nL 346.074451 53.921287 \nL 346.409586 50.9932 \nL 346.744721 53.866194 \nL 347.079856 54.076139 \nL 347.414992 50.123383 \nL 348.085262 54.033537 \nL 348.420397 53.178497 \nL 348.755532 53.278919 \nL 349.090667 50.653939 \nL 349.425802 53.486175 \nL 349.760938 58.908057 \nL 350.096073 54.771014 \nL 350.431208 60.894524 \nL 351.101478 51.025016 \nL 351.771748 62.303836 \nL 352.106883 62.383399 \nL 352.442019 69.005509 \nL 352.777154 57.745827 \nL 353.112289 59.659058 \nL 353.447424 56.087311 \nL 353.782559 58.816711 \nL 354.117694 57.071009 \nL 354.452829 59.06279 \nL 355.1231 73.048847 \nL 355.458235 71.336777 \nL 355.79337 72.357314 \nL 356.128505 64.753918 \nL 356.46364 64.523989 \nL 356.798775 67.003025 \nL 357.13391 77.799027 \nL 357.469046 81.863393 \nL 357.804181 88.583048 \nL 358.139316 86.869413 \nL 358.474451 88.599951 \nL 358.809586 83.003281 \nL 359.144721 75.3124 \nL 359.479856 76.891731 \nL 359.814992 71.497704 \nL 360.150127 78.57114 \nL 360.485262 81.819314 \nL 360.820397 82.262543 \nL 361.490667 88.644127 \nL 361.825802 83.148705 \nL 362.160938 82.742159 \nL 362.831208 78.818119 \nL 363.501478 81.302873 \nL 363.836613 78.125405 \nL 364.171748 76.904155 \nL 364.506883 78.867453 \nL 364.842019 84.553643 \nL 365.177154 83.263179 \nL 365.847424 82.660285 \nL 366.182559 82.868611 \nL 366.517694 85.006858 \nL 367.187965 82.490516 \nL 367.5231 82.475767 \nL 367.858235 83.72315 \nL 368.528505 90.771417 \nL 368.86364 88.67428 \nL 369.869046 95.342386 \nL 370.204181 96.779844 \nL 370.874451 86.053291 \nL 371.209586 86.30331 \nL 371.544721 87.666568 \nL 371.879856 90.79641 \nL 372.214992 90.338804 \nL 372.885262 96.277746 \nL 373.220397 96.163618 \nL 373.555532 98.975316 \nL 373.890667 98.262691 \nL 374.225802 97.286443 \nL 374.896073 103.101 \nL 375.231208 105.178453 \nL 375.566343 100.13408 \nL 375.901478 102.183757 \nL 376.236613 98.81369 \nL 376.571748 103.024039 \nL 376.906883 104.187966 \nL 377.242019 97.860224 \nL 377.577154 101.499759 \nL 377.912289 100.802033 \nL 378.247424 102.163428 \nL 378.582559 100.191599 \nL 378.917694 97.111436 \nL 379.252829 101.558568 \nL 379.587965 104.295647 \nL 379.9231 108.589623 \nL 380.258235 110.972398 \nL 380.59337 109.779077 \nL 380.928505 106.150317 \nL 381.598775 102.480869 \nL 381.93391 104.449911 \nL 382.269046 113.415837 \nL 382.604181 115.529421 \nL 382.939316 116.798604 \nL 384.279856 106.707867 \nL 384.614992 106.4254 \nL 385.285262 116.902508 \nL 385.620397 114.718331 \nL 385.955532 111.615064 \nL 386.290667 111.579507 \nL 386.960938 118.5894 \nL 386.960938 118.5894 \n\" clip-path=\"url(#p37412f0ba3)\" 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=\"p37412f0ba3\">\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-25T12:54:46.309387018Z",
"start_time": "2026-03-25T12:54:46.060491885Z"
}
},
"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-25T20:54:46.220729</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(#pd9c266d709)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_2\">\n <defs>\n <path id=\"mbf15bb4269\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#mbf15bb4269\" 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(#pd9c266d709)\" 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=\"#mbf15bb4269\" 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(#pd9c266d709)\" 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=\"#mbf15bb4269\" 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(#pd9c266d709)\" 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=\"#mbf15bb4269\" 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(#pd9c266d709)\" 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=\"#mbf15bb4269\" 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 165.221306 \nL 386.960938 165.221306 \n\" clip-path=\"url(#pd9c266d709)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_12\">\n <defs>\n <path id=\"m9a6dc6b5d9\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m9a6dc6b5d9\" x=\"52.160938\" y=\"165.221306\" 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 169.020525) 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 139.620338 \nL 386.960938 139.620338 \n\" clip-path=\"url(#pd9c266d709)\" 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=\"#m9a6dc6b5d9\" x=\"52.160938\" y=\"139.620338\" 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 143.419557) 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 114.01937 \nL 386.960938 114.01937 \n\" clip-path=\"url(#pd9c266d709)\" 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=\"#m9a6dc6b5d9\" x=\"52.160938\" y=\"114.01937\" 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 117.818588) 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 88.418401 \nL 386.960938 88.418401 \n\" clip-path=\"url(#pd9c266d709)\" 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=\"#m9a6dc6b5d9\" x=\"52.160938\" y=\"88.418401\" 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 92.21762) 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 62.817433 \nL 386.960938 62.817433 \n\" clip-path=\"url(#pd9c266d709)\" 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=\"#m9a6dc6b5d9\" x=\"52.160938\" y=\"62.817433\" 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 66.616652) 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 37.216465 \nL 386.960938 37.216465 \n\" clip-path=\"url(#pd9c266d709)\" 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=\"#m9a6dc6b5d9\" x=\"52.160938\" y=\"37.216465\" 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 41.015683) 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.615496 \nL 386.960938 11.615496 \n\" clip-path=\"url(#pd9c266d709)\" 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=\"#m9a6dc6b5d9\" x=\"52.160938\" y=\"11.615496\" 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.414715) 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 94.855956 \nL 52.496073 62.934022 \nL 52.831208 81.889164 \nL 53.166343 87.837881 \nL 53.501478 79.411242 \nL 53.836613 81.950186 \nL 54.506883 84.987396 \nL 54.842019 71.144626 \nL 55.177154 104.437754 \nL 55.512289 69.186882 \nL 55.847424 87.220749 \nL 56.182559 92.725262 \nL 56.517694 63.070146 \nL 56.852829 70.799375 \nL 57.187965 91.412548 \nL 57.5231 99.471144 \nL 57.858235 86.590434 \nL 58.19337 85.003761 \nL 58.528505 89.064918 \nL 58.86364 52.753432 \nL 59.198775 91.225162 \nL 59.53391 83.992469 \nL 59.869046 59.390002 \nL 60.204181 77.974178 \nL 60.539316 77.366926 \nL 60.874451 81.363732 \nL 61.544721 65.165201 \nL 62.214992 72.803751 \nL 62.550127 71.414299 \nL 62.885262 68.868394 \nL 63.220397 70.990559 \nL 63.555532 68.946324 \nL 63.890667 70.361047 \nL 64.560938 51.299361 \nL 64.896073 71.008174 \nL 65.231208 72.360573 \nL 65.566343 52.86633 \nL 65.901478 68.013403 \nL 66.236613 38.844215 \nL 66.571748 58.509928 \nL 66.906883 60.891335 \nL 67.242019 77.00334 \nL 67.577154 56.336963 \nL 67.912289 81.162249 \nL 68.247424 77.502081 \nL 68.582559 53.675113 \nL 68.917694 72.030693 \nL 69.587965 48.75033 \nL 69.9231 47.622315 \nL 70.258235 51.215609 \nL 70.59337 52.486897 \nL 70.928505 46.913462 \nL 71.26364 56.564935 \nL 71.598775 77.701469 \nL 71.93391 69.562473 \nL 72.269046 57.709143 \nL 72.604181 60.022143 \nL 72.939316 54.183299 \nL 73.274451 62.916906 \nL 73.609586 57.294556 \nL 73.944721 69.339234 \nL 74.279856 39.936758 \nL 74.614992 56.360203 \nL 74.950127 66.845198 \nL 75.285262 57.987099 \nL 75.620397 24.482267 \nL 75.955532 62.679061 \nL 76.290667 55.013354 \nL 76.625802 56.578708 \nL 76.960938 64.24444 \nL 77.296073 49.052062 \nL 77.631208 44.233902 \nL 78.301478 70.940285 \nL 78.636613 33.009396 \nL 79.306883 47.353237 \nL 79.642019 54.58741 \nL 79.977154 64.492321 \nL 80.312289 51.781899 \nL 80.647424 55.908682 \nL 80.982559 64.474647 \nL 81.317694 40.787742 \nL 81.652829 52.693747 \nL 81.987965 47.527005 \nL 82.3231 59.43463 \nL 82.658235 40.283753 \nL 82.99337 46.890344 \nL 83.328505 32.460132 \nL 83.66364 58.276133 \nL 83.998775 44.004896 \nL 84.33391 47.04144 \nL 84.669046 43.966628 \nL 85.004181 52.328175 \nL 85.339316 35.665106 \nL 85.674451 61.297505 \nL 86.009586 42.38986 \nL 86.344721 57.025438 \nL 86.679856 28.54627 \nL 87.014992 36.466973 \nL 87.350127 31.18166 \nL 87.685262 44.638874 \nL 88.020397 53.594507 \nL 88.355532 42.061118 \nL 88.690667 39.151364 \nL 89.360938 52.736635 \nL 90.031208 37.256554 \nL 90.366343 38.571051 \nL 90.701478 41.754896 \nL 91.036613 62.358498 \nL 91.371748 38.760529 \nL 91.706883 29.383936 \nL 92.042019 26.073013 \nL 92.377154 32.001314 \nL 92.712289 33.731317 \nL 93.047424 53.765925 \nL 93.382559 35.644188 \nL 93.717694 37.868708 \nL 94.052829 27.036874 \nL 94.387965 27.247624 \nL 94.7231 43.852891 \nL 95.058235 45.522971 \nL 95.39337 49.603664 \nL 95.728505 23.683732 \nL 96.06364 26.491553 \nL 96.398775 49.729935 \nL 96.73391 37.091515 \nL 97.069046 44.134539 \nL 97.404181 27.219266 \nL 97.739316 46.912794 \nL 98.074451 24.354687 \nL 98.409586 27.452851 \nL 98.744721 45.135755 \nL 99.079856 33.081964 \nL 99.414992 48.941658 \nL 99.750127 41.177253 \nL 100.085262 46.944985 \nL 100.420397 33.934205 \nL 100.755532 38.840241 \nL 101.090667 49.12123 \nL 101.425802 23.750428 \nL 101.760938 41.552108 \nL 102.096073 36.345228 \nL 102.431208 19.687896 \nL 102.766343 42.393781 \nL 103.101478 25.734188 \nL 103.436613 20.038636 \nL 104.106883 57.414302 \nL 104.442019 67.622424 \nL 105.112289 27.468208 \nL 105.447424 49.68518 \nL 105.782559 35.36294 \nL 106.117694 46.911942 \nL 106.452829 43.541469 \nL 106.787965 27.871592 \nL 107.1231 35.678321 \nL 107.458235 27.576482 \nL 107.79337 50.364521 \nL 108.128505 47.65085 \nL 108.46364 47.968007 \nL 108.798775 39.988856 \nL 109.13391 36.79928 \nL 109.469046 29.544318 \nL 109.804181 34.372326 \nL 110.139316 14.76 \nL 110.474451 37.788999 \nL 110.809586 48.021665 \nL 111.144721 40.011065 \nL 111.479856 39.43012 \nL 111.814992 38.076504 \nL 112.150127 48.301692 \nL 112.485262 47.026192 \nL 112.820397 51.133605 \nL 113.155532 29.794693 \nL 113.490667 23.352537 \nL 113.825802 30.485216 \nL 114.160938 53.900192 \nL 114.496073 57.691549 \nL 114.831208 55.222694 \nL 115.166343 42.378879 \nL 115.501478 37.135767 \nL 115.836613 35.208228 \nL 116.171748 59.593947 \nL 116.506883 20.165368 \nL 116.842019 40.68245 \nL 117.177154 54.013914 \nL 117.512289 37.452191 \nL 117.847424 32.83688 \nL 118.182559 36.676594 \nL 118.517694 54.737086 \nL 118.852829 32.227952 \nL 119.187965 41.503468 \nL 119.858235 32.784223 \nL 120.19337 44.070795 \nL 120.528505 60.176766 \nL 120.86364 35.17666 \nL 121.198775 34.779239 \nL 121.53391 44.767132 \nL 121.869046 43.752845 \nL 122.204181 32.693039 \nL 122.539316 59.594325 \nL 122.874451 68.125921 \nL 123.209586 51.753718 \nL 123.544721 26.442986 \nL 123.879856 37.086522 \nL 124.214992 33.035923 \nL 124.550127 48.066463 \nL 124.885262 47.560194 \nL 125.555532 59.5333 \nL 125.890667 48.280811 \nL 126.225802 51.637558 \nL 126.560938 53.716881 \nL 126.896073 28.890021 \nL 127.231208 52.621631 \nL 127.566343 51.06401 \nL 127.901478 41.574216 \nL 128.236613 63.74882 \nL 128.571748 70.019436 \nL 128.906883 47.165663 \nL 129.242019 38.330426 \nL 129.577154 52.673714 \nL 129.912289 45.618189 \nL 130.247424 59.662031 \nL 130.582559 43.613997 \nL 130.917694 65.253368 \nL 131.252829 39.877021 \nL 131.587965 67.647106 \nL 131.9231 55.584426 \nL 132.258235 53.968969 \nL 132.59337 47.251393 \nL 132.928505 31.315582 \nL 133.26364 53.847941 \nL 133.598775 52.421004 \nL 133.93391 58.404217 \nL 134.269046 50.66857 \nL 134.604181 54.215942 \nL 134.939316 53.911484 \nL 135.274451 50.672589 \nL 135.609586 33.086206 \nL 135.944721 44.942636 \nL 136.279856 64.7198 \nL 136.614992 59.257069 \nL 136.950127 64.48199 \nL 137.285262 45.94596 \nL 137.620397 48.065935 \nL 137.955532 54.514006 \nL 138.290667 69.467642 \nL 138.625802 68.00509 \nL 138.960938 57.278124 \nL 139.296073 63.205024 \nL 139.631208 57.002678 \nL 139.966343 64.073042 \nL 140.301478 51.727414 \nL 140.971748 76.026913 \nL 141.306883 75.604678 \nL 141.642019 57.896086 \nL 141.977154 61.056154 \nL 142.312289 57.427501 \nL 142.647424 60.929337 \nL 142.982559 76.68928 \nL 143.317694 70.480888 \nL 143.652829 73.91271 \nL 144.3231 84.212168 \nL 144.658235 79.363029 \nL 144.99337 62.155988 \nL 145.328505 74.850153 \nL 145.66364 80.639234 \nL 145.998775 74.799821 \nL 146.33391 80.713273 \nL 146.669046 76.093719 \nL 147.004181 79.37483 \nL 147.339316 77.077974 \nL 147.674451 69.172172 \nL 148.009586 85.12478 \nL 148.344721 73.524707 \nL 148.679856 87.293801 \nL 149.014992 58.323775 \nL 149.350127 80.435165 \nL 149.685262 76.443592 \nL 150.020397 70.327553 \nL 150.355532 95.828901 \nL 150.690667 59.454476 \nL 151.025802 85.060321 \nL 151.360938 98.210859 \nL 151.696073 78.304947 \nL 152.031208 89.93512 \nL 152.366343 70.336975 \nL 152.701478 88.254617 \nL 153.036613 80.190574 \nL 153.371748 76.901109 \nL 153.706883 84.408711 \nL 154.042019 79.905811 \nL 154.377154 92.415222 \nL 154.712289 91.524168 \nL 155.047424 72.816703 \nL 155.382559 75.819626 \nL 155.717694 90.36222 \nL 156.052829 85.957392 \nL 156.387965 88.62097 \nL 156.7231 87.85633 \nL 157.058235 89.550477 \nL 157.39337 83.291643 \nL 157.728505 84.556303 \nL 158.06364 77.396682 \nL 158.398775 96.528962 \nL 158.73391 88.248509 \nL 159.069046 99.024933 \nL 159.404181 80.113069 \nL 159.739316 94.123758 \nL 160.074451 93.30402 \nL 160.409586 101.641262 \nL 160.744721 91.364219 \nL 161.079856 92.938549 \nL 161.414992 70.896611 \nL 161.750127 97.673524 \nL 162.085262 102.589448 \nL 162.420397 98.473202 \nL 162.755532 80.604061 \nL 163.090667 95.392431 \nL 163.425802 84.965421 \nL 163.760938 114.49404 \nL 164.096073 90.178554 \nL 164.431208 107.266925 \nL 164.766343 99.772084 \nL 165.101478 97.293314 \nL 165.436613 91.434164 \nL 165.771748 94.530578 \nL 166.106883 93.433322 \nL 166.442019 99.281294 \nL 166.777154 116.206928 \nL 167.112289 114.164968 \nL 167.447424 88.118865 \nL 167.782559 98.881579 \nL 168.452829 106.068558 \nL 168.787965 91.168566 \nL 169.458235 124.92718 \nL 169.79337 114.87199 \nL 170.128505 111.33971 \nL 170.46364 110.854278 \nL 170.798775 88.027342 \nL 171.13391 97.65556 \nL 171.469046 96.05065 \nL 171.804181 82.222363 \nL 172.139316 110.327685 \nL 172.474451 120.183833 \nL 172.809586 125.843511 \nL 173.144721 97.814499 \nL 173.479856 136.311296 \nL 173.814992 122.492676 \nL 174.150127 125.619045 \nL 174.485262 117.016395 \nL 174.820397 130.479294 \nL 175.155532 108.888304 \nL 175.490667 122.552477 \nL 175.825802 109.030289 \nL 176.160938 106.882369 \nL 176.496073 100.123832 \nL 177.166343 130.638681 \nL 177.501478 101.562308 \nL 177.836613 129.491699 \nL 178.171748 108.24749 \nL 178.506883 123.139932 \nL 178.842019 129.4863 \nL 179.512289 123.6837 \nL 179.847424 117.719888 \nL 180.182559 122.522218 \nL 180.517694 110.559275 \nL 180.852829 121.606204 \nL 181.187965 114.685298 \nL 181.5231 123.479301 \nL 181.858235 116.372834 \nL 182.19337 131.904165 \nL 182.528505 97.681972 \nL 182.86364 114.866271 \nL 183.198775 112.337278 \nL 183.53391 132.087979 \nL 183.869046 139.087359 \nL 184.204181 134.010027 \nL 184.539316 111.450121 \nL 184.874451 143.763866 \nL 185.544721 124.899752 \nL 185.879856 112.109346 \nL 186.214992 117.311615 \nL 186.885262 134.448811 \nL 187.220397 130.205913 \nL 187.555532 116.579415 \nL 187.890667 136.747137 \nL 188.560938 124.935221 \nL 188.896073 130.658118 \nL 189.231208 138.454754 \nL 189.566343 134.226378 \nL 189.901478 113.863529 \nL 190.236613 113.735242 \nL 190.571748 111.990046 \nL 190.906883 124.406362 \nL 191.242019 126.913803 \nL 191.577154 127.509248 \nL 191.912289 129.685297 \nL 192.247424 130.915373 \nL 192.582559 145.732575 \nL 192.917694 152.057759 \nL 193.587965 106.992715 \nL 193.9231 145.249164 \nL 194.258235 131.104296 \nL 194.59337 143.548959 \nL 194.928505 125.247111 \nL 195.26364 120.435536 \nL 195.598775 138.098628 \nL 195.93391 118.69653 \nL 196.269046 143.180843 \nL 196.604181 137.624211 \nL 196.939316 128.337578 \nL 197.274451 133.110714 \nL 197.609586 147.380806 \nL 197.944721 134.367222 \nL 198.279856 146.157902 \nL 198.614992 130.900544 \nL 198.950127 120.860675 \nL 199.285262 165.96 \nL 199.620397 144.640676 \nL 199.955532 143.775781 \nL 200.290667 114.716512 \nL 200.960938 135.208678 \nL 201.296073 134.608955 \nL 201.631208 143.055282 \nL 201.966343 147.077718 \nL 202.301478 136.892488 \nL 202.636613 119.356461 \nL 202.971748 134.102878 \nL 203.306883 137.057494 \nL 203.642019 121.759878 \nL 203.977154 143.351607 \nL 204.312289 147.757517 \nL 204.647424 148.199056 \nL 205.317694 126.877409 \nL 205.652829 131.832675 \nL 205.987965 131.480946 \nL 206.3231 149.523801 \nL 206.658235 133.830196 \nL 206.99337 136.241188 \nL 207.328505 140.911604 \nL 207.66364 130.379882 \nL 207.998775 155.186765 \nL 208.33391 121.738109 \nL 208.669046 140.044719 \nL 209.004181 146.186681 \nL 209.339316 137.246386 \nL 209.674451 143.529958 \nL 210.009586 153.702163 \nL 210.344721 139.993765 \nL 210.679856 140.947225 \nL 211.014992 130.115538 \nL 211.350127 150.280763 \nL 211.685262 137.358177 \nL 212.020397 139.08402 \nL 212.355532 141.754696 \nL 212.690667 140.015098 \nL 213.025802 126.613242 \nL 213.360938 125.278475 \nL 213.696073 145.346024 \nL 214.031208 126.366355 \nL 214.366343 150.660471 \nL 214.701478 134.333465 \nL 215.036613 130.372051 \nL 215.371748 144.94817 \nL 215.706883 135.963577 \nL 216.042019 135.292269 \nL 216.377154 126.731765 \nL 216.712289 138.976869 \nL 217.047424 142.059023 \nL 217.717694 129.121705 \nL 218.052829 133.591744 \nL 218.387965 132.274287 \nL 218.7231 139.708891 \nL 219.058235 138.266963 \nL 219.39337 133.181957 \nL 219.728505 137.10839 \nL 220.06364 157.022925 \nL 220.398775 133.789936 \nL 220.73391 142.474212 \nL 221.404181 121.026944 \nL 221.739316 143.784405 \nL 222.074451 126.872273 \nL 222.409586 132.577002 \nL 222.744721 145.576398 \nL 223.414992 125.913893 \nL 223.750127 134.927375 \nL 224.085262 131.182287 \nL 224.420397 123.498079 \nL 224.755532 135.389926 \nL 225.090667 136.609311 \nL 225.425802 155.185783 \nL 225.760938 120.455636 \nL 226.096073 128.425865 \nL 226.431208 127.689424 \nL 226.766343 142.793725 \nL 227.101478 135.36097 \nL 227.436613 140.802322 \nL 227.771748 116.742541 \nL 228.106883 129.148595 \nL 228.442019 136.000221 \nL 228.777154 129.299629 \nL 229.112289 136.931528 \nL 229.447424 129.759839 \nL 229.782559 139.854838 \nL 230.117694 128.6957 \nL 230.452829 129.945048 \nL 230.787965 130.246143 \nL 231.1231 129.016626 \nL 231.458235 137.455135 \nL 231.79337 126.770746 \nL 232.128505 124.020447 \nL 232.46364 127.330115 \nL 232.798775 120.922737 \nL 233.13391 117.868114 \nL 233.469046 122.209325 \nL 233.804181 146.670507 \nL 234.139316 141.379639 \nL 234.474451 121.79077 \nL 234.809586 126.850858 \nL 235.144721 135.664555 \nL 235.479856 128.429863 \nL 235.814992 136.040686 \nL 236.150127 111.270146 \nL 236.485262 130.163883 \nL 237.155532 121.91824 \nL 237.490667 139.938099 \nL 237.825802 111.263878 \nL 238.160938 116.009823 \nL 238.496073 107.075761 \nL 238.831208 108.15364 \nL 239.166343 114.914209 \nL 239.501478 106.841374 \nL 239.836613 128.075776 \nL 240.171748 130.805457 \nL 240.842019 116.676382 \nL 241.177154 123.485191 \nL 241.512289 122.527406 \nL 241.847424 130.821525 \nL 242.182559 118.767196 \nL 242.517694 131.153721 \nL 242.852829 114.781673 \nL 243.187965 88.587014 \nL 243.5231 125.717175 \nL 243.858235 132.753263 \nL 244.19337 110.540017 \nL 244.528505 116.235426 \nL 244.86364 116.842926 \nL 245.198775 113.692311 \nL 245.53391 108.848295 \nL 245.869046 102.225608 \nL 246.204181 116.003667 \nL 246.874451 117.413108 \nL 247.544721 102.073035 \nL 247.879856 106.062459 \nL 248.214992 104.377725 \nL 248.550127 104.340183 \nL 248.885262 132.25809 \nL 249.220397 102.378539 \nL 249.555532 114.092901 \nL 249.890667 112.579703 \nL 250.225802 115.747713 \nL 250.560938 127.667478 \nL 250.896073 97.911852 \nL 251.231208 118.228904 \nL 251.566343 112.657892 \nL 251.901478 101.652224 \nL 252.236613 102.522504 \nL 252.571748 109.140459 \nL 252.906883 93.034991 \nL 253.242019 93.457728 \nL 253.577154 106.003594 \nL 253.912289 92.286335 \nL 254.247424 115.087595 \nL 254.582559 100.878927 \nL 254.917694 106.522586 \nL 255.252829 91.5781 \nL 255.587965 81.885025 \nL 255.9231 89.186667 \nL 256.258235 115.023726 \nL 256.59337 102.194347 \nL 256.928505 130.988618 \nL 257.26364 80.897502 \nL 257.598775 90.662863 \nL 257.93391 113.075088 \nL 258.269046 79.309564 \nL 258.604181 97.169844 \nL 258.939316 99.30483 \nL 259.274451 103.136631 \nL 259.609586 110.584259 \nL 259.944721 93.369708 \nL 260.279856 116.785996 \nL 260.950127 88.526979 \nL 261.285262 97.998329 \nL 261.620397 87.084359 \nL 261.955532 91.352545 \nL 262.290667 72.053547 \nL 262.625802 80.295212 \nL 262.960938 80.124885 \nL 263.296073 104.097524 \nL 263.631208 79.203083 \nL 263.966343 89.524809 \nL 264.301478 92.826014 \nL 264.636613 68.574925 \nL 264.971748 75.238258 \nL 265.306883 75.246014 \nL 265.642019 69.504603 \nL 265.977154 81.702972 \nL 266.312289 57.645222 \nL 266.647424 87.017171 \nL 266.982559 87.256953 \nL 267.317694 95.561485 \nL 267.652829 87.322618 \nL 267.987965 70.058936 \nL 268.3231 86.725006 \nL 268.99337 64.359905 \nL 269.328505 70.331059 \nL 269.66364 93.263825 \nL 269.998775 80.402015 \nL 270.33391 74.243675 \nL 270.669046 56.849574 \nL 271.004181 70.387449 \nL 271.339316 76.349885 \nL 271.674451 74.733718 \nL 272.009586 75.586106 \nL 272.679856 56.863912 \nL 273.014992 81.258507 \nL 273.350127 71.581372 \nL 273.685262 66.856725 \nL 274.020397 71.455629 \nL 274.355532 83.15055 \nL 274.690667 66.481517 \nL 275.025802 81.328939 \nL 275.360937 82.621423 \nL 275.696073 83.35422 \nL 276.031208 70.153009 \nL 276.366343 76.492476 \nL 277.036613 52.198068 \nL 277.371748 72.120261 \nL 277.706883 73.395577 \nL 278.042019 65.209674 \nL 278.377154 74.133307 \nL 278.712289 63.806492 \nL 279.047424 46.626165 \nL 279.382559 52.617615 \nL 279.717694 78.44647 \nL 280.387965 45.890535 \nL 280.7231 73.111227 \nL 281.058235 74.502822 \nL 281.39337 51.77802 \nL 281.728505 47.090727 \nL 282.06364 54.083207 \nL 282.398775 58.515198 \nL 282.73391 47.409874 \nL 283.069046 60.936921 \nL 283.404181 44.682958 \nL 283.739316 65.11568 \nL 284.074451 54.51964 \nL 284.409586 57.676198 \nL 284.744721 54.68283 \nL 285.079856 64.217974 \nL 285.414992 57.74355 \nL 285.750127 47.027322 \nL 286.085262 58.781288 \nL 286.420397 51.936595 \nL 286.755532 54.873071 \nL 287.090667 41.361067 \nL 287.425802 71.210296 \nL 287.760938 45.74313 \nL 288.096073 75.10922 \nL 288.431208 53.44705 \nL 288.766343 53.310945 \nL 289.101478 65.35216 \nL 289.436613 51.023899 \nL 289.771748 59.939364 \nL 290.106883 72.367002 \nL 290.442019 50.367228 \nL 290.777154 46.496351 \nL 291.447424 56.528328 \nL 291.782559 46.05797 \nL 292.117694 55.209949 \nL 292.452829 38.223973 \nL 292.787965 55.220295 \nL 293.1231 49.007514 \nL 293.458235 29.37818 \nL 293.79337 37.90136 \nL 294.128505 17.088884 \nL 294.46364 38.512385 \nL 294.798775 24.618326 \nL 295.13391 34.15778 \nL 295.469046 52.506963 \nL 295.804181 42.272454 \nL 296.139316 39.412815 \nL 296.474451 52.367996 \nL 296.809586 32.382615 \nL 297.144721 28.193199 \nL 297.479856 30.274594 \nL 298.150127 36.341871 \nL 298.485262 44.661024 \nL 298.820397 41.292406 \nL 299.155532 39.65135 \nL 299.490667 18.190165 \nL 299.825802 49.349532 \nL 300.496073 36.292583 \nL 300.831208 35.343695 \nL 301.166343 35.383583 \nL 301.501478 44.336753 \nL 301.836613 44.211212 \nL 302.506883 50.132645 \nL 302.842019 38.200508 \nL 303.177154 35.809429 \nL 303.512289 26.614074 \nL 303.847424 58.723879 \nL 304.182559 43.188575 \nL 304.517694 43.442439 \nL 304.852829 29.805235 \nL 305.187965 32.654726 \nL 305.5231 58.663833 \nL 306.19337 22.709495 \nL 306.528505 37.54151 \nL 306.86364 30.273368 \nL 307.198775 45.889196 \nL 307.869046 36.225131 \nL 308.204181 15.098727 \nL 308.539316 23.959835 \nL 308.874451 41.43918 \nL 309.209586 43.111503 \nL 309.544721 28.373198 \nL 310.214992 49.509654 \nL 310.550127 46.947707 \nL 310.885262 33.695128 \nL 311.220397 52.508385 \nL 311.555532 35.885109 \nL 311.890667 52.240074 \nL 312.560938 34.256813 \nL 312.896073 44.187602 \nL 313.231208 32.258294 \nL 313.566343 39.502742 \nL 313.901478 35.118528 \nL 314.236613 48.435059 \nL 314.571748 42.703205 \nL 314.906883 39.038268 \nL 315.242019 42.440728 \nL 315.577154 38.528895 \nL 315.912289 54.335172 \nL 316.247424 34.406855 \nL 316.582559 38.670725 \nL 316.917694 35.825103 \nL 317.252829 39.723008 \nL 317.587965 32.136323 \nL 317.9231 45.688602 \nL 318.258235 35.656671 \nL 318.59337 35.838672 \nL 318.928505 39.761452 \nL 319.26364 34.034032 \nL 319.598775 37.456607 \nL 319.93391 21.757359 \nL 320.269046 34.929061 \nL 320.604181 38.451799 \nL 320.939316 37.456787 \nL 321.274451 33.648501 \nL 321.609586 39.167719 \nL 321.944721 33.728637 \nL 322.279856 32.895818 \nL 322.614992 53.527064 \nL 322.950127 48.611702 \nL 323.285262 27.860154 \nL 323.620397 29.029601 \nL 323.955532 50.342398 \nL 324.290667 44.539502 \nL 324.625802 50.567583 \nL 324.960938 25.902145 \nL 325.296073 45.666937 \nL 325.631208 49.440816 \nL 325.966343 48.044371 \nL 326.301478 32.142695 \nL 326.636613 53.258642 \nL 326.971748 60.454758 \nL 327.306883 31.02754 \nL 327.642019 30.741922 \nL 328.312289 45.395119 \nL 328.647424 37.76943 \nL 329.317694 58.877358 \nL 329.652829 47.476716 \nL 329.987965 31.979175 \nL 330.3231 27.550511 \nL 330.658235 45.974267 \nL 330.99337 37.629899 \nL 331.328505 51.183811 \nL 331.66364 56.935512 \nL 331.998775 43.649359 \nL 332.33391 50.884438 \nL 332.669046 40.343585 \nL 333.004181 42.910195 \nL 333.339316 63.775421 \nL 333.674451 29.023394 \nL 334.009586 53.238012 \nL 334.344721 48.583328 \nL 334.679856 38.757014 \nL 335.014992 72.637223 \nL 335.350127 45.453608 \nL 335.685262 57.809474 \nL 336.020397 59.249787 \nL 336.355532 41.176624 \nL 336.690667 65.369617 \nL 337.025802 61.314813 \nL 337.360937 50.99245 \nL 337.696073 49.612618 \nL 338.031208 57.722633 \nL 338.701478 60.306165 \nL 339.371748 38.646377 \nL 339.706883 40.19209 \nL 340.042019 60.803508 \nL 340.377154 37.888035 \nL 340.712289 37.771069 \nL 341.047424 59.159662 \nL 341.382559 49.402466 \nL 341.717694 53.60153 \nL 342.052829 45.346359 \nL 342.387965 57.341081 \nL 342.7231 79.334409 \nL 343.058235 56.68575 \nL 343.728505 47.535013 \nL 344.06364 61.745685 \nL 344.398775 30.512756 \nL 344.73391 54.029961 \nL 345.069046 51.444148 \nL 345.404181 61.234228 \nL 345.739316 56.963208 \nL 346.074451 41.253562 \nL 346.409586 54.703707 \nL 346.744721 60.164604 \nL 347.079856 49.116347 \nL 347.414992 52.564396 \nL 347.750127 59.179188 \nL 348.085262 60.303306 \nL 348.420397 51.144323 \nL 348.755532 26.012989 \nL 349.090667 72.00257 \nL 349.760938 50.253731 \nL 350.096073 58.373906 \nL 350.431208 56.965301 \nL 350.766343 44.830919 \nL 351.101478 78.814519 \nL 351.436613 59.377691 \nL 351.771748 66.444577 \nL 352.106883 60.579116 \nL 352.442019 63.28095 \nL 352.777154 51.867873 \nL 353.112289 58.407757 \nL 353.447424 69.343575 \nL 353.782559 61.826456 \nL 354.117694 63.620068 \nL 354.452829 86.989073 \nL 354.787965 72.277376 \nL 355.1231 66.234853 \nL 355.458235 58.130421 \nL 355.79337 74.546133 \nL 356.128505 63.531461 \nL 356.798775 92.737641 \nL 357.13391 80.622478 \nL 357.469046 99.128627 \nL 357.804181 73.238382 \nL 358.139316 94.974196 \nL 358.474451 65.482555 \nL 358.809586 65.930223 \nL 359.144721 78.334677 \nL 359.479856 78.232994 \nL 359.814992 93.378042 \nL 360.150127 73.93272 \nL 360.485262 79.501661 \nL 360.820397 98.094101 \nL 361.155532 91.040069 \nL 361.490667 63.961757 \nL 361.825802 86.072413 \nL 362.160938 84.709746 \nL 362.496073 78.197508 \nL 362.831208 74.22702 \nL 363.166343 91.746422 \nL 363.501478 66.142055 \nL 363.836613 74.632267 \nL 364.171748 89.944277 \nL 364.506883 94.41425 \nL 364.842019 69.4004 \nL 365.177154 83.340406 \nL 365.512289 87.959029 \nL 366.182559 82.146141 \nL 366.517694 81.30587 \nL 366.852829 82.447847 \nL 367.5231 86.189639 \nL 367.858235 94.865671 \nL 368.19337 93.768938 \nL 368.528505 79.311177 \nL 368.86364 98.920524 \nL 369.198775 100.999198 \nL 369.869046 93.493721 \nL 370.204181 79.963327 \nL 370.539316 79.652374 \nL 370.874451 95.789206 \nL 371.209586 90.972247 \nL 371.544721 93.24621 \nL 371.879856 82.999311 \nL 372.214992 104.923768 \nL 372.885262 95.112233 \nL 373.220397 100.868508 \nL 373.890667 95.906279 \nL 374.225802 107.865904 \nL 374.560938 108.164603 \nL 374.896073 108.236894 \nL 375.231208 82.624859 \nL 375.566343 117.754493 \nL 375.901478 80.951443 \nL 376.236613 115.297604 \nL 376.571748 94.118462 \nL 376.906883 93.971646 \nL 377.242019 108.766166 \nL 377.577154 102.743299 \nL 377.912289 103.752676 \nL 378.247424 91.066895 \nL 378.582559 96.616168 \nL 378.917694 115.10855 \nL 379.252829 108.371767 \nL 379.587965 114.749195 \nL 379.9231 110.272379 \nL 380.258235 110.273505 \nL 380.59337 96.574961 \nL 380.928505 107.463909 \nL 381.26364 98.810355 \nL 381.93391 129.426993 \nL 382.269046 115.145142 \nL 382.604181 115.510182 \nL 382.939316 107.514448 \nL 383.274451 111.824595 \nL 383.944721 104.05023 \nL 384.279856 107.587501 \nL 384.614992 126.508886 \nL 384.950127 125.989857 \nL 385.285262 103.043512 \nL 385.620397 106.030121 \nL 386.290667 129.075084 \nL 386.625802 119.713744 \nL 386.960938 98.364787 \nL 386.960938 98.364787 \n\" clip-path=\"url(#pd9c266d709)\" 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 80.382404 \nL 53.836613 79.177102 \nL 54.171748 82.731891 \nL 54.842019 82.636899 \nL 55.177154 80.537856 \nL 55.512289 85.219563 \nL 55.847424 83.473584 \nL 56.182559 85.729603 \nL 56.517694 87.009198 \nL 56.852829 79.126081 \nL 57.187965 77.623643 \nL 57.5231 77.855226 \nL 57.858235 85.493072 \nL 58.19337 90.292502 \nL 58.86364 89.265823 \nL 59.198775 78.026439 \nL 59.53391 79.599663 \nL 59.869046 78.421194 \nL 60.204181 74.750624 \nL 60.539316 75.859143 \nL 60.874451 74.056327 \nL 61.209586 73.974482 \nL 61.544721 77.621159 \nL 62.214992 71.346729 \nL 62.885262 66.811915 \nL 63.220397 68.087331 \nL 63.555532 68.750391 \nL 63.890667 67.839742 \nL 64.560938 65.54199 \nL 64.896073 61.254898 \nL 65.231208 61.482812 \nL 65.566343 63.088116 \nL 65.901478 59.842546 \nL 66.236613 63.705595 \nL 66.571748 63.475914 \nL 66.906883 53.016537 \nL 67.242019 60.745754 \nL 67.577154 58.852558 \nL 67.912289 61.182581 \nL 68.582559 72.259378 \nL 68.917694 65.865626 \nL 69.252829 69.878622 \nL 69.587965 69.040346 \nL 69.9231 54.879798 \nL 70.258235 59.398813 \nL 70.59337 52.208465 \nL 70.928505 49.688454 \nL 71.26364 49.171522 \nL 71.598775 50.773548 \nL 72.269046 62.0706 \nL 72.604181 63.005807 \nL 72.939316 66.796064 \nL 73.609586 55.406285 \nL 73.944721 56.902726 \nL 74.279856 56.850954 \nL 74.614992 57.568931 \nL 74.950127 54.957248 \nL 75.285262 61.500821 \nL 75.620397 53.895101 \nL 75.955532 51.095231 \nL 76.290667 56.395642 \nL 76.625802 57.967314 \nL 76.960938 51.12751 \nL 77.296073 56.842088 \nL 77.631208 53.764265 \nL 77.966343 52.602117 \nL 78.301478 54.358611 \nL 78.636613 53.977453 \nL 78.971748 50.179385 \nL 79.642019 56.755122 \nL 79.977154 45.505221 \nL 80.312289 50.909954 \nL 80.982559 53.723431 \nL 81.317694 57.839571 \nL 81.652829 51.590406 \nL 81.987965 52.925515 \nL 82.3231 55.230919 \nL 82.658235 49.399552 \nL 82.99337 50.247805 \nL 83.328505 48.094162 \nL 83.66364 48.762437 \nL 83.998775 45.713902 \nL 84.33391 49.014814 \nL 84.669046 45.703977 \nL 85.004181 49.283306 \nL 85.674451 46.090314 \nL 86.009586 48.230086 \nL 86.344721 52.044455 \nL 86.679856 48.207975 \nL 87.014992 52.130722 \nL 87.350127 42.891304 \nL 87.685262 44.400632 \nL 88.020397 39.441662 \nL 88.355532 44.218759 \nL 88.690667 44.46575 \nL 89.360938 46.699184 \nL 89.696073 46.4767 \nL 90.031208 46.459524 \nL 90.366343 45.961629 \nL 90.701478 45.256466 \nL 91.036613 43.355308 \nL 91.371748 46.387576 \nL 91.706883 46.460686 \nL 92.042019 43.987305 \nL 92.377154 46.037868 \nL 92.712289 37.361078 \nL 93.047424 36.455675 \nL 93.382559 40.444648 \nL 93.717694 42.093111 \nL 94.387965 42.446619 \nL 94.7231 37.189327 \nL 95.058235 39.190041 \nL 95.39337 40.312508 \nL 95.728505 43.533915 \nL 96.06364 43.07582 \nL 96.398775 40.929096 \nL 96.73391 41.933669 \nL 97.069046 39.093498 \nL 97.404181 41.714328 \nL 97.739316 42.787247 \nL 98.074451 41.807456 \nL 98.409586 41.191267 \nL 98.744721 36.308129 \nL 99.079856 40.853049 \nL 99.414992 37.836584 \nL 100.085262 44.969694 \nL 100.420397 44.097026 \nL 100.755532 44.848833 \nL 101.090667 42.702198 \nL 101.425802 44.800251 \nL 101.760938 40.213474 \nL 102.096073 41.240363 \nL 102.431208 43.590335 \nL 102.766343 35.649926 \nL 103.101478 39.540103 \nL 103.436613 37.63206 \nL 103.771748 33.186881 \nL 104.106883 37.598507 \nL 104.442019 40.208201 \nL 104.777154 46.644089 \nL 105.112289 50.618775 \nL 105.447424 51.327643 \nL 105.782559 52.735628 \nL 106.117694 44.669594 \nL 106.452829 42.088963 \nL 106.787965 46.338926 \nL 107.1231 41.301315 \nL 107.458235 41.750013 \nL 107.79337 38.977481 \nL 108.128505 39.595928 \nL 108.46364 43.539278 \nL 108.798775 44.527346 \nL 109.13391 47.220884 \nL 110.139316 39.591393 \nL 110.474451 35.389815 \nL 110.809586 35.284287 \nL 111.144721 39.699975 \nL 111.479856 39.061026 \nL 111.814992 43.350916 \nL 112.150127 43.944127 \nL 112.485262 43.897244 \nL 113.155532 46.742176 \nL 113.490667 45.483309 \nL 113.825802 41.875717 \nL 114.160938 39.587669 \nL 114.496073 39.494734 \nL 115.166343 48.588132 \nL 115.501478 50.902605 \nL 115.836613 49.817573 \nL 116.171748 45.470576 \nL 116.506883 45.559783 \nL 116.842019 41.548113 \nL 117.177154 41.12451 \nL 117.512289 51.008237 \nL 117.847424 41.0742 \nL 118.182559 43.076272 \nL 118.517694 43.829761 \nL 118.852829 43.440305 \nL 119.187965 42.201935 \nL 119.5231 43.023004 \nL 119.858235 45.391252 \nL 120.19337 39.61571 \nL 120.528505 42.117038 \nL 120.86364 45.482653 \nL 121.198775 44.62724 \nL 121.53391 44.483472 \nL 121.869046 47.828826 \nL 122.204181 42.714466 \nL 122.539316 41.801016 \nL 123.209586 52.263778 \nL 123.544721 53.351725 \nL 123.879856 52.581117 \nL 124.214992 52.449118 \nL 124.550127 42.603668 \nL 124.885262 40.046934 \nL 125.220397 44.107073 \nL 125.555532 46.340922 \nL 125.890667 51.286305 \nL 126.225802 50.995285 \nL 126.560938 51.598121 \nL 126.896073 52.605358 \nL 127.231208 46.370336 \nL 127.566343 48.072201 \nL 127.901478 51.460454 \nL 128.236613 44.536142 \nL 128.906883 56.151614 \nL 129.242019 54.205807 \nL 129.577154 55.966985 \nL 129.912289 55.980684 \nL 130.247424 47.400853 \nL 130.582559 48.629302 \nL 130.917694 50.992169 \nL 131.252829 51.593165 \nL 131.587965 55.740035 \nL 131.9231 51.708141 \nL 132.258235 61.86549 \nL 132.59337 52.570479 \nL 132.928505 57.674654 \nL 133.26364 48.228548 \nL 133.598775 47.997982 \nL 133.93391 49.100059 \nL 134.269046 48.387926 \nL 134.604181 52.230463 \nL 134.939316 52.016039 \nL 135.274451 52.929458 \nL 135.609586 51.067303 \nL 135.944721 48.087216 \nL 136.279856 47.667336 \nL 136.614992 49.917967 \nL 136.950127 49.863736 \nL 137.285262 56.456023 \nL 137.620397 58.155742 \nL 137.955532 54.07432 \nL 138.290667 54.827903 \nL 138.625802 52.791614 \nL 138.960938 57.680196 \nL 139.296073 59.197295 \nL 139.631208 61.834412 \nL 139.966343 61.246927 \nL 140.301478 56.434486 \nL 140.636613 57.663255 \nL 140.971748 55.605676 \nL 141.306883 62.314301 \nL 141.642019 66.324791 \nL 141.977154 65.513378 \nL 142.312289 66.303661 \nL 142.647424 65.926822 \nL 142.982559 55.790016 \nL 143.317694 59.628427 \nL 143.652829 65.143382 \nL 143.987965 68.480638 \nL 144.3231 74.469482 \nL 144.99337 79.879762 \nL 145.66364 73.291039 \nL 145.998775 73.044344 \nL 146.33391 72.244605 \nL 146.669046 77.198 \nL 147.004181 77.682381 \nL 147.339316 77.410774 \nL 147.674451 77.880799 \nL 148.009586 75.17086 \nL 148.344721 76.615979 \nL 148.679856 76.171 \nL 149.014992 78.21448 \nL 149.350127 75.808468 \nL 149.685262 74.352542 \nL 150.020397 75.458573 \nL 150.355532 70.825313 \nL 150.690667 79.740516 \nL 151.025802 76.301778 \nL 151.360938 79.048259 \nL 151.696073 83.24833 \nL 152.031208 84.574838 \nL 152.366343 87.774391 \nL 152.701478 83.619723 \nL 153.036613 82.164585 \nL 153.371748 81.69857 \nL 153.706883 79.009539 \nL 154.042019 81.564011 \nL 154.377154 80.379195 \nL 155.047424 87.630544 \nL 155.717694 81.744698 \nL 156.052829 81.236547 \nL 156.387965 83.003883 \nL 157.058235 88.337997 \nL 157.39337 88.437078 \nL 157.728505 87.51493 \nL 158.06364 86.185546 \nL 158.398775 83.423748 \nL 158.73391 85.111003 \nL 159.069046 87.450575 \nL 159.404181 91.54763 \nL 159.739316 90.86728 \nL 160.074451 89.808978 \nL 161.079856 95.373799 \nL 161.414992 94.221309 \nL 161.750127 87.934409 \nL 162.085262 87.234871 \nL 162.755532 96.164007 \nL 163.090667 93.85816 \nL 163.425802 92.546998 \nL 163.760938 89.839931 \nL 164.096073 94.756045 \nL 165.101478 102.114305 \nL 165.436613 98.563034 \nL 165.771748 97.511229 \nL 166.106883 94.882438 \nL 166.442019 93.949614 \nL 166.777154 94.888457 \nL 167.447424 107.143455 \nL 168.117694 101.110475 \nL 168.452829 99.916463 \nL 168.787965 99.861453 \nL 169.1231 99.280094 \nL 169.458235 101.022748 \nL 169.79337 108.426482 \nL 170.128505 111.530948 \nL 170.46364 113.585027 \nL 170.798775 112.996653 \nL 171.13391 104.192663 \nL 171.469046 99.292593 \nL 171.804181 97.163544 \nL 172.139316 91.02022 \nL 172.474451 95.879322 \nL 173.144721 113.057557 \nL 173.479856 112.426643 \nL 173.814992 117.347227 \nL 174.150127 120.530193 \nL 174.485262 120.243659 \nL 174.820397 122.379998 \nL 175.155532 121.862638 \nL 175.490667 118.765872 \nL 176.160938 115.602428 \nL 176.496073 110.09311 \nL 176.831208 107.140591 \nL 177.166343 107.114155 \nL 177.501478 114.290132 \nL 177.836613 113.044375 \nL 178.171748 117.009235 \nL 178.506883 117.10709 \nL 178.842019 114.525047 \nL 179.177154 121.148756 \nL 179.512289 121.738958 \nL 179.847424 123.754708 \nL 180.517694 120.169254 \nL 180.852829 116.648906 \nL 181.187965 116.066597 \nL 181.5231 115.908269 \nL 181.858235 116.476332 \nL 182.19337 117.605681 \nL 182.528505 120.361324 \nL 183.198775 111.950117 \nL 183.53391 112.421238 \nL 183.869046 114.708214 \nL 184.204181 124.918021 \nL 184.539316 129.115311 \nL 184.874451 125.960889 \nL 185.209586 125.560367 \nL 185.544721 130.305993 \nL 186.214992 124.52345 \nL 186.550127 118.666979 \nL 186.885262 118.544611 \nL 187.555532 126.351526 \nL 187.890667 124.381621 \nL 188.560938 127.451943 \nL 188.896073 125.796326 \nL 189.566343 129.451524 \nL 189.901478 130.764299 \nL 190.571748 120.594896 \nL 190.906883 115.35692 \nL 191.242019 114.904831 \nL 191.912289 122.068783 \nL 192.247424 125.378738 \nL 192.582559 126.903832 \nL 192.917694 131.900475 \nL 193.252829 138.720643 \nL 193.587965 137.252533 \nL 193.9231 127.872076 \nL 194.258235 124.985718 \nL 195.26364 133.232416 \nL 195.598775 126.522168 \nL 195.93391 128.320127 \nL 196.269046 124.392623 \nL 196.604181 126.807042 \nL 196.939316 132.921498 \nL 197.274451 130.338441 \nL 197.609586 130.962164 \nL 197.944721 133.985533 \nL 198.279856 134.538685 \nL 198.614992 134.464342 \nL 198.950127 136.577129 \nL 199.285262 129.395659 \nL 199.620397 132.634744 \nL 199.955532 140.985355 \nL 200.290667 137.554787 \nL 200.625802 137.875176 \nL 200.960938 124.808312 \nL 201.296073 126.504049 \nL 201.631208 126.833453 \nL 202.301478 137.695348 \nL 202.636613 138.030391 \nL 203.306883 127.99069 \nL 203.642019 129.958196 \nL 203.977154 126.662246 \nL 204.312289 129.090438 \nL 204.647424 136.210477 \nL 204.982559 138.769442 \nL 205.317694 139.428592 \nL 205.987965 130.65301 \nL 206.3231 129.359687 \nL 206.99337 135.287023 \nL 207.328505 132.842384 \nL 207.66364 135.43365 \nL 207.998775 133.001658 \nL 208.33391 134.250753 \nL 208.669046 134.920618 \nL 209.004181 128.841082 \nL 209.339316 137.715795 \nL 209.674451 135.264439 \nL 210.009586 135.73845 \nL 210.344721 139.754303 \nL 210.679856 141.194824 \nL 211.014992 136.931287 \nL 211.350127 136.27467 \nL 211.685262 133.795945 \nL 212.020397 137.713628 \nL 212.355532 134.47491 \nL 212.690667 136.788908 \nL 213.025802 136.548765 \nL 213.360938 133.639225 \nL 213.696073 129.196296 \nL 214.031208 130.887015 \nL 214.366343 129.881685 \nL 214.701478 131.335848 \nL 215.036613 136.970955 \nL 215.371748 131.847736 \nL 215.706883 133.862701 \nL 216.042019 134.686527 \nL 217.047424 130.486695 \nL 217.382559 134.007867 \nL 217.717694 134.052967 \nL 218.7231 130.130059 \nL 219.058235 131.680667 \nL 219.39337 133.996969 \nL 219.728505 133.409092 \nL 220.06364 133.073557 \nL 220.398775 136.999826 \nL 220.73391 138.872006 \nL 221.069046 134.349396 \nL 221.404181 137.194978 \nL 221.739316 128.92333 \nL 222.074451 129.415744 \nL 222.409586 129.577121 \nL 222.744721 128.680743 \nL 223.079856 134.005163 \nL 223.414992 133.847173 \nL 223.750127 131.647817 \nL 224.420397 129.582083 \nL 224.755532 126.606558 \nL 225.425802 130.10623 \nL 225.760938 135.405411 \nL 226.096073 134.89269 \nL 226.431208 127.293233 \nL 226.766343 129.839258 \nL 227.101478 128.710404 \nL 227.436613 132.372298 \nL 227.771748 133.537634 \nL 228.106883 130.490714 \nL 228.442019 125.471561 \nL 228.777154 128.294278 \nL 229.112289 127.02132 \nL 229.447424 130.495252 \nL 229.782559 130.612523 \nL 230.117694 131.251006 \nL 230.452829 131.443835 \nL 230.787965 129.242666 \nL 231.1231 129.150426 \nL 231.458235 127.32109 \nL 231.79337 129.54789 \nL 232.128505 128.945822 \nL 232.46364 126.427294 \nL 232.798775 125.78273 \nL 233.469046 120.14198 \nL 233.804181 119.696391 \nL 234.474451 132.395129 \nL 234.809586 130.925933 \nL 235.144721 128.024553 \nL 235.479856 128.600243 \nL 235.814992 127.051915 \nL 236.150127 129.543861 \nL 236.485262 125.003266 \nL 236.820397 122.826334 \nL 237.155532 123.805317 \nL 237.490667 121.082845 \nL 237.825802 127.168704 \nL 238.831208 115.105626 \nL 239.166343 108.950797 \nL 239.501478 110.157215 \nL 239.836613 108.715 \nL 240.171748 113.66404 \nL 240.506883 120.338462 \nL 240.842019 122.004056 \nL 241.177154 121.927286 \nL 241.512289 120.75902 \nL 241.847424 120.005738 \nL 242.182559 122.246368 \nL 242.517694 122.341056 \nL 242.852829 123.611355 \nL 243.187965 121.79709 \nL 243.5231 110.086227 \nL 243.858235 111.242589 \nL 244.19337 116.536088 \nL 244.528505 117.69757 \nL 244.86364 117.906763 \nL 245.198775 116.555528 \nL 245.53391 113.356152 \nL 245.869046 112.118256 \nL 246.204181 108.301668 \nL 246.539316 108.640445 \nL 247.209586 112.94049 \nL 247.544721 113.217346 \nL 247.879856 109.016763 \nL 248.550127 104.473885 \nL 248.885262 103.61124 \nL 249.220397 111.641211 \nL 249.555532 111.519304 \nL 249.890667 111.2534 \nL 250.225802 113.035894 \nL 250.560938 110.878374 \nL 250.896073 116.749893 \nL 251.231208 112.496006 \nL 251.566343 112.009829 \nL 251.901478 112.671302 \nL 252.236613 107.089744 \nL 252.906883 105.240411 \nL 253.577154 97.860484 \nL 253.912289 99.358416 \nL 254.247424 96.797385 \nL 254.582559 101.512488 \nL 254.917694 103.80694 \nL 255.252829 103.34023 \nL 255.587965 101.835416 \nL 255.9231 93.433773 \nL 256.258235 90.498567 \nL 256.59337 94.502924 \nL 256.928505 100.804046 \nL 257.26364 109.983475 \nL 257.598775 106.514313 \nL 257.93391 100.093947 \nL 258.269046 102.85593 \nL 258.604181 93.075736 \nL 258.939316 95.211873 \nL 259.274451 96.507475 \nL 259.609586 96.263035 \nL 259.944721 102.825294 \nL 260.279856 101.418725 \nL 260.614992 104.799126 \nL 260.950127 105.088366 \nL 261.285262 98.663341 \nL 261.620397 98.318971 \nL 261.955532 93.137168 \nL 262.290667 90.989034 \nL 262.960938 81.845446 \nL 263.296073 79.842905 \nL 263.631208 84.679154 \nL 264.301478 89.816182 \nL 264.636613 90.59994 \nL 264.971748 83.221064 \nL 265.642019 77.175308 \nL 265.977154 69.974778 \nL 266.312289 74.010192 \nL 266.647424 70.752352 \nL 266.982559 72.548557 \nL 267.317694 77.880301 \nL 267.652829 85.714739 \nL 267.987965 90.062682 \nL 268.3231 84.482369 \nL 268.658235 83.367933 \nL 268.99337 79.120604 \nL 269.328505 73.016757 \nL 269.66364 73.285709 \nL 269.998775 74.350557 \nL 270.33391 80.830477 \nL 270.669046 80.224993 \nL 271.004181 75.983086 \nL 271.339316 69.519231 \nL 271.674451 69.24571 \nL 272.009586 68.517644 \nL 272.344721 72.534643 \nL 272.679856 72.483807 \nL 273.014992 66.395748 \nL 273.350127 67.402322 \nL 273.685262 69.620574 \nL 274.020397 68.144533 \nL 274.355532 71.581536 \nL 274.690667 71.399378 \nL 275.025802 71.741928 \nL 275.696073 77.639397 \nL 276.031208 78.353328 \nL 276.366343 79.413231 \nL 276.701478 77.166258 \nL 277.036613 72.965127 \nL 277.371748 63.432086 \nL 277.706883 65.889894 \nL 278.377154 64.793496 \nL 278.712289 68.089426 \nL 279.047424 68.348633 \nL 279.382559 59.65489 \nL 279.717694 61.03845 \nL 280.052829 58.817926 \nL 280.387965 59.244773 \nL 280.7231 56.553875 \nL 281.058235 65.757829 \nL 281.39337 64.915162 \nL 281.728505 60.955665 \nL 282.06364 62.285223 \nL 282.398775 61.354679 \nL 282.73391 51.774141 \nL 283.069046 50.581323 \nL 283.404181 52.976643 \nL 283.739316 54.109761 \nL 284.074451 52.267855 \nL 284.409586 58.44943 \nL 284.744721 52.679626 \nL 285.079856 57.662721 \nL 285.414992 54.801297 \nL 285.750127 56.337104 \nL 286.085262 53.169226 \nL 286.420397 56.184208 \nL 286.755532 54.143832 \nL 287.090667 51.359483 \nL 287.425802 51.244495 \nL 287.760938 52.855124 \nL 288.096073 56.802551 \nL 288.431208 57.372528 \nL 288.766343 66.423178 \nL 289.101478 54.428013 \nL 289.436613 64.508049 \nL 289.771748 53.901791 \nL 290.106883 54.171729 \nL 290.442019 60.839575 \nL 290.777154 55.044583 \nL 291.112289 56.115062 \nL 291.447424 59.492173 \nL 291.782559 50.640389 \nL 292.117694 49.557828 \nL 292.452829 50.987606 \nL 292.787965 50.268225 \nL 293.1231 48.37809 \nL 293.458235 51.986454 \nL 293.79337 44.158155 \nL 294.128505 46.722241 \nL 294.46364 39.00843 \nL 294.798775 36.246604 \nL 295.13391 36.929869 \nL 295.469046 34.488688 \nL 295.804181 41.73891 \nL 296.139316 41.677293 \nL 296.474451 43.624498 \nL 296.809586 47.639396 \nL 297.479856 40.9086 \nL 297.814992 40.940189 \nL 298.150127 36.939306 \nL 298.485262 37.467265 \nL 298.820397 40.269513 \nL 299.155532 42.105147 \nL 299.490667 42.895277 \nL 299.825802 39.971247 \nL 300.160938 40.894192 \nL 300.496073 43.62881 \nL 300.831208 39.520437 \nL 301.166343 43.426776 \nL 301.501478 41.101615 \nL 301.836613 41.472232 \nL 302.506883 44.518697 \nL 302.842019 47.275311 \nL 303.512289 44.491929 \nL 303.847424 41.451534 \nL 304.182559 42.926468 \nL 304.517694 44.990391 \nL 304.852829 43.850721 \nL 305.187965 47.140671 \nL 305.5231 40.817385 \nL 305.858235 44.199465 \nL 306.19337 42.930691 \nL 306.528505 40.55728 \nL 306.86364 45.522525 \nL 307.198775 38.178632 \nL 307.53391 38.516334 \nL 307.869046 42.411528 \nL 308.204181 41.340739 \nL 308.539316 39.113372 \nL 308.874451 35.596146 \nL 309.209586 36.313989 \nL 309.544721 36.726004 \nL 309.879856 38.39595 \nL 310.550127 43.472051 \nL 310.885262 43.373549 \nL 311.220397 44.016899 \nL 311.555532 46.697805 \nL 312.225802 44.698013 \nL 312.560938 48.880224 \nL 312.896073 43.049849 \nL 313.231208 45.268338 \nL 313.566343 41.923756 \nL 313.901478 40.829446 \nL 314.236613 41.679249 \nL 314.571748 41.915248 \nL 314.906883 44.048498 \nL 315.242019 43.287913 \nL 315.577154 45.081246 \nL 315.912289 43.393441 \nL 316.247424 45.251067 \nL 316.582559 44.617749 \nL 316.917694 43.205995 \nL 317.252829 44.276293 \nL 317.587965 40.799684 \nL 317.9231 40.586517 \nL 318.258235 41.626876 \nL 318.59337 41.973264 \nL 318.928505 40.557152 \nL 319.26364 42.598031 \nL 319.598775 40.348685 \nL 319.93391 40.504611 \nL 320.269046 38.32738 \nL 320.604181 37.266982 \nL 320.939316 38.802154 \nL 321.274451 37.920565 \nL 321.609586 40.078685 \nL 321.944721 40.945933 \nL 322.279856 40.253603 \nL 322.614992 39.14108 \nL 322.950127 43.01485 \nL 323.285262 44.577494 \nL 323.620397 42.568379 \nL 323.955532 44.686422 \nL 324.290667 42.837444 \nL 324.625802 41.660596 \nL 324.960938 44.724564 \nL 325.296073 44.764443 \nL 325.631208 43.636486 \nL 325.966343 47.536359 \nL 326.301478 43.916343 \nL 326.971748 46.690077 \nL 327.306883 50.613257 \nL 327.642019 45.013631 \nL 327.977154 47.506838 \nL 328.312289 46.153647 \nL 328.647424 40.471498 \nL 328.982559 41.305062 \nL 329.317694 44.200789 \nL 329.652829 48.377553 \nL 329.987965 48.097031 \nL 330.3231 46.775817 \nL 330.658235 46.774868 \nL 330.99337 42.122259 \nL 331.328505 40.277216 \nL 331.66364 42.773972 \nL 331.998775 48.632116 \nL 332.33391 47.430651 \nL 332.669046 49.770803 \nL 333.004181 49.427257 \nL 333.339316 45.533262 \nL 333.674451 49.707547 \nL 334.009586 45.473463 \nL 334.344721 46.931114 \nL 334.679856 55.833935 \nL 335.014992 43.710146 \nL 335.350127 52.085951 \nL 335.685262 54.637631 \nL 336.020397 51.946471 \nL 336.355532 63.296891 \nL 336.690667 49.772649 \nL 337.360937 59.116924 \nL 337.696073 52.867276 \nL 338.031208 56.502005 \nL 338.366343 53.658059 \nL 338.701478 52.714228 \nL 339.036613 53.958583 \nL 339.371748 54.100932 \nL 340.377154 48.334445 \nL 340.712289 45.845645 \nL 341.047424 44.818315 \nL 341.382559 50.711696 \nL 341.717694 47.139777 \nL 342.052829 48.951134 \nL 342.387965 51.712594 \nL 342.7231 50.4328 \nL 343.058235 56.757905 \nL 343.39337 58.530296 \nL 343.728505 58.150457 \nL 344.06364 65.113376 \nL 344.398775 52.768975 \nL 344.73391 49.154584 \nL 345.069046 48.330301 \nL 345.404181 55.521884 \nL 345.739316 48.588266 \nL 346.074451 53.921287 \nL 346.409586 50.9932 \nL 346.744721 53.866194 \nL 347.079856 54.076139 \nL 347.414992 50.123383 \nL 348.085262 54.033537 \nL 348.420397 53.178497 \nL 348.755532 53.278919 \nL 349.090667 50.653939 \nL 349.425802 53.486175 \nL 349.760938 58.908057 \nL 350.096073 54.771014 \nL 350.431208 60.894524 \nL 351.101478 51.025016 \nL 351.771748 62.303836 \nL 352.106883 62.383399 \nL 352.442019 69.005509 \nL 352.777154 57.745827 \nL 353.112289 59.659058 \nL 353.447424 56.087311 \nL 353.782559 58.816711 \nL 354.117694 57.071009 \nL 354.452829 59.06279 \nL 355.1231 73.048847 \nL 355.458235 71.336777 \nL 355.79337 72.357314 \nL 356.128505 64.753918 \nL 356.46364 64.523989 \nL 356.798775 67.003025 \nL 357.13391 77.799027 \nL 357.469046 81.863393 \nL 357.804181 88.583048 \nL 358.139316 86.869413 \nL 358.474451 88.599951 \nL 358.809586 83.003281 \nL 359.144721 75.3124 \nL 359.479856 76.891731 \nL 359.814992 71.497704 \nL 360.150127 78.57114 \nL 360.485262 81.819314 \nL 360.820397 82.262543 \nL 361.490667 88.644127 \nL 361.825802 83.148705 \nL 362.160938 82.742159 \nL 362.831208 78.818119 \nL 363.501478 81.302873 \nL 363.836613 78.125405 \nL 364.171748 76.904155 \nL 364.506883 78.867453 \nL 364.842019 84.553643 \nL 365.177154 83.263179 \nL 365.847424 82.660285 \nL 366.182559 82.868611 \nL 366.517694 85.006858 \nL 367.187965 82.490516 \nL 367.5231 82.475767 \nL 367.858235 83.72315 \nL 368.528505 90.771417 \nL 368.86364 88.67428 \nL 369.869046 95.342386 \nL 370.204181 96.779844 \nL 370.874451 86.053291 \nL 371.209586 86.30331 \nL 371.544721 87.666568 \nL 371.879856 90.79641 \nL 372.214992 90.338804 \nL 372.885262 96.277746 \nL 373.220397 96.163618 \nL 373.555532 98.975316 \nL 373.890667 98.262691 \nL 374.225802 97.286443 \nL 374.896073 103.101 \nL 375.231208 105.178453 \nL 375.566343 100.13408 \nL 375.901478 102.183757 \nL 376.236613 98.81369 \nL 376.571748 103.024039 \nL 376.906883 104.187966 \nL 377.242019 97.860224 \nL 377.577154 101.499759 \nL 377.912289 100.802033 \nL 378.247424 102.163428 \nL 378.582559 100.191599 \nL 378.917694 97.111436 \nL 379.252829 101.558568 \nL 379.587965 104.295647 \nL 379.9231 108.589623 \nL 380.258235 110.972398 \nL 380.59337 109.779077 \nL 380.928505 106.150317 \nL 381.598775 102.480869 \nL 381.93391 104.449911 \nL 382.269046 113.415837 \nL 382.604181 115.529421 \nL 382.939316 116.798604 \nL 384.279856 106.707867 \nL 384.614992 106.4254 \nL 385.285262 116.902508 \nL 385.620397 114.718331 \nL 385.955532 111.615064 \nL 386.290667 111.579507 \nL 386.960938 118.5894 \nL 386.960938 118.5894 \n\" clip-path=\"url(#pd9c266d709)\" 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 101.512488 \nL 254.917694 103.982157 \nL 255.252829 102.828833 \nL 255.587965 104.305529 \nL 255.9231 102.631329 \nL 256.258235 102.790362 \nL 256.59337 102.43212 \nL 256.928505 102.291942 \nL 257.26364 101.902381 \nL 258.269046 101.219766 \nL 259.944721 100.111638 \nL 262.290667 98.801967 \nL 264.971748 97.58114 \nL 267.652829 96.59968 \nL 270.669046 95.723591 \nL 274.020397 94.971956 \nL 278.042019 94.302912 \nL 282.73391 93.754533 \nL 288.431208 93.316997 \nL 295.804181 92.982367 \nL 306.19337 92.750139 \nL 323.285262 92.618927 \nL 366.852829 92.576732 \nL 386.960938 92.575722 \nL 386.960938 92.575722 \n\" clip-path=\"url(#pd9c266d709)\" 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=\"pd9c266d709\">\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": 91
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:46.389774559Z",
"start_time": "2026-03-25T12:54:46.333788807Z"
}
},
"cell_type": "code",
"source": [
"import collections\n",
"import re"
],
"id": "aab66c10a4c143d2",
"outputs": [],
"execution_count": 92
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:46.511151557Z",
"start_time": "2026-03-25T12:54:46.396367087Z"
}
},
"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": 93
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:46.589883911Z",
"start_time": "2026-03-25T12:54:46.524677647Z"
}
},
"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": 94
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:46.684454112Z",
"start_time": "2026-03-25T12:54:46.620352826Z"
}
},
"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": 95
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:46.844584420Z",
"start_time": "2026-03-25T12:54:46.709821817Z"
}
},
"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": 96
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:46.914064266Z",
"start_time": "2026-03-25T12:54:46.846539992Z"
}
},
"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": 97
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:47.087077440Z",
"start_time": "2026-03-25T12:54:46.945943096Z"
}
},
"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": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 98
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:47.245364838Z",
"start_time": "2026-03-25T12:54:47.111205224Z"
}
},
"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": 99,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 99
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:47.857887916Z",
"start_time": "2026-03-25T12:54:47.247469243Z"
}
},
"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-25T20:54:47.734963</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(#p34995c6764)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_2\">\n <defs>\n <path id=\"m5bbba6b94a\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m5bbba6b94a\" 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(#p34995c6764)\" 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=\"#m5bbba6b94a\" 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(#p34995c6764)\" 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=\"#m5bbba6b94a\" 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(#p34995c6764)\" 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=\"#m5bbba6b94a\" 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=\"m7e6cc20b89\" d=\"M 0 0 \nL 0 2 \n\" style=\"stroke: #ffffff; stroke-width: 0.6\"/>\n </defs>\n <g>\n <use xlink:href=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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=\"#m7e6cc20b89\" 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(#p34995c6764)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_42\">\n <defs>\n <path id=\"m70eb0d2b34\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m70eb0d2b34\" 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(#p34995c6764)\" 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=\"#m70eb0d2b34\" 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(#p34995c6764)\" 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=\"#m70eb0d2b34\" 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(#p34995c6764)\" 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=\"#m70eb0d2b34\" 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=\"m39f6cb9895\" d=\"M 0 0 \nL -2 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.6\"/>\n </defs>\n <g>\n <use xlink:href=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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=\"#m39f6cb9895\" 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(#p34995c6764)\" 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=\"p34995c6764\">\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": 100
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:48.002182407Z",
"start_time": "2026-03-25T12:54:47.912592290Z"
}
},
"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": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 101
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:48.095243055Z",
"start_time": "2026-03-25T12:54:48.005003927Z"
}
},
"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": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 102
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:48.748052730Z",
"start_time": "2026-03-25T12:54:48.097673111Z"
}
},
"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-25T20:54:48.552018</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(#pe624ffde45)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_2\">\n <defs>\n <path id=\"m5244db54f0\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m5244db54f0\" 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(#pe624ffde45)\" 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=\"#m5244db54f0\" 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(#pe624ffde45)\" 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=\"#m5244db54f0\" 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(#pe624ffde45)\" 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=\"#m5244db54f0\" 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(#pe624ffde45)\" 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=\"#m5244db54f0\" 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=\"m9859c996e5\" d=\"M 0 0 \nL 0 2 \n\" style=\"stroke: #ffffff; stroke-width: 0.6\"/>\n </defs>\n <g>\n <use xlink:href=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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=\"#m9859c996e5\" 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(#pe624ffde45)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_52\">\n <defs>\n <path id=\"md0950de098\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#md0950de098\" 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(#pe624ffde45)\" 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=\"#md0950de098\" 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(#pe624ffde45)\" 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=\"#md0950de098\" 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(#pe624ffde45)\" 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=\"#md0950de098\" 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=\"m68e265f91c\" d=\"M 0 0 \nL -2 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.6\"/>\n </defs>\n <g>\n <use xlink:href=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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=\"#m68e265f91c\" 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(#pe624ffde45)\" 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(#pe624ffde45)\" 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(#pe624ffde45)\" 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=\"pe624ffde45\">\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": 103
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:48.898844389Z",
"start_time": "2026-03-25T12:54:48.827838521Z"
}
},
"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": 104
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:49.053830957Z",
"start_time": "2026-03-25T12:54:48.902512374Z"
}
},
"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([[27, 28, 29, 30, 31],\n",
" [ 2, 3, 4, 5, 6]]) \n",
"Y: tensor([[28, 29, 30, 31, 32],\n",
" [ 3, 4, 5, 6, 7]])\n",
"X: tensor([[17, 18, 19, 20, 21],\n",
" [22, 23, 24, 25, 26]]) \n",
"Y: tensor([[18, 19, 20, 21, 22],\n",
" [23, 24, 25, 26, 27]])\n",
"X: tensor([[12, 13, 14, 15, 16],\n",
" [ 7, 8, 9, 10, 11]]) \n",
"Y: tensor([[13, 14, 15, 16, 17],\n",
" [ 8, 9, 10, 11, 12]])\n"
]
}
],
"execution_count": 105
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T12:54:49.085900056Z",
"start_time": "2026-03-25T12:54:49.065678273Z"
}
},
"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": 106
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T13:13:22.060317841Z",
"start_time": "2026-03-25T13:13:22.007573330Z"
}
},
"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": 111
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T13:13:25.998507190Z",
"start_time": "2026-03-25T13:13:25.902583940Z"
}
},
"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": 112
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T13:14:32.469873183Z",
"start_time": "2026-03-25T13:14:32.366446697Z"
}
},
"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": 115,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 115
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T13:16:48.087534183Z",
"start_time": "2026-03-25T13:16:47.919685613Z"
}
},
"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": 119,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 119
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T13:37:28.354220059Z",
"start_time": "2026-03-25T13:37:28.262974202Z"
}
},
"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": 120
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T13:50:48.023098387Z",
"start_time": "2026-03-25T13:50:47.712386114Z"
}
},
"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": 123,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 123
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T14:06:25.042155295Z",
"start_time": "2026-03-25T14:06:24.593900625Z"
}
},
"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 slgm sl sl'"
]
},
"execution_count": 124,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 124
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T14:14:43.788897281Z",
"start_time": "2026-03-25T14:14:43.657537187Z"
}
},
"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": 125
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T14:21:41.754553299Z",
"start_time": "2026-03-25T14:21:41.701446937Z"
}
},
"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": 132
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T15:00:52.669519274Z",
"start_time": "2026-03-25T15:00:52.618407065Z"
}
},
"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": 146
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T15:02:40.728313868Z",
"start_time": "2026-03-25T15:00:53.106582989Z"
}
},
"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": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"困惑度 1.3, 128113.6 词元/秒 cpu\n",
"time travelleris thene by in psmed the k waile to se pas of sour\n",
"traveller tore asmethe which we canle wey thard abthof spar\n"
]
},
{
"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=\"246.284375pt\" height=\"183.35625pt\" viewBox=\"0 0 246.284375 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-25T23:02:40.690662</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 246.284375 183.35625 \nL 246.284375 0 \nL 0 0 \nz\n\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 34.240625 145.8 \nL 229.540625 145.8 \nL 229.540625 7.2 \nL 34.240625 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 70.112054 145.8 \nL 70.112054 7.2 \n\" clip-path=\"url(#p1a9dfa12b4)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_2\">\n <defs>\n <path id=\"mb00c30088f\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#mb00c30088f\" x=\"70.112054\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_1\">\n <!-- 100 -->\n <g style=\"fill: #ffffff\" transform=\"translate(60.568304 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\"/>\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 109.969196 145.8 \nL 109.969196 7.2 \n\" clip-path=\"url(#p1a9dfa12b4)\" 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=\"#mb00c30088f\" x=\"109.969196\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_2\">\n <!-- 200 -->\n <g style=\"fill: #ffffff\" transform=\"translate(100.425446 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 <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 149.826339 145.8 \nL 149.826339 7.2 \n\" clip-path=\"url(#p1a9dfa12b4)\" 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=\"#mb00c30088f\" x=\"149.826339\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_3\">\n <!-- 300 -->\n <g style=\"fill: #ffffff\" transform=\"translate(140.282589 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-33\"/>\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 189.683482 145.8 \nL 189.683482 7.2 \n\" clip-path=\"url(#p1a9dfa12b4)\" 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=\"#mb00c30088f\" x=\"189.683482\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_4\">\n <!-- 400 -->\n <g style=\"fill: #ffffff\" transform=\"translate(180.139732 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 <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 229.540625 145.8 \nL 229.540625 7.2 \n\" clip-path=\"url(#p1a9dfa12b4)\" 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=\"#mb00c30088f\" x=\"229.540625\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_5\">\n <!-- 500 -->\n <g style=\"fill: #ffffff\" transform=\"translate(219.996875 160.398438) scale(0.1 -0.1)\">\n <defs>\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-35\"/>\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=\"text_6\">\n <!-- epoch -->\n <g style=\"fill: #ffffff\" transform=\"translate(116.6625 174.076563) scale(0.1 -0.1)\">\n <defs>\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-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-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-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-68\" 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 4863 \nL 1159 4863 \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 </defs>\n <use xlink:href=\"#DejaVuSans-65\"/>\n <use xlink:href=\"#DejaVuSans-70\" x=\"61.523438\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"125\"/>\n <use xlink:href=\"#DejaVuSans-63\" x=\"186.181641\"/>\n <use xlink:href=\"#DejaVuSans-68\" x=\"241.162109\"/>\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 34.240625 127.887934 \nL 229.540625 127.887934 \n\" clip-path=\"url(#p1a9dfa12b4)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_12\">\n <defs>\n <path id=\"m796c75bf41\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m796c75bf41\" x=\"34.240625\" y=\"127.887934\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_7\">\n <!-- 2 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 131.687153) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-32\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_2\">\n <g id=\"line2d_13\">\n <path d=\"M 34.240625 96.649849 \nL 229.540625 96.649849 \n\" clip-path=\"url(#p1a9dfa12b4)\" 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=\"#m796c75bf41\" x=\"34.240625\" y=\"96.649849\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_8\">\n <!-- 4 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 100.449068) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-34\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_3\">\n <g id=\"line2d_15\">\n <path d=\"M 34.240625 65.411764 \nL 229.540625 65.411764 \n\" clip-path=\"url(#p1a9dfa12b4)\" 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=\"#m796c75bf41\" x=\"34.240625\" y=\"65.411764\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_9\">\n <!-- 6 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 69.210983) 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 </g>\n </g>\n </g>\n <g id=\"ytick_4\">\n <g id=\"line2d_17\">\n <path d=\"M 34.240625 34.173679 \nL 229.540625 34.173679 \n\" clip-path=\"url(#p1a9dfa12b4)\" 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=\"#m796c75bf41\" x=\"34.240625\" y=\"34.173679\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_10\">\n <!-- 8 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 37.972897) 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 </g>\n </g>\n </g>\n <g id=\"text_11\">\n <!-- perplexity -->\n <g style=\"fill: #ffffff\" transform=\"translate(14.798438 101.626563) rotate(-90) scale(0.1 -0.1)\">\n <defs>\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-6c\" d=\"M 603 4863 \nL 1178 4863 \nL 1178 0 \nL 603 0 \nL 603 4863 \nz\n\" 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 <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-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-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 </defs>\n <use xlink:href=\"#DejaVuSans-70\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"63.476562\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"125\"/>\n <use xlink:href=\"#DejaVuSans-70\" x=\"166.113281\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"229.589844\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"257.373047\"/>\n <use xlink:href=\"#DejaVuSans-78\" x=\"317.146484\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"376.326172\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"404.109375\"/>\n <use xlink:href=\"#DejaVuSans-79\" x=\"443.318359\"/>\n </g>\n </g>\n </g>\n <g id=\"line2d_19\">\n <path d=\"M 34.240625 13.5 \nL 38.226339 27.764978 \nL 42.212054 36.383619 \nL 46.197768 43.988218 \nL 50.183482 44.62228 \nL 54.169196 64.49607 \nL 58.154911 77.412062 \nL 62.140625 90.748752 \nL 66.126339 101.123875 \nL 70.112054 109.969327 \nL 74.097768 114.836303 \nL 78.083482 121.672163 \nL 82.069196 121.898335 \nL 86.054911 127.098119 \nL 90.040625 128.758218 \nL 94.026339 130.170303 \nL 98.012054 132.439914 \nL 101.997768 133.230004 \nL 105.983482 134.922608 \nL 109.969196 134.723658 \nL 113.954911 135.809649 \nL 117.940625 135.835371 \nL 121.926339 136.410925 \nL 125.912054 136.131815 \nL 129.897768 136.368046 \nL 133.883482 136.957192 \nL 137.869196 136.852787 \nL 141.854911 137.765608 \nL 145.840625 136.910027 \nL 149.826339 137.769119 \nL 153.812054 136.517472 \nL 157.797768 137.973255 \nL 161.783482 138.100365 \nL 165.769196 138.257103 \nL 169.754911 138.589796 \nL 173.740625 138.179142 \nL 177.726339 137.939905 \nL 181.712054 138.656512 \nL 185.697768 138.134622 \nL 189.683482 138.693034 \nL 193.669196 138.378733 \nL 197.654911 138.234981 \nL 201.640625 138.809362 \nL 205.626339 138.950161 \nL 209.612054 138.642232 \nL 213.597768 138.409857 \nL 217.583482 138.897165 \nL 221.569196 139.468181 \nL 225.554911 139.5 \nL 229.540625 139.209698 \n\" clip-path=\"url(#p1a9dfa12b4)\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_3\">\n <path d=\"M 34.240625 145.8 \nL 34.240625 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 229.540625 145.8 \nL 229.540625 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 34.240625 145.8 \nL 229.540625 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 34.240625 7.2 \nL 229.540625 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 167.265625 29.878125 \nL 222.540625 29.878125 \nQ 224.540625 29.878125 224.540625 27.878125 \nL 224.540625 14.2 \nQ 224.540625 12.2 222.540625 12.2 \nL 167.265625 12.2 \nQ 165.265625 12.2 165.265625 14.2 \nL 165.265625 27.878125 \nQ 165.265625 29.878125 167.265625 29.878125 \nz\n\" style=\"opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n </g>\n <g id=\"line2d_20\">\n <path d=\"M 169.265625 20.298438 \nL 179.265625 20.298438 \nL 189.265625 20.298438 \n\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"text_12\">\n <!-- train -->\n <g style=\"fill: #ffffff\" transform=\"translate(197.265625 23.798438) 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-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 </defs>\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"80.322266\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"141.601562\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"169.384766\"/>\n </g>\n </g>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"p1a9dfa12b4\">\n <rect x=\"34.240625\" 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": 147
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T15:02:40.837383063Z",
"start_time": "2026-03-25T15:02:40.788068670Z"
}
},
"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": 148
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T15:02:40.907873399Z",
"start_time": "2026-03-25T15:02:40.840147997Z"
}
},
"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": 149,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 149
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T15:02:40.960240439Z",
"start_time": "2026-03-25T15:02:40.909528103Z"
}
},
"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": 150
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T15:02:41.082450468Z",
"start_time": "2026-03-25T15:02:40.962991493Z"
}
},
"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": [
{
"data": {
"text/plain": [
"'time travellerunuuuuuuuu'"
]
},
"execution_count": 151,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 151
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-25T15:04:22.185320871Z",
"start_time": "2026-03-25T15:02:41.084179495Z"
}
},
"cell_type": "code",
"source": [
"num_epochs, lr = 500, 1\n",
"train_ch8(net, train_iter, vocab, lr, num_epochs, device)"
],
"id": "460f80bcf15ffd50",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"困惑度 1.3, 146307.4 词元/秒 cpu\n",
"time travellerit would be revery erance for any hemptanef re has\n",
"travellery uplagstoot somethacongacout in anly fale tard ap\n"
]
},
{
"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=\"252.646875pt\" height=\"183.35625pt\" viewBox=\"0 0 252.646875 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-25T23:04:22.133483</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 252.646875 183.35625 \nL 252.646875 0 \nL 0 0 \nz\n\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 40.603125 145.8 \nL 235.903125 145.8 \nL 235.903125 7.2 \nL 40.603125 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 76.474554 145.8 \nL 76.474554 7.2 \n\" clip-path=\"url(#p204033faea)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_2\">\n <defs>\n <path id=\"m277b52c217\" d=\"M 0 0 \nL 0 3.5 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m277b52c217\" x=\"76.474554\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_1\">\n <!-- 100 -->\n <g style=\"fill: #ffffff\" transform=\"translate(66.930804 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\"/>\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 116.331696 145.8 \nL 116.331696 7.2 \n\" clip-path=\"url(#p204033faea)\" 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=\"#m277b52c217\" x=\"116.331696\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_2\">\n <!-- 200 -->\n <g style=\"fill: #ffffff\" transform=\"translate(106.787946 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 <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 156.188839 145.8 \nL 156.188839 7.2 \n\" clip-path=\"url(#p204033faea)\" 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=\"#m277b52c217\" x=\"156.188839\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_3\">\n <!-- 300 -->\n <g style=\"fill: #ffffff\" transform=\"translate(146.645089 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-33\"/>\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 196.045982 145.8 \nL 196.045982 7.2 \n\" clip-path=\"url(#p204033faea)\" 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=\"#m277b52c217\" x=\"196.045982\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_4\">\n <!-- 400 -->\n <g style=\"fill: #ffffff\" transform=\"translate(186.502232 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 <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 235.903125 145.8 \nL 235.903125 7.2 \n\" clip-path=\"url(#p204033faea)\" 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=\"#m277b52c217\" x=\"235.903125\" y=\"145.8\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_5\">\n <!-- 500 -->\n <g style=\"fill: #ffffff\" transform=\"translate(226.359375 160.398438) scale(0.1 -0.1)\">\n <defs>\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-35\"/>\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=\"text_6\">\n <!-- epoch -->\n <g style=\"fill: #ffffff\" transform=\"translate(123.025 174.076563) scale(0.1 -0.1)\">\n <defs>\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-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-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-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-68\" 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 4863 \nL 1159 4863 \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 </defs>\n <use xlink:href=\"#DejaVuSans-65\"/>\n <use xlink:href=\"#DejaVuSans-70\" x=\"61.523438\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"125\"/>\n <use xlink:href=\"#DejaVuSans-63\" x=\"186.181641\"/>\n <use xlink:href=\"#DejaVuSans-68\" x=\"241.162109\"/>\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 40.603125 130.541826 \nL 235.903125 130.541826 \n\" clip-path=\"url(#p204033faea)\" style=\"fill: none; stroke: #ffffff; stroke-width: 0.8; stroke-linecap: square\"/>\n </g>\n <g id=\"line2d_12\">\n <defs>\n <path id=\"m56b47db788\" d=\"M 0 0 \nL -3.5 0 \n\" style=\"stroke: #ffffff; stroke-width: 0.8\"/>\n </defs>\n <g>\n <use xlink:href=\"#m56b47db788\" x=\"40.603125\" y=\"130.541826\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_7\">\n <!-- 2 -->\n <g style=\"fill: #ffffff\" transform=\"translate(27.240625 134.341045) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-32\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_2\">\n <g id=\"line2d_13\">\n <path d=\"M 40.603125 105.451472 \nL 235.903125 105.451472 \n\" clip-path=\"url(#p204033faea)\" 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=\"#m56b47db788\" x=\"40.603125\" y=\"105.451472\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_8\">\n <!-- 4 -->\n <g style=\"fill: #ffffff\" transform=\"translate(27.240625 109.25069) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-34\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_3\">\n <g id=\"line2d_15\">\n <path d=\"M 40.603125 80.361117 \nL 235.903125 80.361117 \n\" clip-path=\"url(#p204033faea)\" 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=\"#m56b47db788\" x=\"40.603125\" y=\"80.361117\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_9\">\n <!-- 6 -->\n <g style=\"fill: #ffffff\" transform=\"translate(27.240625 84.160336) 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 </g>\n </g>\n </g>\n <g id=\"ytick_4\">\n <g id=\"line2d_17\">\n <path d=\"M 40.603125 55.270762 \nL 235.903125 55.270762 \n\" clip-path=\"url(#p204033faea)\" 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=\"#m56b47db788\" x=\"40.603125\" y=\"55.270762\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_10\">\n <!-- 8 -->\n <g style=\"fill: #ffffff\" transform=\"translate(27.240625 59.069981) 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 </g>\n </g>\n </g>\n <g id=\"ytick_5\">\n <g id=\"line2d_19\">\n <path d=\"M 40.603125 30.180408 \nL 235.903125 30.180408 \n\" clip-path=\"url(#p204033faea)\" 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=\"#m56b47db788\" x=\"40.603125\" y=\"30.180408\" style=\"fill: #ffffff; stroke: #ffffff; stroke-width: 0.8\"/>\n </g>\n </g>\n <g id=\"text_11\">\n <!-- 10 -->\n <g style=\"fill: #ffffff\" transform=\"translate(20.878125 33.979626) scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-31\"/>\n <use xlink:href=\"#DejaVuSans-30\" x=\"63.623047\"/>\n </g>\n </g>\n </g>\n <g id=\"text_12\">\n <!-- perplexity -->\n <g style=\"fill: #ffffff\" transform=\"translate(14.798437 101.626563) rotate(-90) scale(0.1 -0.1)\">\n <defs>\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-6c\" d=\"M 603 4863 \nL 1178 4863 \nL 1178 0 \nL 603 0 \nL 603 4863 \nz\n\" 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 <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-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-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 </defs>\n <use xlink:href=\"#DejaVuSans-70\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"63.476562\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"125\"/>\n <use xlink:href=\"#DejaVuSans-70\" x=\"166.113281\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"229.589844\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"257.373047\"/>\n <use xlink:href=\"#DejaVuSans-78\" x=\"317.146484\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"376.326172\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"404.109375\"/>\n <use xlink:href=\"#DejaVuSans-79\" x=\"443.318359\"/>\n </g>\n </g>\n </g>\n <g id=\"line2d_21\">\n <path d=\"M 40.603125 13.5 \nL 44.588839 40.433816 \nL 48.574554 51.593517 \nL 52.560268 58.257831 \nL 56.545982 62.312965 \nL 60.531696 69.262537 \nL 64.517411 76.059062 \nL 68.503125 86.750872 \nL 72.488839 99.098008 \nL 76.474554 108.396869 \nL 80.460268 115.738788 \nL 84.445982 120.270379 \nL 88.431696 124.192574 \nL 92.417411 125.837278 \nL 96.403125 128.913197 \nL 100.388839 130.680428 \nL 104.374554 132.968101 \nL 108.360268 133.122692 \nL 112.345982 134.506824 \nL 116.331696 135.18001 \nL 120.317411 136.225358 \nL 124.303125 135.865038 \nL 128.288839 136.093354 \nL 132.274554 137.251879 \nL 136.260268 137.26067 \nL 140.245982 137.749986 \nL 144.231696 137.752716 \nL 148.217411 137.990084 \nL 152.203125 138.319323 \nL 156.188839 137.971797 \nL 160.174554 138.447459 \nL 164.160268 137.534691 \nL 168.145982 138.269689 \nL 172.131696 138.717863 \nL 176.117411 138.476731 \nL 180.103125 138.373056 \nL 184.088839 138.265372 \nL 188.074554 138.697711 \nL 192.060268 138.708288 \nL 196.045982 138.689043 \nL 200.031696 138.854337 \nL 204.017411 139.472653 \nL 208.003125 139.077209 \nL 211.988839 138.976177 \nL 215.974554 138.716284 \nL 219.960268 139.5 \nL 223.945982 139.191302 \nL 227.931696 138.854245 \nL 231.917411 139.426956 \nL 235.903125 138.824685 \n\" clip-path=\"url(#p204033faea)\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_3\">\n <path d=\"M 40.603125 145.8 \nL 40.603125 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 235.903125 145.8 \nL 235.903125 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 40.603125 145.8 \nL 235.903125 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 40.603125 7.2 \nL 235.903125 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 173.628125 29.878125 \nL 228.903125 29.878125 \nQ 230.903125 29.878125 230.903125 27.878125 \nL 230.903125 14.2 \nQ 230.903125 12.2 228.903125 12.2 \nL 173.628125 12.2 \nQ 171.628125 12.2 171.628125 14.2 \nL 171.628125 27.878125 \nQ 171.628125 29.878125 173.628125 29.878125 \nz\n\" style=\"opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter\"/>\n </g>\n <g id=\"line2d_22\">\n <path d=\"M 175.628125 20.298438 \nL 185.628125 20.298438 \nL 195.628125 20.298438 \n\" style=\"fill: none; stroke: #8dd3c7; stroke-width: 1.5; stroke-linecap: square\"/>\n </g>\n <g id=\"text_13\">\n <!-- train -->\n <g style=\"fill: #ffffff\" transform=\"translate(203.628125 23.798438) 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-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 </defs>\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"80.322266\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"141.601562\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"169.384766\"/>\n </g>\n </g>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"p204033faea\">\n <rect x=\"40.603125\" 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": 152
},
{
"metadata": {},
"cell_type": "code",
"outputs": [],
"execution_count": null,
"source": "",
"id": "adda23bc3664ec6b"
}
],
"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
}