Files
machine-learning/07_convolution/07_modern_cnn.ipynb
T
2024-09-25 18:29:02 +08:00

7853 lines
307 KiB
Plaintext
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": "markdown",
"id": "255f7fbf-617f-40da-a338-d3f8fc5a0e92",
"metadata": {},
"source": [
"# 现代卷积神经网络\n",
"\n",
"目录\n",
"\n",
"- 深度卷积神经网络(AlexNet)\n",
"- 使用块的网络(VGG)\n",
"- 网络中的网络(NiN)\n",
"- 含并行连结的网络(GoogLeNet)\n",
"- 批量规范化\n",
"- 残差网络(ResNet)"
]
},
{
"cell_type": "markdown",
"id": "3955813c-8792-42ae-af95-d88448189353",
"metadata": {
"jp-MarkdownHeadingCollapsed": true,
"slideshow": {
"slide_type": "-"
},
"tags": []
},
"source": [
"## 深度卷积神经网络(AlexNet)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "250437f3-532a-4eb2-9ed5-fed19a106e15",
"metadata": {
"origin_pos": 2,
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"import torch\n",
"from torch import nn\n",
"from d2l import torch as d2l\n",
"\n",
"net = nn.Sequential(\n",
" # 这里,我们使用一个11*11的更大窗口来捕捉对象。\n",
" # 同时,步幅为4,以减少输出的高度和宽度。\n",
" # 另外,输出通道的数目远大于LeNet\n",
" nn.Conv2d(1, 96, kernel_size=11, stride=4, padding=1), nn.ReLU(),\n",
" nn.MaxPool2d(kernel_size=3, stride=2),\n",
" # 减小卷积窗口,使用填充为2来使得输入与输出的高和宽一致,且增大输出通道数\n",
" nn.Conv2d(96, 256, kernel_size=5, padding=2), nn.ReLU(),\n",
" nn.MaxPool2d(kernel_size=3, stride=2),\n",
" # 使用三个连续的卷积层和较小的卷积窗口。\n",
" # 除了最后的卷积层,输出通道的数量进一步增加。\n",
" # 在前两个卷积层之后,汇聚层不用于减少输入的高度和宽度\n",
" nn.Conv2d(256, 384, kernel_size=3, padding=1), nn.ReLU(),\n",
" nn.Conv2d(384, 384, kernel_size=3, padding=1), nn.ReLU(),\n",
" nn.Conv2d(384, 256, kernel_size=3, padding=1), nn.ReLU(),\n",
" nn.MaxPool2d(kernel_size=3, stride=2),\n",
" nn.Flatten(),\n",
" # 这里,全连接层的输出数量是LeNet中的好几倍。使用dropout层来减轻过拟合\n",
" nn.Linear(6400, 4096), nn.ReLU(),\n",
" nn.Dropout(p=0.5),\n",
" nn.Linear(4096, 4096), nn.ReLU(),\n",
" nn.Dropout(p=0.5),\n",
" # 最后是输出层。由于这里使用Fashion-MNIST,所以用类别数为10,而非论文中的1000\n",
" nn.Linear(4096, 10))"
]
},
{
"cell_type": "markdown",
"id": "9a6f3671-6eb9-44c3-bfe4-fd01bcfa2805",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"我们构造一个\n",
"单通道数据,来观察每一层输出的形状"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "96608413-913b-4dfe-8f23-9ffce9ea0582",
"metadata": {
"origin_pos": 6,
"tab": [
"pytorch"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Conv2d output shape:\t torch.Size([1, 96, 54, 54])\n",
"ReLU output shape:\t torch.Size([1, 96, 54, 54])\n",
"MaxPool2d output shape:\t torch.Size([1, 96, 26, 26])\n",
"Conv2d output shape:\t torch.Size([1, 256, 26, 26])\n",
"ReLU output shape:\t torch.Size([1, 256, 26, 26])\n",
"MaxPool2d output shape:\t torch.Size([1, 256, 12, 12])\n",
"Conv2d output shape:\t torch.Size([1, 384, 12, 12])\n",
"ReLU output shape:\t torch.Size([1, 384, 12, 12])\n",
"Conv2d output shape:\t torch.Size([1, 384, 12, 12])\n",
"ReLU output shape:\t torch.Size([1, 384, 12, 12])\n",
"Conv2d output shape:\t torch.Size([1, 256, 12, 12])\n",
"ReLU output shape:\t torch.Size([1, 256, 12, 12])\n",
"MaxPool2d output shape:\t torch.Size([1, 256, 5, 5])\n",
"Flatten output shape:\t torch.Size([1, 6400])\n",
"Linear output shape:\t torch.Size([1, 4096])\n",
"ReLU output shape:\t torch.Size([1, 4096])\n",
"Dropout output shape:\t torch.Size([1, 4096])\n",
"Linear output shape:\t torch.Size([1, 4096])\n",
"ReLU output shape:\t torch.Size([1, 4096])\n",
"Dropout output shape:\t torch.Size([1, 4096])\n",
"Linear output shape:\t torch.Size([1, 10])\n"
]
}
],
"source": [
"X = torch.randn(1, 1, 224, 224)\n",
"for layer in net:\n",
" X=layer(X)\n",
" print(layer.__class__.__name__,'output shape:\\t',X.shape)"
]
},
{
"cell_type": "markdown",
"id": "356e7ffe-330d-48f9-ba76-3a54acddbeaa",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Fashion-MNIST图像的分辨率\n",
"低于ImageNet图像。\n",
"我们将它们增加到$224 \\times 224$"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "df2cf34a-9cd9-4384-a453-00043a33f530",
"metadata": {
"origin_pos": 9,
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"batch_size = 128\n",
"train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=224)"
]
},
{
"cell_type": "markdown",
"id": "0bc4d037-556d-4847-b154-19f265aa660c",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"训练AlexNet。注意:这里是欠拟合的标准曲线"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "967372e1-5db6-4762-a0d4-fc990ff5f0f7",
"metadata": {
"origin_pos": 11,
"scrolled": true,
"tab": [
"pytorch"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loss 0.333, train acc 0.878, test acc 0.878\n",
"1762.7 examples/sec on cuda:0\n"
]
},
{
"data": {
"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",
"<!-- Created with matplotlib (https://matplotlib.org/) -->\n",
"<svg height=\"180.65625pt\" version=\"1.1\" viewBox=\"0 0 238.965625 180.65625\" width=\"238.965625pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
" <metadata>\n",
" <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" 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>2022-03-21T08:52:06.634916</dc:date>\n",
" <dc:format>image/svg+xml</dc:format>\n",
" <dc:creator>\n",
" <cc:Agent>\n",
" <dc:title>Matplotlib v3.3.3, 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-linecap:butt;stroke-linejoin:round;}</style>\n",
" </defs>\n",
" <g id=\"figure_1\">\n",
" <g id=\"patch_1\">\n",
" <path d=\"M 0 180.65625 \n",
"L 238.965625 180.65625 \n",
"L 238.965625 0 \n",
"L 0 0 \n",
"z\n",
"\" style=\"fill:none;\"/>\n",
" </g>\n",
" <g id=\"axes_1\">\n",
" <g id=\"patch_2\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"L 30.103125 7.2 \n",
"z\n",
"\" style=\"fill:#ffffff;\"/>\n",
" </g>\n",
" <g id=\"matplotlib.axis_1\">\n",
" <g id=\"xtick_1\">\n",
" <g id=\"line2d_1\">\n",
" <path clip-path=\"url(#p0a7ff4ecc5)\" d=\"M 51.803125 143.1 \n",
"L 51.803125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_2\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L 0 3.5 \n",
"\" id=\"m1daad97e4e\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"51.803125\" xlink:href=\"#m1daad97e4e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_1\">\n",
" <!-- 2 -->\n",
" <g transform=\"translate(48.621875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 19.1875 8.296875 \n",
"L 53.609375 8.296875 \n",
"L 53.609375 0 \n",
"L 7.328125 0 \n",
"L 7.328125 8.296875 \n",
"Q 12.9375 14.109375 22.625 23.890625 \n",
"Q 32.328125 33.6875 34.8125 36.53125 \n",
"Q 39.546875 41.84375 41.421875 45.53125 \n",
"Q 43.3125 49.21875 43.3125 52.78125 \n",
"Q 43.3125 58.59375 39.234375 62.25 \n",
"Q 35.15625 65.921875 28.609375 65.921875 \n",
"Q 23.96875 65.921875 18.8125 64.3125 \n",
"Q 13.671875 62.703125 7.8125 59.421875 \n",
"L 7.8125 69.390625 \n",
"Q 13.765625 71.78125 18.9375 73 \n",
"Q 24.125 74.21875 28.421875 74.21875 \n",
"Q 39.75 74.21875 46.484375 68.546875 \n",
"Q 53.21875 62.890625 53.21875 53.421875 \n",
"Q 53.21875 48.921875 51.53125 44.890625 \n",
"Q 49.859375 40.875 45.40625 35.40625 \n",
"Q 44.1875 33.984375 37.640625 27.21875 \n",
"Q 31.109375 20.453125 19.1875 8.296875 \n",
"z\n",
"\" id=\"DejaVuSans-50\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-50\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_2\">\n",
" <g id=\"line2d_3\">\n",
" <path clip-path=\"url(#p0a7ff4ecc5)\" d=\"M 95.203125 143.1 \n",
"L 95.203125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_4\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"95.203125\" xlink:href=\"#m1daad97e4e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_2\">\n",
" <!-- 4 -->\n",
" <g transform=\"translate(92.021875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 37.796875 64.3125 \n",
"L 12.890625 25.390625 \n",
"L 37.796875 25.390625 \n",
"z\n",
"M 35.203125 72.90625 \n",
"L 47.609375 72.90625 \n",
"L 47.609375 25.390625 \n",
"L 58.015625 25.390625 \n",
"L 58.015625 17.1875 \n",
"L 47.609375 17.1875 \n",
"L 47.609375 0 \n",
"L 37.796875 0 \n",
"L 37.796875 17.1875 \n",
"L 4.890625 17.1875 \n",
"L 4.890625 26.703125 \n",
"z\n",
"\" id=\"DejaVuSans-52\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-52\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_3\">\n",
" <g id=\"line2d_5\">\n",
" <path clip-path=\"url(#p0a7ff4ecc5)\" d=\"M 138.603125 143.1 \n",
"L 138.603125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_6\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"138.603125\" xlink:href=\"#m1daad97e4e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_3\">\n",
" <!-- 6 -->\n",
" <g transform=\"translate(135.421875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 33.015625 40.375 \n",
"Q 26.375 40.375 22.484375 35.828125 \n",
"Q 18.609375 31.296875 18.609375 23.390625 \n",
"Q 18.609375 15.53125 22.484375 10.953125 \n",
"Q 26.375 6.390625 33.015625 6.390625 \n",
"Q 39.65625 6.390625 43.53125 10.953125 \n",
"Q 47.40625 15.53125 47.40625 23.390625 \n",
"Q 47.40625 31.296875 43.53125 35.828125 \n",
"Q 39.65625 40.375 33.015625 40.375 \n",
"z\n",
"M 52.59375 71.296875 \n",
"L 52.59375 62.3125 \n",
"Q 48.875 64.0625 45.09375 64.984375 \n",
"Q 41.3125 65.921875 37.59375 65.921875 \n",
"Q 27.828125 65.921875 22.671875 59.328125 \n",
"Q 17.53125 52.734375 16.796875 39.40625 \n",
"Q 19.671875 43.65625 24.015625 45.921875 \n",
"Q 28.375 48.1875 33.59375 48.1875 \n",
"Q 44.578125 48.1875 50.953125 41.515625 \n",
"Q 57.328125 34.859375 57.328125 23.390625 \n",
"Q 57.328125 12.15625 50.6875 5.359375 \n",
"Q 44.046875 -1.421875 33.015625 -1.421875 \n",
"Q 20.359375 -1.421875 13.671875 8.265625 \n",
"Q 6.984375 17.96875 6.984375 36.375 \n",
"Q 6.984375 53.65625 15.1875 63.9375 \n",
"Q 23.390625 74.21875 37.203125 74.21875 \n",
"Q 40.921875 74.21875 44.703125 73.484375 \n",
"Q 48.484375 72.75 52.59375 71.296875 \n",
"z\n",
"\" id=\"DejaVuSans-54\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-54\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_4\">\n",
" <g id=\"line2d_7\">\n",
" <path clip-path=\"url(#p0a7ff4ecc5)\" d=\"M 182.003125 143.1 \n",
"L 182.003125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_8\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"182.003125\" xlink:href=\"#m1daad97e4e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_4\">\n",
" <!-- 8 -->\n",
" <g transform=\"translate(178.821875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 31.78125 34.625 \n",
"Q 24.75 34.625 20.71875 30.859375 \n",
"Q 16.703125 27.09375 16.703125 20.515625 \n",
"Q 16.703125 13.921875 20.71875 10.15625 \n",
"Q 24.75 6.390625 31.78125 6.390625 \n",
"Q 38.8125 6.390625 42.859375 10.171875 \n",
"Q 46.921875 13.96875 46.921875 20.515625 \n",
"Q 46.921875 27.09375 42.890625 30.859375 \n",
"Q 38.875 34.625 31.78125 34.625 \n",
"z\n",
"M 21.921875 38.8125 \n",
"Q 15.578125 40.375 12.03125 44.71875 \n",
"Q 8.5 49.078125 8.5 55.328125 \n",
"Q 8.5 64.0625 14.71875 69.140625 \n",
"Q 20.953125 74.21875 31.78125 74.21875 \n",
"Q 42.671875 74.21875 48.875 69.140625 \n",
"Q 55.078125 64.0625 55.078125 55.328125 \n",
"Q 55.078125 49.078125 51.53125 44.71875 \n",
"Q 48 40.375 41.703125 38.8125 \n",
"Q 48.828125 37.15625 52.796875 32.3125 \n",
"Q 56.78125 27.484375 56.78125 20.515625 \n",
"Q 56.78125 9.90625 50.3125 4.234375 \n",
"Q 43.84375 -1.421875 31.78125 -1.421875 \n",
"Q 19.734375 -1.421875 13.25 4.234375 \n",
"Q 6.78125 9.90625 6.78125 20.515625 \n",
"Q 6.78125 27.484375 10.78125 32.3125 \n",
"Q 14.796875 37.15625 21.921875 38.8125 \n",
"z\n",
"M 18.3125 54.390625 \n",
"Q 18.3125 48.734375 21.84375 45.5625 \n",
"Q 25.390625 42.390625 31.78125 42.390625 \n",
"Q 38.140625 42.390625 41.71875 45.5625 \n",
"Q 45.3125 48.734375 45.3125 54.390625 \n",
"Q 45.3125 60.0625 41.71875 63.234375 \n",
"Q 38.140625 66.40625 31.78125 66.40625 \n",
"Q 25.390625 66.40625 21.84375 63.234375 \n",
"Q 18.3125 60.0625 18.3125 54.390625 \n",
"z\n",
"\" id=\"DejaVuSans-56\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-56\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_5\">\n",
" <g id=\"line2d_9\">\n",
" <path clip-path=\"url(#p0a7ff4ecc5)\" d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_10\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"225.403125\" xlink:href=\"#m1daad97e4e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_5\">\n",
" <!-- 10 -->\n",
" <g transform=\"translate(219.040625 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 12.40625 8.296875 \n",
"L 28.515625 8.296875 \n",
"L 28.515625 63.921875 \n",
"L 10.984375 60.40625 \n",
"L 10.984375 69.390625 \n",
"L 28.421875 72.90625 \n",
"L 38.28125 72.90625 \n",
"L 38.28125 8.296875 \n",
"L 54.390625 8.296875 \n",
"L 54.390625 0 \n",
"L 12.40625 0 \n",
"z\n",
"\" id=\"DejaVuSans-49\"/>\n",
" <path d=\"M 31.78125 66.40625 \n",
"Q 24.171875 66.40625 20.328125 58.90625 \n",
"Q 16.5 51.421875 16.5 36.375 \n",
"Q 16.5 21.390625 20.328125 13.890625 \n",
"Q 24.171875 6.390625 31.78125 6.390625 \n",
"Q 39.453125 6.390625 43.28125 13.890625 \n",
"Q 47.125 21.390625 47.125 36.375 \n",
"Q 47.125 51.421875 43.28125 58.90625 \n",
"Q 39.453125 66.40625 31.78125 66.40625 \n",
"z\n",
"M 31.78125 74.21875 \n",
"Q 44.046875 74.21875 50.515625 64.515625 \n",
"Q 56.984375 54.828125 56.984375 36.375 \n",
"Q 56.984375 17.96875 50.515625 8.265625 \n",
"Q 44.046875 -1.421875 31.78125 -1.421875 \n",
"Q 19.53125 -1.421875 13.0625 8.265625 \n",
"Q 6.59375 17.96875 6.59375 36.375 \n",
"Q 6.59375 54.828125 13.0625 64.515625 \n",
"Q 19.53125 74.21875 31.78125 74.21875 \n",
"z\n",
"\" id=\"DejaVuSans-48\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_6\">\n",
" <!-- epoch -->\n",
" <g transform=\"translate(112.525 171.376563)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 56.203125 29.59375 \n",
"L 56.203125 25.203125 \n",
"L 14.890625 25.203125 \n",
"Q 15.484375 15.921875 20.484375 11.0625 \n",
"Q 25.484375 6.203125 34.421875 6.203125 \n",
"Q 39.59375 6.203125 44.453125 7.46875 \n",
"Q 49.3125 8.734375 54.109375 11.28125 \n",
"L 54.109375 2.78125 \n",
"Q 49.265625 0.734375 44.1875 -0.34375 \n",
"Q 39.109375 -1.421875 33.890625 -1.421875 \n",
"Q 20.796875 -1.421875 13.15625 6.1875 \n",
"Q 5.515625 13.8125 5.515625 26.8125 \n",
"Q 5.515625 40.234375 12.765625 48.109375 \n",
"Q 20.015625 56 32.328125 56 \n",
"Q 43.359375 56 49.78125 48.890625 \n",
"Q 56.203125 41.796875 56.203125 29.59375 \n",
"z\n",
"M 47.21875 32.234375 \n",
"Q 47.125 39.59375 43.09375 43.984375 \n",
"Q 39.0625 48.390625 32.421875 48.390625 \n",
"Q 24.90625 48.390625 20.390625 44.140625 \n",
"Q 15.875 39.890625 15.1875 32.171875 \n",
"z\n",
"\" id=\"DejaVuSans-101\"/>\n",
" <path d=\"M 18.109375 8.203125 \n",
"L 18.109375 -20.796875 \n",
"L 9.078125 -20.796875 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.390625 \n",
"Q 20.953125 51.265625 25.265625 53.625 \n",
"Q 29.59375 56 35.59375 56 \n",
"Q 45.5625 56 51.78125 48.09375 \n",
"Q 58.015625 40.1875 58.015625 27.296875 \n",
"Q 58.015625 14.40625 51.78125 6.484375 \n",
"Q 45.5625 -1.421875 35.59375 -1.421875 \n",
"Q 29.59375 -1.421875 25.265625 0.953125 \n",
"Q 20.953125 3.328125 18.109375 8.203125 \n",
"z\n",
"M 48.6875 27.296875 \n",
"Q 48.6875 37.203125 44.609375 42.84375 \n",
"Q 40.53125 48.484375 33.40625 48.484375 \n",
"Q 26.265625 48.484375 22.1875 42.84375 \n",
"Q 18.109375 37.203125 18.109375 27.296875 \n",
"Q 18.109375 17.390625 22.1875 11.75 \n",
"Q 26.265625 6.109375 33.40625 6.109375 \n",
"Q 40.53125 6.109375 44.609375 11.75 \n",
"Q 48.6875 17.390625 48.6875 27.296875 \n",
"z\n",
"\" id=\"DejaVuSans-112\"/>\n",
" <path d=\"M 30.609375 48.390625 \n",
"Q 23.390625 48.390625 19.1875 42.75 \n",
"Q 14.984375 37.109375 14.984375 27.296875 \n",
"Q 14.984375 17.484375 19.15625 11.84375 \n",
"Q 23.34375 6.203125 30.609375 6.203125 \n",
"Q 37.796875 6.203125 41.984375 11.859375 \n",
"Q 46.1875 17.53125 46.1875 27.296875 \n",
"Q 46.1875 37.015625 41.984375 42.703125 \n",
"Q 37.796875 48.390625 30.609375 48.390625 \n",
"z\n",
"M 30.609375 56 \n",
"Q 42.328125 56 49.015625 48.375 \n",
"Q 55.71875 40.765625 55.71875 27.296875 \n",
"Q 55.71875 13.875 49.015625 6.21875 \n",
"Q 42.328125 -1.421875 30.609375 -1.421875 \n",
"Q 18.84375 -1.421875 12.171875 6.21875 \n",
"Q 5.515625 13.875 5.515625 27.296875 \n",
"Q 5.515625 40.765625 12.171875 48.375 \n",
"Q 18.84375 56 30.609375 56 \n",
"z\n",
"\" id=\"DejaVuSans-111\"/>\n",
" <path d=\"M 48.78125 52.59375 \n",
"L 48.78125 44.1875 \n",
"Q 44.96875 46.296875 41.140625 47.34375 \n",
"Q 37.3125 48.390625 33.40625 48.390625 \n",
"Q 24.65625 48.390625 19.8125 42.84375 \n",
"Q 14.984375 37.3125 14.984375 27.296875 \n",
"Q 14.984375 17.28125 19.8125 11.734375 \n",
"Q 24.65625 6.203125 33.40625 6.203125 \n",
"Q 37.3125 6.203125 41.140625 7.25 \n",
"Q 44.96875 8.296875 48.78125 10.40625 \n",
"L 48.78125 2.09375 \n",
"Q 45.015625 0.34375 40.984375 -0.53125 \n",
"Q 36.96875 -1.421875 32.421875 -1.421875 \n",
"Q 20.0625 -1.421875 12.78125 6.34375 \n",
"Q 5.515625 14.109375 5.515625 27.296875 \n",
"Q 5.515625 40.671875 12.859375 48.328125 \n",
"Q 20.21875 56 33.015625 56 \n",
"Q 37.15625 56 41.109375 55.140625 \n",
"Q 45.0625 54.296875 48.78125 52.59375 \n",
"z\n",
"\" id=\"DejaVuSans-99\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 75.984375 \n",
"L 18.109375 75.984375 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-104\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"61.523438\" xlink:href=\"#DejaVuSans-112\"/>\n",
" <use x=\"125\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"186.181641\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"241.162109\" xlink:href=\"#DejaVuSans-104\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"matplotlib.axis_2\">\n",
" <g id=\"ytick_1\">\n",
" <g id=\"line2d_11\">\n",
" <path clip-path=\"url(#p0a7ff4ecc5)\" d=\"M 30.103125 116.028028 \n",
"L 225.403125 116.028028 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_12\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L -3.5 0 \n",
"\" id=\"mcaa51c1821\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mcaa51c1821\" y=\"116.028028\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_7\">\n",
" <!-- 0.5 -->\n",
" <g transform=\"translate(7.2 119.827247)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 10.6875 12.40625 \n",
"L 21 12.40625 \n",
"L 21 0 \n",
"L 10.6875 0 \n",
"z\n",
"\" id=\"DejaVuSans-46\"/>\n",
" <path d=\"M 10.796875 72.90625 \n",
"L 49.515625 72.90625 \n",
"L 49.515625 64.59375 \n",
"L 19.828125 64.59375 \n",
"L 19.828125 46.734375 \n",
"Q 21.96875 47.46875 24.109375 47.828125 \n",
"Q 26.265625 48.1875 28.421875 48.1875 \n",
"Q 40.625 48.1875 47.75 41.5 \n",
"Q 54.890625 34.8125 54.890625 23.390625 \n",
"Q 54.890625 11.625 47.5625 5.09375 \n",
"Q 40.234375 -1.421875 26.90625 -1.421875 \n",
"Q 22.3125 -1.421875 17.546875 -0.640625 \n",
"Q 12.796875 0.140625 7.71875 1.703125 \n",
"L 7.71875 11.625 \n",
"Q 12.109375 9.234375 16.796875 8.0625 \n",
"Q 21.484375 6.890625 26.703125 6.890625 \n",
"Q 35.15625 6.890625 40.078125 11.328125 \n",
"Q 45.015625 15.765625 45.015625 23.390625 \n",
"Q 45.015625 31 40.078125 35.4375 \n",
"Q 35.15625 39.890625 26.703125 39.890625 \n",
"Q 22.75 39.890625 18.8125 39.015625 \n",
"Q 14.890625 38.140625 10.796875 36.28125 \n",
"z\n",
"\" id=\"DejaVuSans-53\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_2\">\n",
" <g id=\"line2d_13\">\n",
" <path clip-path=\"url(#p0a7ff4ecc5)\" d=\"M 30.103125 87.359229 \n",
"L 225.403125 87.359229 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_14\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mcaa51c1821\" y=\"87.359229\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_8\">\n",
" <!-- 1.0 -->\n",
" <g transform=\"translate(7.2 91.158448)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_3\">\n",
" <g id=\"line2d_15\">\n",
" <path clip-path=\"url(#p0a7ff4ecc5)\" d=\"M 30.103125 58.69043 \n",
"L 225.403125 58.69043 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_16\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mcaa51c1821\" y=\"58.69043\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_9\">\n",
" <!-- 1.5 -->\n",
" <g transform=\"translate(7.2 62.489649)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_4\">\n",
" <g id=\"line2d_17\">\n",
" <path clip-path=\"url(#p0a7ff4ecc5)\" d=\"M 30.103125 30.021631 \n",
"L 225.403125 30.021631 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_18\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mcaa51c1821\" y=\"30.021631\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_10\">\n",
" <!-- 2.0 -->\n",
" <g transform=\"translate(7.2 33.82085)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-50\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_19\">\n",
" <path clip-path=\"url(#p0a7ff4ecc5)\" d=\"M 12.70611 13.377273 \n",
"L 17.009095 24.764826 \n",
"L 21.31208 43.256249 \n",
"L 25.615065 55.289226 \n",
"L 29.91805 63.752381 \n",
"L 30.103125 64.023204 \n",
"L 34.40611 102.900905 \n",
"L 38.709095 103.594664 \n",
"L 43.01208 104.844565 \n",
"L 47.315065 105.838462 \n",
"L 51.61805 106.642006 \n",
"L 51.803125 106.685119 \n",
"L 56.10611 111.344397 \n",
"L 60.409095 112.215739 \n",
"L 64.71208 112.295514 \n",
"L 69.015065 112.884077 \n",
"L 73.31805 113.223213 \n",
"L 73.503125 113.247833 \n",
"L 77.80611 115.698217 \n",
"L 82.109095 116.147146 \n",
"L 86.41208 116.459939 \n",
"L 90.715065 116.557436 \n",
"L 95.01805 116.985809 \n",
"L 95.203125 116.993757 \n",
"L 99.50611 118.348559 \n",
"L 103.809095 118.945744 \n",
"L 108.11208 119.027695 \n",
"L 112.415065 119.251031 \n",
"L 116.71805 119.534485 \n",
"L 116.903125 119.529998 \n",
"L 121.20611 120.913891 \n",
"L 125.509095 120.934154 \n",
"L 129.81208 121.197847 \n",
"L 134.115065 121.230586 \n",
"L 138.41805 121.411203 \n",
"L 138.603125 121.420621 \n",
"L 142.90611 122.46335 \n",
"L 147.209095 122.560513 \n",
"L 151.51208 122.644247 \n",
"L 155.815065 122.800532 \n",
"L 160.11805 122.808291 \n",
"L 160.303125 122.775911 \n",
"L 164.60611 122.948458 \n",
"L 168.909095 123.516091 \n",
"L 173.21208 123.786311 \n",
"L 177.515065 123.794336 \n",
"L 181.81805 123.840104 \n",
"L 182.003125 123.826488 \n",
"L 186.30611 124.659939 \n",
"L 190.609095 124.41778 \n",
"L 194.91208 124.612044 \n",
"L 199.215065 124.742309 \n",
"L 203.51805 124.865244 \n",
"L 203.703125 124.848429 \n",
"L 208.00611 125.053133 \n",
"L 212.309095 125.370505 \n",
"L 216.61208 125.483052 \n",
"L 220.915065 125.48916 \n",
"L 225.21805 125.577818 \n",
"L 225.403125 125.579251 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_20\">\n",
" <path clip-path=\"url(#p0a7ff4ecc5)\" d=\"M 12.70611 136.922727 \n",
"L 17.009095 131.701461 \n",
"L 21.31208 125.219833 \n",
"L 25.615065 120.72789 \n",
"L 29.91805 117.601151 \n",
"L 30.103125 117.511161 \n",
"L 34.40611 102.709945 \n",
"L 38.709095 102.753295 \n",
"L 43.01208 102.286078 \n",
"L 47.315065 101.877866 \n",
"L 51.61805 101.603075 \n",
"L 51.803125 101.594243 \n",
"L 56.10611 99.829579 \n",
"L 60.409095 99.52372 \n",
"L 64.71208 99.45709 \n",
"L 69.015065 99.221474 \n",
"L 73.31805 99.047352 \n",
"L 73.503125 99.039853 \n",
"L 77.80611 98.153379 \n",
"L 82.109095 97.849929 \n",
"L 86.41208 97.835479 \n",
"L 90.715065 97.752391 \n",
"L 95.01805 97.610059 \n",
"L 95.203125 97.614058 \n",
"L 99.50611 96.886595 \n",
"L 103.809095 96.783037 \n",
"L 108.11208 96.703562 \n",
"L 112.415065 96.644558 \n",
"L 116.71805 96.566769 \n",
"L 116.903125 96.56478 \n",
"L 121.20611 96.038862 \n",
"L 125.509095 96.058129 \n",
"L 129.81208 95.936106 \n",
"L 134.115065 95.943733 \n",
"L 138.41805 95.898215 \n",
"L 138.603125 95.896797 \n",
"L 142.90611 95.446412 \n",
"L 147.209095 95.371754 \n",
"L 151.51208 95.354895 \n",
"L 155.815065 95.34165 \n",
"L 160.11805 95.347189 \n",
"L 160.303125 95.356868 \n",
"L 164.60611 95.417512 \n",
"L 168.909095 95.205579 \n",
"L 173.21208 95.09319 \n",
"L 177.515065 94.999666 \n",
"L 181.81805 94.966672 \n",
"L 182.003125 94.971751 \n",
"L 186.30611 94.738362 \n",
"L 190.609095 94.820245 \n",
"L 194.91208 94.783318 \n",
"L 199.215065 94.739566 \n",
"L 203.51805 94.667075 \n",
"L 203.703125 94.671684 \n",
"L 208.00611 94.564962 \n",
"L 212.309095 94.40842 \n",
"L 216.61208 94.44294 \n",
"L 220.915065 94.418054 \n",
"L 225.21805 94.350139 \n",
"L 225.403125 94.350593 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_21\">\n",
" <path clip-path=\"url(#p0a7ff4ecc5)\" d=\"M 30.103125 105.741663 \n",
"L 51.803125 98.993028 \n",
"L 73.503125 97.725867 \n",
"L 95.203125 96.46444 \n",
"L 116.903125 96.349764 \n",
"L 138.603125 95.741986 \n",
"L 160.303125 95.042467 \n",
"L 182.003125 94.899123 \n",
"L 203.703125 95.271817 \n",
"L 225.403125 94.331481 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"patch_3\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 30.103125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_4\">\n",
" <path d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_5\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_6\">\n",
" <path d=\"M 30.103125 7.2 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"legend_1\">\n",
" <g id=\"patch_7\">\n",
" <path d=\"M 140.634375 59.234375 \n",
"L 218.403125 59.234375 \n",
"Q 220.403125 59.234375 220.403125 57.234375 \n",
"L 220.403125 14.2 \n",
"Q 220.403125 12.2 218.403125 12.2 \n",
"L 140.634375 12.2 \n",
"Q 138.634375 12.2 138.634375 14.2 \n",
"L 138.634375 57.234375 \n",
"Q 138.634375 59.234375 140.634375 59.234375 \n",
"z\n",
"\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\n",
" </g>\n",
" <g id=\"line2d_22\">\n",
" <path d=\"M 142.634375 20.298438 \n",
"L 162.634375 20.298438 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_23\"/>\n",
" <g id=\"text_11\">\n",
" <!-- train loss -->\n",
" <g transform=\"translate(170.634375 23.798438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 18.3125 70.21875 \n",
"L 18.3125 54.6875 \n",
"L 36.8125 54.6875 \n",
"L 36.8125 47.703125 \n",
"L 18.3125 47.703125 \n",
"L 18.3125 18.015625 \n",
"Q 18.3125 11.328125 20.140625 9.421875 \n",
"Q 21.96875 7.515625 27.59375 7.515625 \n",
"L 36.8125 7.515625 \n",
"L 36.8125 0 \n",
"L 27.59375 0 \n",
"Q 17.1875 0 13.234375 3.875 \n",
"Q 9.28125 7.765625 9.28125 18.015625 \n",
"L 9.28125 47.703125 \n",
"L 2.6875 47.703125 \n",
"L 2.6875 54.6875 \n",
"L 9.28125 54.6875 \n",
"L 9.28125 70.21875 \n",
"z\n",
"\" id=\"DejaVuSans-116\"/>\n",
" <path d=\"M 41.109375 46.296875 \n",
"Q 39.59375 47.171875 37.8125 47.578125 \n",
"Q 36.03125 48 33.890625 48 \n",
"Q 26.265625 48 22.1875 43.046875 \n",
"Q 18.109375 38.09375 18.109375 28.8125 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 20.953125 51.171875 25.484375 53.578125 \n",
"Q 30.03125 56 36.53125 56 \n",
"Q 37.453125 56 38.578125 55.875 \n",
"Q 39.703125 55.765625 41.0625 55.515625 \n",
"z\n",
"\" id=\"DejaVuSans-114\"/>\n",
" <path d=\"M 34.28125 27.484375 \n",
"Q 23.390625 27.484375 19.1875 25 \n",
"Q 14.984375 22.515625 14.984375 16.5 \n",
"Q 14.984375 11.71875 18.140625 8.90625 \n",
"Q 21.296875 6.109375 26.703125 6.109375 \n",
"Q 34.1875 6.109375 38.703125 11.40625 \n",
"Q 43.21875 16.703125 43.21875 25.484375 \n",
"L 43.21875 27.484375 \n",
"z\n",
"M 52.203125 31.203125 \n",
"L 52.203125 0 \n",
"L 43.21875 0 \n",
"L 43.21875 8.296875 \n",
"Q 40.140625 3.328125 35.546875 0.953125 \n",
"Q 30.953125 -1.421875 24.3125 -1.421875 \n",
"Q 15.921875 -1.421875 10.953125 3.296875 \n",
"Q 6 8.015625 6 15.921875 \n",
"Q 6 25.140625 12.171875 29.828125 \n",
"Q 18.359375 34.515625 30.609375 34.515625 \n",
"L 43.21875 34.515625 \n",
"L 43.21875 35.40625 \n",
"Q 43.21875 41.609375 39.140625 45 \n",
"Q 35.0625 48.390625 27.6875 48.390625 \n",
"Q 23 48.390625 18.546875 47.265625 \n",
"Q 14.109375 46.140625 10.015625 43.890625 \n",
"L 10.015625 52.203125 \n",
"Q 14.9375 54.109375 19.578125 55.046875 \n",
"Q 24.21875 56 28.609375 56 \n",
"Q 40.484375 56 46.34375 49.84375 \n",
"Q 52.203125 43.703125 52.203125 31.203125 \n",
"z\n",
"\" id=\"DejaVuSans-97\"/>\n",
" <path d=\"M 9.421875 54.6875 \n",
"L 18.40625 54.6875 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 64.59375 \n",
"L 9.421875 64.59375 \n",
"z\n",
"\" id=\"DejaVuSans-105\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-110\"/>\n",
" <path id=\"DejaVuSans-32\"/>\n",
" <path d=\"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"\" id=\"DejaVuSans-108\"/>\n",
" <path d=\"M 44.28125 53.078125 \n",
"L 44.28125 44.578125 \n",
"Q 40.484375 46.53125 36.375 47.5 \n",
"Q 32.28125 48.484375 27.875 48.484375 \n",
"Q 21.1875 48.484375 17.84375 46.4375 \n",
"Q 14.5 44.390625 14.5 40.28125 \n",
"Q 14.5 37.15625 16.890625 35.375 \n",
"Q 19.28125 33.59375 26.515625 31.984375 \n",
"L 29.59375 31.296875 \n",
"Q 39.15625 29.25 43.1875 25.515625 \n",
"Q 47.21875 21.78125 47.21875 15.09375 \n",
"Q 47.21875 7.46875 41.1875 3.015625 \n",
"Q 35.15625 -1.421875 24.609375 -1.421875 \n",
"Q 20.21875 -1.421875 15.453125 -0.5625 \n",
"Q 10.6875 0.296875 5.421875 2 \n",
"L 5.421875 11.28125 \n",
"Q 10.40625 8.6875 15.234375 7.390625 \n",
"Q 20.0625 6.109375 24.8125 6.109375 \n",
"Q 31.15625 6.109375 34.5625 8.28125 \n",
"Q 37.984375 10.453125 37.984375 14.40625 \n",
"Q 37.984375 18.0625 35.515625 20.015625 \n",
"Q 33.0625 21.96875 24.703125 23.78125 \n",
"L 21.578125 24.515625 \n",
"Q 13.234375 26.265625 9.515625 29.90625 \n",
"Q 5.8125 33.546875 5.8125 39.890625 \n",
"Q 5.8125 47.609375 11.28125 51.796875 \n",
"Q 16.75 56 26.8125 56 \n",
"Q 31.78125 56 36.171875 55.265625 \n",
"Q 40.578125 54.546875 44.28125 53.078125 \n",
"z\n",
"\" id=\"DejaVuSans-115\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-108\"/>\n",
" <use x=\"292.333984\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"353.515625\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"405.615234\" xlink:href=\"#DejaVuSans-115\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_24\">\n",
" <path d=\"M 142.634375 34.976562 \n",
"L 162.634375 34.976562 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_25\"/>\n",
" <g id=\"text_12\">\n",
" <!-- train acc -->\n",
" <g transform=\"translate(170.634375 38.476562)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"325.830078\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"380.810547\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_26\">\n",
" <path d=\"M 142.634375 49.654688 \n",
"L 162.634375 49.654688 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_27\"/>\n",
" <g id=\"text_13\">\n",
" <!-- test acc -->\n",
" <g transform=\"translate(170.634375 53.154688)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"100.732422\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"152.832031\" xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"192.041016\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"223.828125\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"285.107422\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"340.087891\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"p0a7ff4ecc5\">\n",
" <rect height=\"135.9\" width=\"195.3\" x=\"30.103125\" y=\"7.2\"/>\n",
" </clipPath>\n",
" </defs>\n",
"</svg>\n"
],
"text/plain": [
"<Figure size 252x180 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"lr, num_epochs = 0.01, 10\n",
"d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())"
]
},
{
"cell_type": "markdown",
"id": "fc1d1ce8-9b00-4b87-9ff1-177da5ee139d",
"metadata": {
"jp-MarkdownHeadingCollapsed": true,
"slideshow": {
"slide_type": "-"
},
"tags": []
},
"source": [
"## 使用块的网络(VGG)\n",
"\n",
"VGG块"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "cf0cb392-48d9-451d-a7ea-e1892865657d",
"metadata": {
"origin_pos": 4,
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"import torch\n",
"from torch import nn\n",
"from d2l import torch as d2l\n",
"\n",
"\n",
"def vgg_block(num_convs, in_channels, out_channels):\n",
" layers = []\n",
" for _ in range(num_convs):\n",
" layers.append(nn.Conv2d(in_channels, out_channels,\n",
" kernel_size=3, padding=1))\n",
" layers.append(nn.ReLU())\n",
" in_channels = out_channels\n",
" layers.append(nn.MaxPool2d(kernel_size=2,stride=2))\n",
" return nn.Sequential(*layers)"
]
},
{
"cell_type": "markdown",
"id": "e40a3ce9-5838-491c-b02a-d4f626c5f024",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"VGG网络\n",
"\n",
"原始VGG网络有5个卷积块,其中前两个块各有一个卷积层,后三个块各包含两个卷积层。 第一个模块有64个输出通道,每个后续模块将输出通道数量翻倍,直到该数字达到512。由于该网络使用8个卷积层和3个全连接层,因此它通常被称为VGG-11。"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "aad71cf3-3c74-4162-bf78-b5b2e313cf65",
"metadata": {
"origin_pos": 10,
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"conv_arch = ((1, 64), (1, 128), (2, 256), (2, 512), (2, 512))"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "df9c3499-e926-4821-8136-e66baf433731",
"metadata": {
"origin_pos": 10,
"slideshow": {
"slide_type": "slide"
},
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"def vgg(conv_arch):\n",
" conv_blks = []\n",
" in_channels = 1\n",
" for (num_convs, out_channels) in conv_arch:\n",
" conv_blks.append(vgg_block(num_convs, in_channels, out_channels))\n",
" in_channels = out_channels\n",
"\n",
" return nn.Sequential(\n",
" *conv_blks, nn.Flatten(),\n",
" nn.Linear(out_channels * 7 * 7, 4096), nn.ReLU(), nn.Dropout(0.5),\n",
" nn.Linear(4096, 4096), nn.ReLU(), nn.Dropout(0.5),\n",
" nn.Linear(4096, 10))\n",
"\n",
"net = vgg(conv_arch)"
]
},
{
"cell_type": "markdown",
"id": "18ceef7a-71d8-4eab-b340-c0848b4675b6",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"观察每个层输出的形状"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "20065462-d243-406d-919e-5af13f73c088",
"metadata": {
"origin_pos": 14,
"tab": [
"pytorch"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sequential output shape:\t torch.Size([1, 64, 112, 112])\n",
"Sequential output shape:\t torch.Size([1, 128, 56, 56])\n",
"Sequential output shape:\t torch.Size([1, 256, 28, 28])\n",
"Sequential output shape:\t torch.Size([1, 512, 14, 14])\n",
"Sequential output shape:\t torch.Size([1, 512, 7, 7])\n",
"Flatten output shape:\t torch.Size([1, 25088])\n",
"Linear output shape:\t torch.Size([1, 4096])\n",
"ReLU output shape:\t torch.Size([1, 4096])\n",
"Dropout output shape:\t torch.Size([1, 4096])\n",
"Linear output shape:\t torch.Size([1, 4096])\n",
"ReLU output shape:\t torch.Size([1, 4096])\n",
"Dropout output shape:\t torch.Size([1, 4096])\n",
"Linear output shape:\t torch.Size([1, 10])\n"
]
}
],
"source": [
"X = torch.randn(size=(1, 1, 224, 224))\n",
"for blk in net:\n",
" X = blk(X)\n",
" print(blk.__class__.__name__,'output shape:\\t',X.shape)"
]
},
{
"cell_type": "markdown",
"id": "49d25e85-676d-4b59-8148-58596e407411",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"由于VGG-11比AlexNet计算量更大,因此我们构建了一个通道数较少的网络"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "286b6e79-ca57-4ac4-b018-e64a210dd88e",
"metadata": {
"origin_pos": 17,
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"ratio = 4\n",
"small_conv_arch = [(pair[0], pair[1] // ratio) for pair in conv_arch]\n",
"net = vgg(small_conv_arch)"
]
},
{
"cell_type": "markdown",
"id": "0e9ec14c-f318-4c0e-969c-4a17e9ec09a7",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"模型训练。仔细观察:这里出现了过拟合"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "e986bb65-7c5f-4402-af8d-55ccc4760662",
"metadata": {
"origin_pos": 20,
"tab": [
"pytorch"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loss 0.172, train acc 0.936, test acc 0.914\n",
"1119.5 examples/sec on cuda:0\n"
]
},
{
"data": {
"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",
"<!-- Created with matplotlib (https://matplotlib.org/) -->\n",
"<svg height=\"180.65625pt\" version=\"1.1\" viewBox=\"0 0 238.965625 180.65625\" width=\"238.965625pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
" <metadata>\n",
" <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" 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>2022-03-21T09:16:51.006260</dc:date>\n",
" <dc:format>image/svg+xml</dc:format>\n",
" <dc:creator>\n",
" <cc:Agent>\n",
" <dc:title>Matplotlib v3.3.3, 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-linecap:butt;stroke-linejoin:round;}</style>\n",
" </defs>\n",
" <g id=\"figure_1\">\n",
" <g id=\"patch_1\">\n",
" <path d=\"M 0 180.65625 \n",
"L 238.965625 180.65625 \n",
"L 238.965625 0 \n",
"L 0 0 \n",
"z\n",
"\" style=\"fill:none;\"/>\n",
" </g>\n",
" <g id=\"axes_1\">\n",
" <g id=\"patch_2\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"L 30.103125 7.2 \n",
"z\n",
"\" style=\"fill:#ffffff;\"/>\n",
" </g>\n",
" <g id=\"matplotlib.axis_1\">\n",
" <g id=\"xtick_1\">\n",
" <g id=\"line2d_1\">\n",
" <path clip-path=\"url(#p5d9e137dd0)\" d=\"M 51.803125 143.1 \n",
"L 51.803125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_2\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L 0 3.5 \n",
"\" id=\"m065c34e360\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"51.803125\" xlink:href=\"#m065c34e360\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_1\">\n",
" <!-- 2 -->\n",
" <g transform=\"translate(48.621875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 19.1875 8.296875 \n",
"L 53.609375 8.296875 \n",
"L 53.609375 0 \n",
"L 7.328125 0 \n",
"L 7.328125 8.296875 \n",
"Q 12.9375 14.109375 22.625 23.890625 \n",
"Q 32.328125 33.6875 34.8125 36.53125 \n",
"Q 39.546875 41.84375 41.421875 45.53125 \n",
"Q 43.3125 49.21875 43.3125 52.78125 \n",
"Q 43.3125 58.59375 39.234375 62.25 \n",
"Q 35.15625 65.921875 28.609375 65.921875 \n",
"Q 23.96875 65.921875 18.8125 64.3125 \n",
"Q 13.671875 62.703125 7.8125 59.421875 \n",
"L 7.8125 69.390625 \n",
"Q 13.765625 71.78125 18.9375 73 \n",
"Q 24.125 74.21875 28.421875 74.21875 \n",
"Q 39.75 74.21875 46.484375 68.546875 \n",
"Q 53.21875 62.890625 53.21875 53.421875 \n",
"Q 53.21875 48.921875 51.53125 44.890625 \n",
"Q 49.859375 40.875 45.40625 35.40625 \n",
"Q 44.1875 33.984375 37.640625 27.21875 \n",
"Q 31.109375 20.453125 19.1875 8.296875 \n",
"z\n",
"\" id=\"DejaVuSans-50\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-50\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_2\">\n",
" <g id=\"line2d_3\">\n",
" <path clip-path=\"url(#p5d9e137dd0)\" d=\"M 95.203125 143.1 \n",
"L 95.203125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_4\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"95.203125\" xlink:href=\"#m065c34e360\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_2\">\n",
" <!-- 4 -->\n",
" <g transform=\"translate(92.021875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 37.796875 64.3125 \n",
"L 12.890625 25.390625 \n",
"L 37.796875 25.390625 \n",
"z\n",
"M 35.203125 72.90625 \n",
"L 47.609375 72.90625 \n",
"L 47.609375 25.390625 \n",
"L 58.015625 25.390625 \n",
"L 58.015625 17.1875 \n",
"L 47.609375 17.1875 \n",
"L 47.609375 0 \n",
"L 37.796875 0 \n",
"L 37.796875 17.1875 \n",
"L 4.890625 17.1875 \n",
"L 4.890625 26.703125 \n",
"z\n",
"\" id=\"DejaVuSans-52\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-52\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_3\">\n",
" <g id=\"line2d_5\">\n",
" <path clip-path=\"url(#p5d9e137dd0)\" d=\"M 138.603125 143.1 \n",
"L 138.603125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_6\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"138.603125\" xlink:href=\"#m065c34e360\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_3\">\n",
" <!-- 6 -->\n",
" <g transform=\"translate(135.421875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 33.015625 40.375 \n",
"Q 26.375 40.375 22.484375 35.828125 \n",
"Q 18.609375 31.296875 18.609375 23.390625 \n",
"Q 18.609375 15.53125 22.484375 10.953125 \n",
"Q 26.375 6.390625 33.015625 6.390625 \n",
"Q 39.65625 6.390625 43.53125 10.953125 \n",
"Q 47.40625 15.53125 47.40625 23.390625 \n",
"Q 47.40625 31.296875 43.53125 35.828125 \n",
"Q 39.65625 40.375 33.015625 40.375 \n",
"z\n",
"M 52.59375 71.296875 \n",
"L 52.59375 62.3125 \n",
"Q 48.875 64.0625 45.09375 64.984375 \n",
"Q 41.3125 65.921875 37.59375 65.921875 \n",
"Q 27.828125 65.921875 22.671875 59.328125 \n",
"Q 17.53125 52.734375 16.796875 39.40625 \n",
"Q 19.671875 43.65625 24.015625 45.921875 \n",
"Q 28.375 48.1875 33.59375 48.1875 \n",
"Q 44.578125 48.1875 50.953125 41.515625 \n",
"Q 57.328125 34.859375 57.328125 23.390625 \n",
"Q 57.328125 12.15625 50.6875 5.359375 \n",
"Q 44.046875 -1.421875 33.015625 -1.421875 \n",
"Q 20.359375 -1.421875 13.671875 8.265625 \n",
"Q 6.984375 17.96875 6.984375 36.375 \n",
"Q 6.984375 53.65625 15.1875 63.9375 \n",
"Q 23.390625 74.21875 37.203125 74.21875 \n",
"Q 40.921875 74.21875 44.703125 73.484375 \n",
"Q 48.484375 72.75 52.59375 71.296875 \n",
"z\n",
"\" id=\"DejaVuSans-54\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-54\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_4\">\n",
" <g id=\"line2d_7\">\n",
" <path clip-path=\"url(#p5d9e137dd0)\" d=\"M 182.003125 143.1 \n",
"L 182.003125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_8\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"182.003125\" xlink:href=\"#m065c34e360\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_4\">\n",
" <!-- 8 -->\n",
" <g transform=\"translate(178.821875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 31.78125 34.625 \n",
"Q 24.75 34.625 20.71875 30.859375 \n",
"Q 16.703125 27.09375 16.703125 20.515625 \n",
"Q 16.703125 13.921875 20.71875 10.15625 \n",
"Q 24.75 6.390625 31.78125 6.390625 \n",
"Q 38.8125 6.390625 42.859375 10.171875 \n",
"Q 46.921875 13.96875 46.921875 20.515625 \n",
"Q 46.921875 27.09375 42.890625 30.859375 \n",
"Q 38.875 34.625 31.78125 34.625 \n",
"z\n",
"M 21.921875 38.8125 \n",
"Q 15.578125 40.375 12.03125 44.71875 \n",
"Q 8.5 49.078125 8.5 55.328125 \n",
"Q 8.5 64.0625 14.71875 69.140625 \n",
"Q 20.953125 74.21875 31.78125 74.21875 \n",
"Q 42.671875 74.21875 48.875 69.140625 \n",
"Q 55.078125 64.0625 55.078125 55.328125 \n",
"Q 55.078125 49.078125 51.53125 44.71875 \n",
"Q 48 40.375 41.703125 38.8125 \n",
"Q 48.828125 37.15625 52.796875 32.3125 \n",
"Q 56.78125 27.484375 56.78125 20.515625 \n",
"Q 56.78125 9.90625 50.3125 4.234375 \n",
"Q 43.84375 -1.421875 31.78125 -1.421875 \n",
"Q 19.734375 -1.421875 13.25 4.234375 \n",
"Q 6.78125 9.90625 6.78125 20.515625 \n",
"Q 6.78125 27.484375 10.78125 32.3125 \n",
"Q 14.796875 37.15625 21.921875 38.8125 \n",
"z\n",
"M 18.3125 54.390625 \n",
"Q 18.3125 48.734375 21.84375 45.5625 \n",
"Q 25.390625 42.390625 31.78125 42.390625 \n",
"Q 38.140625 42.390625 41.71875 45.5625 \n",
"Q 45.3125 48.734375 45.3125 54.390625 \n",
"Q 45.3125 60.0625 41.71875 63.234375 \n",
"Q 38.140625 66.40625 31.78125 66.40625 \n",
"Q 25.390625 66.40625 21.84375 63.234375 \n",
"Q 18.3125 60.0625 18.3125 54.390625 \n",
"z\n",
"\" id=\"DejaVuSans-56\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-56\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_5\">\n",
" <g id=\"line2d_9\">\n",
" <path clip-path=\"url(#p5d9e137dd0)\" d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_10\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"225.403125\" xlink:href=\"#m065c34e360\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_5\">\n",
" <!-- 10 -->\n",
" <g transform=\"translate(219.040625 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 12.40625 8.296875 \n",
"L 28.515625 8.296875 \n",
"L 28.515625 63.921875 \n",
"L 10.984375 60.40625 \n",
"L 10.984375 69.390625 \n",
"L 28.421875 72.90625 \n",
"L 38.28125 72.90625 \n",
"L 38.28125 8.296875 \n",
"L 54.390625 8.296875 \n",
"L 54.390625 0 \n",
"L 12.40625 0 \n",
"z\n",
"\" id=\"DejaVuSans-49\"/>\n",
" <path d=\"M 31.78125 66.40625 \n",
"Q 24.171875 66.40625 20.328125 58.90625 \n",
"Q 16.5 51.421875 16.5 36.375 \n",
"Q 16.5 21.390625 20.328125 13.890625 \n",
"Q 24.171875 6.390625 31.78125 6.390625 \n",
"Q 39.453125 6.390625 43.28125 13.890625 \n",
"Q 47.125 21.390625 47.125 36.375 \n",
"Q 47.125 51.421875 43.28125 58.90625 \n",
"Q 39.453125 66.40625 31.78125 66.40625 \n",
"z\n",
"M 31.78125 74.21875 \n",
"Q 44.046875 74.21875 50.515625 64.515625 \n",
"Q 56.984375 54.828125 56.984375 36.375 \n",
"Q 56.984375 17.96875 50.515625 8.265625 \n",
"Q 44.046875 -1.421875 31.78125 -1.421875 \n",
"Q 19.53125 -1.421875 13.0625 8.265625 \n",
"Q 6.59375 17.96875 6.59375 36.375 \n",
"Q 6.59375 54.828125 13.0625 64.515625 \n",
"Q 19.53125 74.21875 31.78125 74.21875 \n",
"z\n",
"\" id=\"DejaVuSans-48\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_6\">\n",
" <!-- epoch -->\n",
" <g transform=\"translate(112.525 171.376563)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 56.203125 29.59375 \n",
"L 56.203125 25.203125 \n",
"L 14.890625 25.203125 \n",
"Q 15.484375 15.921875 20.484375 11.0625 \n",
"Q 25.484375 6.203125 34.421875 6.203125 \n",
"Q 39.59375 6.203125 44.453125 7.46875 \n",
"Q 49.3125 8.734375 54.109375 11.28125 \n",
"L 54.109375 2.78125 \n",
"Q 49.265625 0.734375 44.1875 -0.34375 \n",
"Q 39.109375 -1.421875 33.890625 -1.421875 \n",
"Q 20.796875 -1.421875 13.15625 6.1875 \n",
"Q 5.515625 13.8125 5.515625 26.8125 \n",
"Q 5.515625 40.234375 12.765625 48.109375 \n",
"Q 20.015625 56 32.328125 56 \n",
"Q 43.359375 56 49.78125 48.890625 \n",
"Q 56.203125 41.796875 56.203125 29.59375 \n",
"z\n",
"M 47.21875 32.234375 \n",
"Q 47.125 39.59375 43.09375 43.984375 \n",
"Q 39.0625 48.390625 32.421875 48.390625 \n",
"Q 24.90625 48.390625 20.390625 44.140625 \n",
"Q 15.875 39.890625 15.1875 32.171875 \n",
"z\n",
"\" id=\"DejaVuSans-101\"/>\n",
" <path d=\"M 18.109375 8.203125 \n",
"L 18.109375 -20.796875 \n",
"L 9.078125 -20.796875 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.390625 \n",
"Q 20.953125 51.265625 25.265625 53.625 \n",
"Q 29.59375 56 35.59375 56 \n",
"Q 45.5625 56 51.78125 48.09375 \n",
"Q 58.015625 40.1875 58.015625 27.296875 \n",
"Q 58.015625 14.40625 51.78125 6.484375 \n",
"Q 45.5625 -1.421875 35.59375 -1.421875 \n",
"Q 29.59375 -1.421875 25.265625 0.953125 \n",
"Q 20.953125 3.328125 18.109375 8.203125 \n",
"z\n",
"M 48.6875 27.296875 \n",
"Q 48.6875 37.203125 44.609375 42.84375 \n",
"Q 40.53125 48.484375 33.40625 48.484375 \n",
"Q 26.265625 48.484375 22.1875 42.84375 \n",
"Q 18.109375 37.203125 18.109375 27.296875 \n",
"Q 18.109375 17.390625 22.1875 11.75 \n",
"Q 26.265625 6.109375 33.40625 6.109375 \n",
"Q 40.53125 6.109375 44.609375 11.75 \n",
"Q 48.6875 17.390625 48.6875 27.296875 \n",
"z\n",
"\" id=\"DejaVuSans-112\"/>\n",
" <path d=\"M 30.609375 48.390625 \n",
"Q 23.390625 48.390625 19.1875 42.75 \n",
"Q 14.984375 37.109375 14.984375 27.296875 \n",
"Q 14.984375 17.484375 19.15625 11.84375 \n",
"Q 23.34375 6.203125 30.609375 6.203125 \n",
"Q 37.796875 6.203125 41.984375 11.859375 \n",
"Q 46.1875 17.53125 46.1875 27.296875 \n",
"Q 46.1875 37.015625 41.984375 42.703125 \n",
"Q 37.796875 48.390625 30.609375 48.390625 \n",
"z\n",
"M 30.609375 56 \n",
"Q 42.328125 56 49.015625 48.375 \n",
"Q 55.71875 40.765625 55.71875 27.296875 \n",
"Q 55.71875 13.875 49.015625 6.21875 \n",
"Q 42.328125 -1.421875 30.609375 -1.421875 \n",
"Q 18.84375 -1.421875 12.171875 6.21875 \n",
"Q 5.515625 13.875 5.515625 27.296875 \n",
"Q 5.515625 40.765625 12.171875 48.375 \n",
"Q 18.84375 56 30.609375 56 \n",
"z\n",
"\" id=\"DejaVuSans-111\"/>\n",
" <path d=\"M 48.78125 52.59375 \n",
"L 48.78125 44.1875 \n",
"Q 44.96875 46.296875 41.140625 47.34375 \n",
"Q 37.3125 48.390625 33.40625 48.390625 \n",
"Q 24.65625 48.390625 19.8125 42.84375 \n",
"Q 14.984375 37.3125 14.984375 27.296875 \n",
"Q 14.984375 17.28125 19.8125 11.734375 \n",
"Q 24.65625 6.203125 33.40625 6.203125 \n",
"Q 37.3125 6.203125 41.140625 7.25 \n",
"Q 44.96875 8.296875 48.78125 10.40625 \n",
"L 48.78125 2.09375 \n",
"Q 45.015625 0.34375 40.984375 -0.53125 \n",
"Q 36.96875 -1.421875 32.421875 -1.421875 \n",
"Q 20.0625 -1.421875 12.78125 6.34375 \n",
"Q 5.515625 14.109375 5.515625 27.296875 \n",
"Q 5.515625 40.671875 12.859375 48.328125 \n",
"Q 20.21875 56 33.015625 56 \n",
"Q 37.15625 56 41.109375 55.140625 \n",
"Q 45.0625 54.296875 48.78125 52.59375 \n",
"z\n",
"\" id=\"DejaVuSans-99\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 75.984375 \n",
"L 18.109375 75.984375 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-104\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"61.523438\" xlink:href=\"#DejaVuSans-112\"/>\n",
" <use x=\"125\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"186.181641\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"241.162109\" xlink:href=\"#DejaVuSans-104\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"matplotlib.axis_2\">\n",
" <g id=\"ytick_1\">\n",
" <g id=\"line2d_11\">\n",
" <path clip-path=\"url(#p5d9e137dd0)\" d=\"M 30.103125 112.716051 \n",
"L 225.403125 112.716051 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_12\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L -3.5 0 \n",
"\" id=\"mdd6eeceb16\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mdd6eeceb16\" y=\"112.716051\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_7\">\n",
" <!-- 0.5 -->\n",
" <g transform=\"translate(7.2 116.51527)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 10.6875 12.40625 \n",
"L 21 12.40625 \n",
"L 21 0 \n",
"L 10.6875 0 \n",
"z\n",
"\" id=\"DejaVuSans-46\"/>\n",
" <path d=\"M 10.796875 72.90625 \n",
"L 49.515625 72.90625 \n",
"L 49.515625 64.59375 \n",
"L 19.828125 64.59375 \n",
"L 19.828125 46.734375 \n",
"Q 21.96875 47.46875 24.109375 47.828125 \n",
"Q 26.265625 48.1875 28.421875 48.1875 \n",
"Q 40.625 48.1875 47.75 41.5 \n",
"Q 54.890625 34.8125 54.890625 23.390625 \n",
"Q 54.890625 11.625 47.5625 5.09375 \n",
"Q 40.234375 -1.421875 26.90625 -1.421875 \n",
"Q 22.3125 -1.421875 17.546875 -0.640625 \n",
"Q 12.796875 0.140625 7.71875 1.703125 \n",
"L 7.71875 11.625 \n",
"Q 12.109375 9.234375 16.796875 8.0625 \n",
"Q 21.484375 6.890625 26.703125 6.890625 \n",
"Q 35.15625 6.890625 40.078125 11.328125 \n",
"Q 45.015625 15.765625 45.015625 23.390625 \n",
"Q 45.015625 31 40.078125 35.4375 \n",
"Q 35.15625 39.890625 26.703125 39.890625 \n",
"Q 22.75 39.890625 18.8125 39.015625 \n",
"Q 14.890625 38.140625 10.796875 36.28125 \n",
"z\n",
"\" id=\"DejaVuSans-53\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_2\">\n",
" <g id=\"line2d_13\">\n",
" <path clip-path=\"url(#p5d9e137dd0)\" d=\"M 30.103125 75.884156 \n",
"L 225.403125 75.884156 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_14\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mdd6eeceb16\" y=\"75.884156\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_8\">\n",
" <!-- 1.0 -->\n",
" <g transform=\"translate(7.2 79.683374)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_3\">\n",
" <g id=\"line2d_15\">\n",
" <path clip-path=\"url(#p5d9e137dd0)\" d=\"M 30.103125 39.05226 \n",
"L 225.403125 39.05226 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_16\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mdd6eeceb16\" y=\"39.05226\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_9\">\n",
" <!-- 1.5 -->\n",
" <g transform=\"translate(7.2 42.851479)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_17\">\n",
" <path clip-path=\"url(#p5d9e137dd0)\" d=\"M 12.70611 13.377273 \n",
"L 17.009095 52.05684 \n",
"L 21.31208 69.606941 \n",
"L 25.615065 80.068565 \n",
"L 29.91805 87.066482 \n",
"L 30.103125 87.290831 \n",
"L 34.40611 118.046162 \n",
"L 38.709095 118.783772 \n",
"L 43.01208 119.574989 \n",
"L 47.315065 120.253706 \n",
"L 51.61805 120.815172 \n",
"L 51.803125 120.811353 \n",
"L 56.10611 124.678601 \n",
"L 60.409095 125.264171 \n",
"L 64.71208 125.581641 \n",
"L 69.015065 125.875055 \n",
"L 73.31805 126.032716 \n",
"L 73.503125 126.083064 \n",
"L 77.80611 128.071091 \n",
"L 82.109095 127.981523 \n",
"L 86.41208 128.072362 \n",
"L 90.715065 128.471795 \n",
"L 95.01805 128.662189 \n",
"L 95.203125 128.683802 \n",
"L 99.50611 130.704636 \n",
"L 103.809095 130.446874 \n",
"L 108.11208 130.473797 \n",
"L 112.415065 130.592142 \n",
"L 116.71805 130.679454 \n",
"L 116.903125 130.681771 \n",
"L 121.20611 132.221635 \n",
"L 125.509095 132.520103 \n",
"L 129.81208 132.459375 \n",
"L 134.115065 132.214625 \n",
"L 138.41805 132.247299 \n",
"L 138.603125 132.2582 \n",
"L 142.90611 133.018535 \n",
"L 147.209095 133.323842 \n",
"L 151.51208 133.485165 \n",
"L 155.815065 133.365356 \n",
"L 160.11805 133.580997 \n",
"L 160.303125 133.595579 \n",
"L 164.60611 134.796426 \n",
"L 168.909095 134.641742 \n",
"L 173.21208 134.703306 \n",
"L 177.515065 134.633166 \n",
"L 181.81805 134.61159 \n",
"L 182.003125 134.630195 \n",
"L 186.30611 136.275031 \n",
"L 190.609095 135.886399 \n",
"L 194.91208 135.670998 \n",
"L 199.215065 135.615051 \n",
"L 203.51805 135.702139 \n",
"L 203.703125 135.721795 \n",
"L 208.00611 136.645067 \n",
"L 212.309095 136.760199 \n",
"L 216.61208 136.816952 \n",
"L 220.915065 136.922727 \n",
"L 225.21805 136.882012 \n",
"L 225.403125 136.874668 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_18\">\n",
" <path clip-path=\"url(#p5d9e137dd0)\" d=\"M 12.70611 124.752012 \n",
"L 17.009095 111.459856 \n",
"L 21.31208 105.199506 \n",
"L 25.615065 101.436593 \n",
"L 29.91805 98.876862 \n",
"L 30.103125 98.798506 \n",
"L 34.40611 87.443628 \n",
"L 38.709095 87.084715 \n",
"L 43.01208 86.826875 \n",
"L 47.315065 86.615962 \n",
"L 51.61805 86.413919 \n",
"L 51.803125 86.410711 \n",
"L 56.10611 84.980743 \n",
"L 60.409095 84.65277 \n",
"L 64.71208 84.574387 \n",
"L 69.015065 84.473314 \n",
"L 73.31805 84.443611 \n",
"L 73.503125 84.419333 \n",
"L 77.80611 83.829746 \n",
"L 82.109095 83.789523 \n",
"L 86.41208 83.809119 \n",
"L 90.715065 83.664213 \n",
"L 95.01805 83.571081 \n",
"L 95.203125 83.563606 \n",
"L 99.50611 82.870582 \n",
"L 103.809095 82.972687 \n",
"L 108.11208 82.984031 \n",
"L 112.415065 82.85047 \n",
"L 116.71805 82.844592 \n",
"L 116.903125 82.841701 \n",
"L 121.20611 82.270331 \n",
"L 125.509095 82.016617 \n",
"L 129.81208 82.130066 \n",
"L 134.115065 82.217732 \n",
"L 138.41805 82.215875 \n",
"L 138.603125 82.20942 \n",
"L 142.90611 82.047557 \n",
"L 147.209095 81.812408 \n",
"L 151.51208 81.717522 \n",
"L 155.815065 81.77992 \n",
"L 160.11805 81.736912 \n",
"L 160.303125 81.730605 \n",
"L 164.60611 81.441118 \n",
"L 168.909095 81.422554 \n",
"L 173.21208 81.424617 \n",
"L 177.515065 81.405536 \n",
"L 181.81805 81.385425 \n",
"L 182.003125 81.377019 \n",
"L 186.30611 80.927501 \n",
"L 190.609095 80.977007 \n",
"L 194.91208 81.030637 \n",
"L 199.215065 81.063641 \n",
"L 203.51805 81.031462 \n",
"L 203.703125 81.025888 \n",
"L 208.00611 80.63047 \n",
"L 212.309095 80.568588 \n",
"L 216.61208 80.527334 \n",
"L 220.915065 80.502066 \n",
"L 225.21805 80.568588 \n",
"L 225.403125 80.571628 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_19\">\n",
" <path clip-path=\"url(#p5d9e137dd0)\" d=\"M 30.103125 86.896892 \n",
"L 51.803125 85.003733 \n",
"L 73.503125 83.832479 \n",
"L 95.203125 83.169504 \n",
"L 116.903125 83.692517 \n",
"L 138.603125 82.300272 \n",
"L 160.303125 82.351836 \n",
"L 182.003125 81.968785 \n",
"L 203.703125 81.814091 \n",
"L 225.403125 82.226608 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"patch_3\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 30.103125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_4\">\n",
" <path d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_5\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_6\">\n",
" <path d=\"M 30.103125 7.2 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"legend_1\">\n",
" <g id=\"patch_7\">\n",
" <path d=\"M 140.634375 59.234375 \n",
"L 218.403125 59.234375 \n",
"Q 220.403125 59.234375 220.403125 57.234375 \n",
"L 220.403125 14.2 \n",
"Q 220.403125 12.2 218.403125 12.2 \n",
"L 140.634375 12.2 \n",
"Q 138.634375 12.2 138.634375 14.2 \n",
"L 138.634375 57.234375 \n",
"Q 138.634375 59.234375 140.634375 59.234375 \n",
"z\n",
"\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\n",
" </g>\n",
" <g id=\"line2d_20\">\n",
" <path d=\"M 142.634375 20.298438 \n",
"L 162.634375 20.298438 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_21\"/>\n",
" <g id=\"text_10\">\n",
" <!-- train loss -->\n",
" <g transform=\"translate(170.634375 23.798438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 18.3125 70.21875 \n",
"L 18.3125 54.6875 \n",
"L 36.8125 54.6875 \n",
"L 36.8125 47.703125 \n",
"L 18.3125 47.703125 \n",
"L 18.3125 18.015625 \n",
"Q 18.3125 11.328125 20.140625 9.421875 \n",
"Q 21.96875 7.515625 27.59375 7.515625 \n",
"L 36.8125 7.515625 \n",
"L 36.8125 0 \n",
"L 27.59375 0 \n",
"Q 17.1875 0 13.234375 3.875 \n",
"Q 9.28125 7.765625 9.28125 18.015625 \n",
"L 9.28125 47.703125 \n",
"L 2.6875 47.703125 \n",
"L 2.6875 54.6875 \n",
"L 9.28125 54.6875 \n",
"L 9.28125 70.21875 \n",
"z\n",
"\" id=\"DejaVuSans-116\"/>\n",
" <path d=\"M 41.109375 46.296875 \n",
"Q 39.59375 47.171875 37.8125 47.578125 \n",
"Q 36.03125 48 33.890625 48 \n",
"Q 26.265625 48 22.1875 43.046875 \n",
"Q 18.109375 38.09375 18.109375 28.8125 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 20.953125 51.171875 25.484375 53.578125 \n",
"Q 30.03125 56 36.53125 56 \n",
"Q 37.453125 56 38.578125 55.875 \n",
"Q 39.703125 55.765625 41.0625 55.515625 \n",
"z\n",
"\" id=\"DejaVuSans-114\"/>\n",
" <path d=\"M 34.28125 27.484375 \n",
"Q 23.390625 27.484375 19.1875 25 \n",
"Q 14.984375 22.515625 14.984375 16.5 \n",
"Q 14.984375 11.71875 18.140625 8.90625 \n",
"Q 21.296875 6.109375 26.703125 6.109375 \n",
"Q 34.1875 6.109375 38.703125 11.40625 \n",
"Q 43.21875 16.703125 43.21875 25.484375 \n",
"L 43.21875 27.484375 \n",
"z\n",
"M 52.203125 31.203125 \n",
"L 52.203125 0 \n",
"L 43.21875 0 \n",
"L 43.21875 8.296875 \n",
"Q 40.140625 3.328125 35.546875 0.953125 \n",
"Q 30.953125 -1.421875 24.3125 -1.421875 \n",
"Q 15.921875 -1.421875 10.953125 3.296875 \n",
"Q 6 8.015625 6 15.921875 \n",
"Q 6 25.140625 12.171875 29.828125 \n",
"Q 18.359375 34.515625 30.609375 34.515625 \n",
"L 43.21875 34.515625 \n",
"L 43.21875 35.40625 \n",
"Q 43.21875 41.609375 39.140625 45 \n",
"Q 35.0625 48.390625 27.6875 48.390625 \n",
"Q 23 48.390625 18.546875 47.265625 \n",
"Q 14.109375 46.140625 10.015625 43.890625 \n",
"L 10.015625 52.203125 \n",
"Q 14.9375 54.109375 19.578125 55.046875 \n",
"Q 24.21875 56 28.609375 56 \n",
"Q 40.484375 56 46.34375 49.84375 \n",
"Q 52.203125 43.703125 52.203125 31.203125 \n",
"z\n",
"\" id=\"DejaVuSans-97\"/>\n",
" <path d=\"M 9.421875 54.6875 \n",
"L 18.40625 54.6875 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 64.59375 \n",
"L 9.421875 64.59375 \n",
"z\n",
"\" id=\"DejaVuSans-105\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-110\"/>\n",
" <path id=\"DejaVuSans-32\"/>\n",
" <path d=\"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"\" id=\"DejaVuSans-108\"/>\n",
" <path d=\"M 44.28125 53.078125 \n",
"L 44.28125 44.578125 \n",
"Q 40.484375 46.53125 36.375 47.5 \n",
"Q 32.28125 48.484375 27.875 48.484375 \n",
"Q 21.1875 48.484375 17.84375 46.4375 \n",
"Q 14.5 44.390625 14.5 40.28125 \n",
"Q 14.5 37.15625 16.890625 35.375 \n",
"Q 19.28125 33.59375 26.515625 31.984375 \n",
"L 29.59375 31.296875 \n",
"Q 39.15625 29.25 43.1875 25.515625 \n",
"Q 47.21875 21.78125 47.21875 15.09375 \n",
"Q 47.21875 7.46875 41.1875 3.015625 \n",
"Q 35.15625 -1.421875 24.609375 -1.421875 \n",
"Q 20.21875 -1.421875 15.453125 -0.5625 \n",
"Q 10.6875 0.296875 5.421875 2 \n",
"L 5.421875 11.28125 \n",
"Q 10.40625 8.6875 15.234375 7.390625 \n",
"Q 20.0625 6.109375 24.8125 6.109375 \n",
"Q 31.15625 6.109375 34.5625 8.28125 \n",
"Q 37.984375 10.453125 37.984375 14.40625 \n",
"Q 37.984375 18.0625 35.515625 20.015625 \n",
"Q 33.0625 21.96875 24.703125 23.78125 \n",
"L 21.578125 24.515625 \n",
"Q 13.234375 26.265625 9.515625 29.90625 \n",
"Q 5.8125 33.546875 5.8125 39.890625 \n",
"Q 5.8125 47.609375 11.28125 51.796875 \n",
"Q 16.75 56 26.8125 56 \n",
"Q 31.78125 56 36.171875 55.265625 \n",
"Q 40.578125 54.546875 44.28125 53.078125 \n",
"z\n",
"\" id=\"DejaVuSans-115\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-108\"/>\n",
" <use x=\"292.333984\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"353.515625\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"405.615234\" xlink:href=\"#DejaVuSans-115\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_22\">\n",
" <path d=\"M 142.634375 34.976562 \n",
"L 162.634375 34.976562 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_23\"/>\n",
" <g id=\"text_11\">\n",
" <!-- train acc -->\n",
" <g transform=\"translate(170.634375 38.476562)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"325.830078\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"380.810547\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_24\">\n",
" <path d=\"M 142.634375 49.654688 \n",
"L 162.634375 49.654688 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_25\"/>\n",
" <g id=\"text_12\">\n",
" <!-- test acc -->\n",
" <g transform=\"translate(170.634375 53.154688)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"100.732422\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"152.832031\" xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"192.041016\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"223.828125\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"285.107422\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"340.087891\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"p5d9e137dd0\">\n",
" <rect height=\"135.9\" width=\"195.3\" x=\"30.103125\" y=\"7.2\"/>\n",
" </clipPath>\n",
" </defs>\n",
"</svg>\n"
],
"text/plain": [
"<Figure size 252x180 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"lr, num_epochs, batch_size = 0.05, 10, 128\n",
"train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=224)\n",
"d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())"
]
},
{
"cell_type": "markdown",
"id": "051bf6dd-6153-4d4a-8a18-4878031998b0",
"metadata": {
"jp-MarkdownHeadingCollapsed": true,
"slideshow": {
"slide_type": "-"
},
"tags": []
},
"source": [
"## 网络中的网络(NiN)\n",
"\n",
"NiN块"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "1c18dda6-ece9-4c0a-9235-83e4b5bd6f34",
"metadata": {
"origin_pos": 2,
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"import torch\n",
"from torch import nn\n",
"from d2l import torch as d2l\n",
"\n",
"\n",
"def nin_block(in_channels, out_channels, kernel_size, strides, padding):\n",
" return nn.Sequential(\n",
" nn.Conv2d(in_channels, out_channels, kernel_size, strides, padding),\n",
" nn.ReLU(),\n",
" nn.Conv2d(out_channels, out_channels, kernel_size=1), nn.ReLU(),\n",
" nn.Conv2d(out_channels, out_channels, kernel_size=1), nn.ReLU())"
]
},
{
"cell_type": "markdown",
"id": "9a43fb36-d21c-48d8-afc9-3940fc4151c8",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"NiN模型"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "4d406faa-4e96-49f8-b226-a76be1f1cc40",
"metadata": {
"origin_pos": 6,
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"net = nn.Sequential(\n",
" nin_block(1, 96, kernel_size=11, strides=4, padding=0),\n",
" nn.MaxPool2d(3, stride=2),\n",
" nin_block(96, 256, kernel_size=5, strides=1, padding=2),\n",
" nn.MaxPool2d(3, stride=2),\n",
" nin_block(256, 384, kernel_size=3, strides=1, padding=1),\n",
" nn.MaxPool2d(3, stride=2),\n",
" nn.Dropout(0.5),\n",
" nin_block(384, 10, kernel_size=3, strides=1, padding=1), # 标签类别数是10\n",
" nn.AdaptiveAvgPool2d((1, 1)),\n",
" nn.Flatten()) # 将四维的输出转成二维的输出,其形状为(批量大小,10)"
]
},
{
"cell_type": "markdown",
"id": "554152fc-1a8c-40dc-9892-996c7039d471",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"查看每个块的输出形状"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "73bc25b6-f379-4013-8ee2-b7e80c50a23f",
"metadata": {
"origin_pos": 10,
"tab": [
"pytorch"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sequential output shape:\t torch.Size([1, 96, 54, 54])\n",
"MaxPool2d output shape:\t torch.Size([1, 96, 26, 26])\n",
"Sequential output shape:\t torch.Size([1, 256, 26, 26])\n",
"MaxPool2d output shape:\t torch.Size([1, 256, 12, 12])\n",
"Sequential output shape:\t torch.Size([1, 384, 12, 12])\n",
"MaxPool2d output shape:\t torch.Size([1, 384, 5, 5])\n",
"Dropout output shape:\t torch.Size([1, 384, 5, 5])\n",
"Sequential output shape:\t torch.Size([1, 10, 5, 5])\n",
"AdaptiveAvgPool2d output shape:\t torch.Size([1, 10, 1, 1])\n",
"Flatten output shape:\t torch.Size([1, 10])\n"
]
}
],
"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)"
]
},
{
"cell_type": "markdown",
"id": "feb20603-ba72-4fb4-9763-ba195b16da54",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"训练模型"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "5ef0873e-78e2-4f65-9ce0-4dba0c5f48c9",
"metadata": {
"origin_pos": 13,
"tab": [
"pytorch"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loss 2.303, train acc 0.100, test acc 0.100\n",
"1445.5 examples/sec on cuda:0\n"
]
},
{
"data": {
"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",
"<!-- Created with matplotlib (https://matplotlib.org/) -->\n",
"<svg height=\"180.65625pt\" version=\"1.1\" viewBox=\"0 0 238.965625 180.65625\" width=\"238.965625pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
" <metadata>\n",
" <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" 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>2022-03-22T09:47:52.697012</dc:date>\n",
" <dc:format>image/svg+xml</dc:format>\n",
" <dc:creator>\n",
" <cc:Agent>\n",
" <dc:title>Matplotlib v3.3.3, 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-linecap:butt;stroke-linejoin:round;}</style>\n",
" </defs>\n",
" <g id=\"figure_1\">\n",
" <g id=\"patch_1\">\n",
" <path d=\"M 0 180.65625 \n",
"L 238.965625 180.65625 \n",
"L 238.965625 0 \n",
"L 0 0 \n",
"z\n",
"\" style=\"fill:none;\"/>\n",
" </g>\n",
" <g id=\"axes_1\">\n",
" <g id=\"patch_2\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"L 30.103125 7.2 \n",
"z\n",
"\" style=\"fill:#ffffff;\"/>\n",
" </g>\n",
" <g id=\"matplotlib.axis_1\">\n",
" <g id=\"xtick_1\">\n",
" <g id=\"line2d_1\">\n",
" <path clip-path=\"url(#pdaed99b1c6)\" d=\"M 51.803125 143.1 \n",
"L 51.803125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_2\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L 0 3.5 \n",
"\" id=\"m6f29ccba98\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"51.803125\" xlink:href=\"#m6f29ccba98\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_1\">\n",
" <!-- 2 -->\n",
" <g transform=\"translate(48.621875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 19.1875 8.296875 \n",
"L 53.609375 8.296875 \n",
"L 53.609375 0 \n",
"L 7.328125 0 \n",
"L 7.328125 8.296875 \n",
"Q 12.9375 14.109375 22.625 23.890625 \n",
"Q 32.328125 33.6875 34.8125 36.53125 \n",
"Q 39.546875 41.84375 41.421875 45.53125 \n",
"Q 43.3125 49.21875 43.3125 52.78125 \n",
"Q 43.3125 58.59375 39.234375 62.25 \n",
"Q 35.15625 65.921875 28.609375 65.921875 \n",
"Q 23.96875 65.921875 18.8125 64.3125 \n",
"Q 13.671875 62.703125 7.8125 59.421875 \n",
"L 7.8125 69.390625 \n",
"Q 13.765625 71.78125 18.9375 73 \n",
"Q 24.125 74.21875 28.421875 74.21875 \n",
"Q 39.75 74.21875 46.484375 68.546875 \n",
"Q 53.21875 62.890625 53.21875 53.421875 \n",
"Q 53.21875 48.921875 51.53125 44.890625 \n",
"Q 49.859375 40.875 45.40625 35.40625 \n",
"Q 44.1875 33.984375 37.640625 27.21875 \n",
"Q 31.109375 20.453125 19.1875 8.296875 \n",
"z\n",
"\" id=\"DejaVuSans-50\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-50\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_2\">\n",
" <g id=\"line2d_3\">\n",
" <path clip-path=\"url(#pdaed99b1c6)\" d=\"M 95.203125 143.1 \n",
"L 95.203125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_4\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"95.203125\" xlink:href=\"#m6f29ccba98\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_2\">\n",
" <!-- 4 -->\n",
" <g transform=\"translate(92.021875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 37.796875 64.3125 \n",
"L 12.890625 25.390625 \n",
"L 37.796875 25.390625 \n",
"z\n",
"M 35.203125 72.90625 \n",
"L 47.609375 72.90625 \n",
"L 47.609375 25.390625 \n",
"L 58.015625 25.390625 \n",
"L 58.015625 17.1875 \n",
"L 47.609375 17.1875 \n",
"L 47.609375 0 \n",
"L 37.796875 0 \n",
"L 37.796875 17.1875 \n",
"L 4.890625 17.1875 \n",
"L 4.890625 26.703125 \n",
"z\n",
"\" id=\"DejaVuSans-52\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-52\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_3\">\n",
" <g id=\"line2d_5\">\n",
" <path clip-path=\"url(#pdaed99b1c6)\" d=\"M 138.603125 143.1 \n",
"L 138.603125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_6\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"138.603125\" xlink:href=\"#m6f29ccba98\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_3\">\n",
" <!-- 6 -->\n",
" <g transform=\"translate(135.421875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 33.015625 40.375 \n",
"Q 26.375 40.375 22.484375 35.828125 \n",
"Q 18.609375 31.296875 18.609375 23.390625 \n",
"Q 18.609375 15.53125 22.484375 10.953125 \n",
"Q 26.375 6.390625 33.015625 6.390625 \n",
"Q 39.65625 6.390625 43.53125 10.953125 \n",
"Q 47.40625 15.53125 47.40625 23.390625 \n",
"Q 47.40625 31.296875 43.53125 35.828125 \n",
"Q 39.65625 40.375 33.015625 40.375 \n",
"z\n",
"M 52.59375 71.296875 \n",
"L 52.59375 62.3125 \n",
"Q 48.875 64.0625 45.09375 64.984375 \n",
"Q 41.3125 65.921875 37.59375 65.921875 \n",
"Q 27.828125 65.921875 22.671875 59.328125 \n",
"Q 17.53125 52.734375 16.796875 39.40625 \n",
"Q 19.671875 43.65625 24.015625 45.921875 \n",
"Q 28.375 48.1875 33.59375 48.1875 \n",
"Q 44.578125 48.1875 50.953125 41.515625 \n",
"Q 57.328125 34.859375 57.328125 23.390625 \n",
"Q 57.328125 12.15625 50.6875 5.359375 \n",
"Q 44.046875 -1.421875 33.015625 -1.421875 \n",
"Q 20.359375 -1.421875 13.671875 8.265625 \n",
"Q 6.984375 17.96875 6.984375 36.375 \n",
"Q 6.984375 53.65625 15.1875 63.9375 \n",
"Q 23.390625 74.21875 37.203125 74.21875 \n",
"Q 40.921875 74.21875 44.703125 73.484375 \n",
"Q 48.484375 72.75 52.59375 71.296875 \n",
"z\n",
"\" id=\"DejaVuSans-54\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-54\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_4\">\n",
" <g id=\"line2d_7\">\n",
" <path clip-path=\"url(#pdaed99b1c6)\" d=\"M 182.003125 143.1 \n",
"L 182.003125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_8\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"182.003125\" xlink:href=\"#m6f29ccba98\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_4\">\n",
" <!-- 8 -->\n",
" <g transform=\"translate(178.821875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 31.78125 34.625 \n",
"Q 24.75 34.625 20.71875 30.859375 \n",
"Q 16.703125 27.09375 16.703125 20.515625 \n",
"Q 16.703125 13.921875 20.71875 10.15625 \n",
"Q 24.75 6.390625 31.78125 6.390625 \n",
"Q 38.8125 6.390625 42.859375 10.171875 \n",
"Q 46.921875 13.96875 46.921875 20.515625 \n",
"Q 46.921875 27.09375 42.890625 30.859375 \n",
"Q 38.875 34.625 31.78125 34.625 \n",
"z\n",
"M 21.921875 38.8125 \n",
"Q 15.578125 40.375 12.03125 44.71875 \n",
"Q 8.5 49.078125 8.5 55.328125 \n",
"Q 8.5 64.0625 14.71875 69.140625 \n",
"Q 20.953125 74.21875 31.78125 74.21875 \n",
"Q 42.671875 74.21875 48.875 69.140625 \n",
"Q 55.078125 64.0625 55.078125 55.328125 \n",
"Q 55.078125 49.078125 51.53125 44.71875 \n",
"Q 48 40.375 41.703125 38.8125 \n",
"Q 48.828125 37.15625 52.796875 32.3125 \n",
"Q 56.78125 27.484375 56.78125 20.515625 \n",
"Q 56.78125 9.90625 50.3125 4.234375 \n",
"Q 43.84375 -1.421875 31.78125 -1.421875 \n",
"Q 19.734375 -1.421875 13.25 4.234375 \n",
"Q 6.78125 9.90625 6.78125 20.515625 \n",
"Q 6.78125 27.484375 10.78125 32.3125 \n",
"Q 14.796875 37.15625 21.921875 38.8125 \n",
"z\n",
"M 18.3125 54.390625 \n",
"Q 18.3125 48.734375 21.84375 45.5625 \n",
"Q 25.390625 42.390625 31.78125 42.390625 \n",
"Q 38.140625 42.390625 41.71875 45.5625 \n",
"Q 45.3125 48.734375 45.3125 54.390625 \n",
"Q 45.3125 60.0625 41.71875 63.234375 \n",
"Q 38.140625 66.40625 31.78125 66.40625 \n",
"Q 25.390625 66.40625 21.84375 63.234375 \n",
"Q 18.3125 60.0625 18.3125 54.390625 \n",
"z\n",
"\" id=\"DejaVuSans-56\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-56\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_5\">\n",
" <g id=\"line2d_9\">\n",
" <path clip-path=\"url(#pdaed99b1c6)\" d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_10\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"225.403125\" xlink:href=\"#m6f29ccba98\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_5\">\n",
" <!-- 10 -->\n",
" <g transform=\"translate(219.040625 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 12.40625 8.296875 \n",
"L 28.515625 8.296875 \n",
"L 28.515625 63.921875 \n",
"L 10.984375 60.40625 \n",
"L 10.984375 69.390625 \n",
"L 28.421875 72.90625 \n",
"L 38.28125 72.90625 \n",
"L 38.28125 8.296875 \n",
"L 54.390625 8.296875 \n",
"L 54.390625 0 \n",
"L 12.40625 0 \n",
"z\n",
"\" id=\"DejaVuSans-49\"/>\n",
" <path d=\"M 31.78125 66.40625 \n",
"Q 24.171875 66.40625 20.328125 58.90625 \n",
"Q 16.5 51.421875 16.5 36.375 \n",
"Q 16.5 21.390625 20.328125 13.890625 \n",
"Q 24.171875 6.390625 31.78125 6.390625 \n",
"Q 39.453125 6.390625 43.28125 13.890625 \n",
"Q 47.125 21.390625 47.125 36.375 \n",
"Q 47.125 51.421875 43.28125 58.90625 \n",
"Q 39.453125 66.40625 31.78125 66.40625 \n",
"z\n",
"M 31.78125 74.21875 \n",
"Q 44.046875 74.21875 50.515625 64.515625 \n",
"Q 56.984375 54.828125 56.984375 36.375 \n",
"Q 56.984375 17.96875 50.515625 8.265625 \n",
"Q 44.046875 -1.421875 31.78125 -1.421875 \n",
"Q 19.53125 -1.421875 13.0625 8.265625 \n",
"Q 6.59375 17.96875 6.59375 36.375 \n",
"Q 6.59375 54.828125 13.0625 64.515625 \n",
"Q 19.53125 74.21875 31.78125 74.21875 \n",
"z\n",
"\" id=\"DejaVuSans-48\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_6\">\n",
" <!-- epoch -->\n",
" <g transform=\"translate(112.525 171.376563)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 56.203125 29.59375 \n",
"L 56.203125 25.203125 \n",
"L 14.890625 25.203125 \n",
"Q 15.484375 15.921875 20.484375 11.0625 \n",
"Q 25.484375 6.203125 34.421875 6.203125 \n",
"Q 39.59375 6.203125 44.453125 7.46875 \n",
"Q 49.3125 8.734375 54.109375 11.28125 \n",
"L 54.109375 2.78125 \n",
"Q 49.265625 0.734375 44.1875 -0.34375 \n",
"Q 39.109375 -1.421875 33.890625 -1.421875 \n",
"Q 20.796875 -1.421875 13.15625 6.1875 \n",
"Q 5.515625 13.8125 5.515625 26.8125 \n",
"Q 5.515625 40.234375 12.765625 48.109375 \n",
"Q 20.015625 56 32.328125 56 \n",
"Q 43.359375 56 49.78125 48.890625 \n",
"Q 56.203125 41.796875 56.203125 29.59375 \n",
"z\n",
"M 47.21875 32.234375 \n",
"Q 47.125 39.59375 43.09375 43.984375 \n",
"Q 39.0625 48.390625 32.421875 48.390625 \n",
"Q 24.90625 48.390625 20.390625 44.140625 \n",
"Q 15.875 39.890625 15.1875 32.171875 \n",
"z\n",
"\" id=\"DejaVuSans-101\"/>\n",
" <path d=\"M 18.109375 8.203125 \n",
"L 18.109375 -20.796875 \n",
"L 9.078125 -20.796875 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.390625 \n",
"Q 20.953125 51.265625 25.265625 53.625 \n",
"Q 29.59375 56 35.59375 56 \n",
"Q 45.5625 56 51.78125 48.09375 \n",
"Q 58.015625 40.1875 58.015625 27.296875 \n",
"Q 58.015625 14.40625 51.78125 6.484375 \n",
"Q 45.5625 -1.421875 35.59375 -1.421875 \n",
"Q 29.59375 -1.421875 25.265625 0.953125 \n",
"Q 20.953125 3.328125 18.109375 8.203125 \n",
"z\n",
"M 48.6875 27.296875 \n",
"Q 48.6875 37.203125 44.609375 42.84375 \n",
"Q 40.53125 48.484375 33.40625 48.484375 \n",
"Q 26.265625 48.484375 22.1875 42.84375 \n",
"Q 18.109375 37.203125 18.109375 27.296875 \n",
"Q 18.109375 17.390625 22.1875 11.75 \n",
"Q 26.265625 6.109375 33.40625 6.109375 \n",
"Q 40.53125 6.109375 44.609375 11.75 \n",
"Q 48.6875 17.390625 48.6875 27.296875 \n",
"z\n",
"\" id=\"DejaVuSans-112\"/>\n",
" <path d=\"M 30.609375 48.390625 \n",
"Q 23.390625 48.390625 19.1875 42.75 \n",
"Q 14.984375 37.109375 14.984375 27.296875 \n",
"Q 14.984375 17.484375 19.15625 11.84375 \n",
"Q 23.34375 6.203125 30.609375 6.203125 \n",
"Q 37.796875 6.203125 41.984375 11.859375 \n",
"Q 46.1875 17.53125 46.1875 27.296875 \n",
"Q 46.1875 37.015625 41.984375 42.703125 \n",
"Q 37.796875 48.390625 30.609375 48.390625 \n",
"z\n",
"M 30.609375 56 \n",
"Q 42.328125 56 49.015625 48.375 \n",
"Q 55.71875 40.765625 55.71875 27.296875 \n",
"Q 55.71875 13.875 49.015625 6.21875 \n",
"Q 42.328125 -1.421875 30.609375 -1.421875 \n",
"Q 18.84375 -1.421875 12.171875 6.21875 \n",
"Q 5.515625 13.875 5.515625 27.296875 \n",
"Q 5.515625 40.765625 12.171875 48.375 \n",
"Q 18.84375 56 30.609375 56 \n",
"z\n",
"\" id=\"DejaVuSans-111\"/>\n",
" <path d=\"M 48.78125 52.59375 \n",
"L 48.78125 44.1875 \n",
"Q 44.96875 46.296875 41.140625 47.34375 \n",
"Q 37.3125 48.390625 33.40625 48.390625 \n",
"Q 24.65625 48.390625 19.8125 42.84375 \n",
"Q 14.984375 37.3125 14.984375 27.296875 \n",
"Q 14.984375 17.28125 19.8125 11.734375 \n",
"Q 24.65625 6.203125 33.40625 6.203125 \n",
"Q 37.3125 6.203125 41.140625 7.25 \n",
"Q 44.96875 8.296875 48.78125 10.40625 \n",
"L 48.78125 2.09375 \n",
"Q 45.015625 0.34375 40.984375 -0.53125 \n",
"Q 36.96875 -1.421875 32.421875 -1.421875 \n",
"Q 20.0625 -1.421875 12.78125 6.34375 \n",
"Q 5.515625 14.109375 5.515625 27.296875 \n",
"Q 5.515625 40.671875 12.859375 48.328125 \n",
"Q 20.21875 56 33.015625 56 \n",
"Q 37.15625 56 41.109375 55.140625 \n",
"Q 45.0625 54.296875 48.78125 52.59375 \n",
"z\n",
"\" id=\"DejaVuSans-99\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 75.984375 \n",
"L 18.109375 75.984375 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-104\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"61.523438\" xlink:href=\"#DejaVuSans-112\"/>\n",
" <use x=\"125\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"186.181641\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"241.162109\" xlink:href=\"#DejaVuSans-104\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"matplotlib.axis_2\">\n",
" <g id=\"ytick_1\">\n",
" <g id=\"line2d_11\">\n",
" <path clip-path=\"url(#pdaed99b1c6)\" d=\"M 30.103125 142.353778 \n",
"L 225.403125 142.353778 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_12\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L -3.5 0 \n",
"\" id=\"m136e28a426\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m136e28a426\" y=\"142.353778\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_7\">\n",
" <!-- 0.0 -->\n",
" <g transform=\"translate(7.2 146.152997)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 10.6875 12.40625 \n",
"L 21 12.40625 \n",
"L 21 0 \n",
"L 10.6875 0 \n",
"z\n",
"\" id=\"DejaVuSans-46\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_2\">\n",
" <g id=\"line2d_13\">\n",
" <path clip-path=\"url(#pdaed99b1c6)\" d=\"M 30.103125 114.366233 \n",
"L 225.403125 114.366233 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_14\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m136e28a426\" y=\"114.366233\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_8\">\n",
" <!-- 0.5 -->\n",
" <g transform=\"translate(7.2 118.165452)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 10.796875 72.90625 \n",
"L 49.515625 72.90625 \n",
"L 49.515625 64.59375 \n",
"L 19.828125 64.59375 \n",
"L 19.828125 46.734375 \n",
"Q 21.96875 47.46875 24.109375 47.828125 \n",
"Q 26.265625 48.1875 28.421875 48.1875 \n",
"Q 40.625 48.1875 47.75 41.5 \n",
"Q 54.890625 34.8125 54.890625 23.390625 \n",
"Q 54.890625 11.625 47.5625 5.09375 \n",
"Q 40.234375 -1.421875 26.90625 -1.421875 \n",
"Q 22.3125 -1.421875 17.546875 -0.640625 \n",
"Q 12.796875 0.140625 7.71875 1.703125 \n",
"L 7.71875 11.625 \n",
"Q 12.109375 9.234375 16.796875 8.0625 \n",
"Q 21.484375 6.890625 26.703125 6.890625 \n",
"Q 35.15625 6.890625 40.078125 11.328125 \n",
"Q 45.015625 15.765625 45.015625 23.390625 \n",
"Q 45.015625 31 40.078125 35.4375 \n",
"Q 35.15625 39.890625 26.703125 39.890625 \n",
"Q 22.75 39.890625 18.8125 39.015625 \n",
"Q 14.890625 38.140625 10.796875 36.28125 \n",
"z\n",
"\" id=\"DejaVuSans-53\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_3\">\n",
" <g id=\"line2d_15\">\n",
" <path clip-path=\"url(#pdaed99b1c6)\" d=\"M 30.103125 86.378688 \n",
"L 225.403125 86.378688 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_16\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m136e28a426\" y=\"86.378688\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_9\">\n",
" <!-- 1.0 -->\n",
" <g transform=\"translate(7.2 90.177906)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_4\">\n",
" <g id=\"line2d_17\">\n",
" <path clip-path=\"url(#pdaed99b1c6)\" d=\"M 30.103125 58.391142 \n",
"L 225.403125 58.391142 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_18\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m136e28a426\" y=\"58.391142\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_10\">\n",
" <!-- 1.5 -->\n",
" <g transform=\"translate(7.2 62.190361)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_5\">\n",
" <g id=\"line2d_19\">\n",
" <path clip-path=\"url(#pdaed99b1c6)\" d=\"M 30.103125 30.403597 \n",
"L 225.403125 30.403597 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_20\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m136e28a426\" y=\"30.403597\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_11\">\n",
" <!-- 2.0 -->\n",
" <g transform=\"translate(7.2 34.202816)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-50\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_21\">\n",
" <path clip-path=\"url(#pdaed99b1c6)\" d=\"M 12.70611 13.435958 \n",
"L 17.009095 13.567368 \n",
"L 21.31208 14.239963 \n",
"L 25.615065 16.2911 \n",
"L 29.91805 18.743064 \n",
"L 30.103125 18.813655 \n",
"L 34.40611 35.526268 \n",
"L 38.709095 43.976508 \n",
"L 43.01208 54.021549 \n",
"L 47.315065 62.512164 \n",
"L 51.61805 69.057921 \n",
"L 51.803125 69.269713 \n",
"L 56.10611 99.331544 \n",
"L 60.409095 100.579731 \n",
"L 64.71208 102.015528 \n",
"L 69.015065 103.341695 \n",
"L 73.31805 74.422831 \n",
"L 73.503125 73.933195 \n",
"L 77.80611 13.377273 \n",
"L 82.109095 13.407692 \n",
"L 86.41208 13.428589 \n",
"L 90.715065 13.434367 \n",
"L 95.01805 13.438629 \n",
"L 95.203125 13.438721 \n",
"L 99.50611 13.464984 \n",
"L 103.809095 13.46543 \n",
"L 108.11208 13.465709 \n",
"L 112.415065 13.465757 \n",
"L 116.71805 13.465794 \n",
"L 116.903125 13.465799 \n",
"L 121.20611 13.467335 \n",
"L 125.509095 13.466974 \n",
"L 129.81208 13.466676 \n",
"L 134.115065 13.466843 \n",
"L 138.41805 13.466727 \n",
"L 138.603125 13.466671 \n",
"L 142.90611 13.466294 \n",
"L 147.209095 13.466511 \n",
"L 151.51208 13.471351 \n",
"L 155.815065 13.455697 \n",
"L 160.11805 13.457834 \n",
"L 160.303125 13.457902 \n",
"L 164.60611 13.466381 \n",
"L 168.909095 13.466381 \n",
"L 173.21208 13.466381 \n",
"L 177.515065 13.466381 \n",
"L 181.81805 13.466381 \n",
"L 182.003125 13.466381 \n",
"L 186.30611 13.466381 \n",
"L 190.609095 13.466381 \n",
"L 194.91208 13.466381 \n",
"L 199.215065 13.466381 \n",
"L 203.51805 13.466381 \n",
"L 203.703125 13.466381 \n",
"L 208.00611 13.466381 \n",
"L 212.309095 13.466381 \n",
"L 216.61208 13.466381 \n",
"L 220.915065 13.466381 \n",
"L 225.21805 13.466381 \n",
"L 225.403125 13.466381 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_22\">\n",
" <path clip-path=\"url(#pdaed99b1c6)\" d=\"M 12.70611 136.39608 \n",
"L 17.009095 135.592002 \n",
"L 21.31208 134.218957 \n",
"L 25.615065 132.623733 \n",
"L 29.91805 131.088227 \n",
"L 30.103125 131.037481 \n",
"L 34.40611 122.23773 \n",
"L 38.709095 120.074714 \n",
"L 43.01208 117.585678 \n",
"L 47.315065 114.936376 \n",
"L 51.61805 112.816385 \n",
"L 51.803125 112.75415 \n",
"L 56.10611 102.963377 \n",
"L 60.409095 102.349739 \n",
"L 64.71208 101.786258 \n",
"L 69.015065 101.28704 \n",
"L 73.31805 107.33455 \n",
"L 73.503125 107.566192 \n",
"L 77.80611 136.838088 \n",
"L 82.109095 136.760501 \n",
"L 86.41208 136.67978 \n",
"L 90.715065 136.699372 \n",
"L 95.01805 136.710187 \n",
"L 95.203125 136.715221 \n",
"L 99.50611 136.772257 \n",
"L 103.809095 136.71583 \n",
"L 108.11208 136.76442 \n",
"L 112.415065 136.794592 \n",
"L 116.71805 136.785423 \n",
"L 116.903125 136.782391 \n",
"L 121.20611 136.922727 \n",
"L 125.509095 136.805172 \n",
"L 129.81208 136.697021 \n",
"L 134.115065 136.728761 \n",
"L 138.41805 136.75815 \n",
"L 138.603125 136.758135 \n",
"L 142.90611 136.664106 \n",
"L 147.209095 136.725235 \n",
"L 151.51208 136.728369 \n",
"L 155.815065 136.734639 \n",
"L 160.11805 136.725235 \n",
"L 160.303125 136.733879 \n",
"L 164.60611 136.772257 \n",
"L 168.909095 136.786363 \n",
"L 173.21208 136.762852 \n",
"L 177.515065 136.776959 \n",
"L 181.81805 136.754388 \n",
"L 182.003125 136.756269 \n",
"L 186.30611 136.922727 \n",
"L 190.609095 136.882759 \n",
"L 194.91208 136.839655 \n",
"L 199.215065 136.799294 \n",
"L 203.51805 136.763793 \n",
"L 203.703125 136.756269 \n",
"L 208.00611 136.875705 \n",
"L 212.309095 136.788714 \n",
"L 216.61208 136.814576 \n",
"L 220.915065 136.740517 \n",
"L 225.21805 136.747805 \n",
"L 225.403125 136.756269 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_23\">\n",
" <path clip-path=\"url(#pdaed99b1c6)\" d=\"M 30.103125 122.549791 \n",
"L 51.803125 104.716127 \n",
"L 73.503125 136.756269 \n",
"L 95.203125 136.756269 \n",
"L 116.903125 136.756269 \n",
"L 138.603125 136.756269 \n",
"L 160.303125 136.756269 \n",
"L 182.003125 136.756269 \n",
"L 203.703125 136.756269 \n",
"L 225.403125 136.756269 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"patch_3\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 30.103125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_4\">\n",
" <path d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_5\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_6\">\n",
" <path d=\"M 30.103125 7.2 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"legend_1\">\n",
" <g id=\"patch_7\">\n",
" <path d=\"M 140.634375 98.667187 \n",
"L 218.403125 98.667187 \n",
"Q 220.403125 98.667187 220.403125 96.667187 \n",
"L 220.403125 53.632812 \n",
"Q 220.403125 51.632812 218.403125 51.632812 \n",
"L 140.634375 51.632812 \n",
"Q 138.634375 51.632812 138.634375 53.632812 \n",
"L 138.634375 96.667187 \n",
"Q 138.634375 98.667187 140.634375 98.667187 \n",
"z\n",
"\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\n",
" </g>\n",
" <g id=\"line2d_24\">\n",
" <path d=\"M 142.634375 59.73125 \n",
"L 162.634375 59.73125 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_25\"/>\n",
" <g id=\"text_12\">\n",
" <!-- train loss -->\n",
" <g transform=\"translate(170.634375 63.23125)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 18.3125 70.21875 \n",
"L 18.3125 54.6875 \n",
"L 36.8125 54.6875 \n",
"L 36.8125 47.703125 \n",
"L 18.3125 47.703125 \n",
"L 18.3125 18.015625 \n",
"Q 18.3125 11.328125 20.140625 9.421875 \n",
"Q 21.96875 7.515625 27.59375 7.515625 \n",
"L 36.8125 7.515625 \n",
"L 36.8125 0 \n",
"L 27.59375 0 \n",
"Q 17.1875 0 13.234375 3.875 \n",
"Q 9.28125 7.765625 9.28125 18.015625 \n",
"L 9.28125 47.703125 \n",
"L 2.6875 47.703125 \n",
"L 2.6875 54.6875 \n",
"L 9.28125 54.6875 \n",
"L 9.28125 70.21875 \n",
"z\n",
"\" id=\"DejaVuSans-116\"/>\n",
" <path d=\"M 41.109375 46.296875 \n",
"Q 39.59375 47.171875 37.8125 47.578125 \n",
"Q 36.03125 48 33.890625 48 \n",
"Q 26.265625 48 22.1875 43.046875 \n",
"Q 18.109375 38.09375 18.109375 28.8125 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 20.953125 51.171875 25.484375 53.578125 \n",
"Q 30.03125 56 36.53125 56 \n",
"Q 37.453125 56 38.578125 55.875 \n",
"Q 39.703125 55.765625 41.0625 55.515625 \n",
"z\n",
"\" id=\"DejaVuSans-114\"/>\n",
" <path d=\"M 34.28125 27.484375 \n",
"Q 23.390625 27.484375 19.1875 25 \n",
"Q 14.984375 22.515625 14.984375 16.5 \n",
"Q 14.984375 11.71875 18.140625 8.90625 \n",
"Q 21.296875 6.109375 26.703125 6.109375 \n",
"Q 34.1875 6.109375 38.703125 11.40625 \n",
"Q 43.21875 16.703125 43.21875 25.484375 \n",
"L 43.21875 27.484375 \n",
"z\n",
"M 52.203125 31.203125 \n",
"L 52.203125 0 \n",
"L 43.21875 0 \n",
"L 43.21875 8.296875 \n",
"Q 40.140625 3.328125 35.546875 0.953125 \n",
"Q 30.953125 -1.421875 24.3125 -1.421875 \n",
"Q 15.921875 -1.421875 10.953125 3.296875 \n",
"Q 6 8.015625 6 15.921875 \n",
"Q 6 25.140625 12.171875 29.828125 \n",
"Q 18.359375 34.515625 30.609375 34.515625 \n",
"L 43.21875 34.515625 \n",
"L 43.21875 35.40625 \n",
"Q 43.21875 41.609375 39.140625 45 \n",
"Q 35.0625 48.390625 27.6875 48.390625 \n",
"Q 23 48.390625 18.546875 47.265625 \n",
"Q 14.109375 46.140625 10.015625 43.890625 \n",
"L 10.015625 52.203125 \n",
"Q 14.9375 54.109375 19.578125 55.046875 \n",
"Q 24.21875 56 28.609375 56 \n",
"Q 40.484375 56 46.34375 49.84375 \n",
"Q 52.203125 43.703125 52.203125 31.203125 \n",
"z\n",
"\" id=\"DejaVuSans-97\"/>\n",
" <path d=\"M 9.421875 54.6875 \n",
"L 18.40625 54.6875 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 64.59375 \n",
"L 9.421875 64.59375 \n",
"z\n",
"\" id=\"DejaVuSans-105\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-110\"/>\n",
" <path id=\"DejaVuSans-32\"/>\n",
" <path d=\"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"\" id=\"DejaVuSans-108\"/>\n",
" <path d=\"M 44.28125 53.078125 \n",
"L 44.28125 44.578125 \n",
"Q 40.484375 46.53125 36.375 47.5 \n",
"Q 32.28125 48.484375 27.875 48.484375 \n",
"Q 21.1875 48.484375 17.84375 46.4375 \n",
"Q 14.5 44.390625 14.5 40.28125 \n",
"Q 14.5 37.15625 16.890625 35.375 \n",
"Q 19.28125 33.59375 26.515625 31.984375 \n",
"L 29.59375 31.296875 \n",
"Q 39.15625 29.25 43.1875 25.515625 \n",
"Q 47.21875 21.78125 47.21875 15.09375 \n",
"Q 47.21875 7.46875 41.1875 3.015625 \n",
"Q 35.15625 -1.421875 24.609375 -1.421875 \n",
"Q 20.21875 -1.421875 15.453125 -0.5625 \n",
"Q 10.6875 0.296875 5.421875 2 \n",
"L 5.421875 11.28125 \n",
"Q 10.40625 8.6875 15.234375 7.390625 \n",
"Q 20.0625 6.109375 24.8125 6.109375 \n",
"Q 31.15625 6.109375 34.5625 8.28125 \n",
"Q 37.984375 10.453125 37.984375 14.40625 \n",
"Q 37.984375 18.0625 35.515625 20.015625 \n",
"Q 33.0625 21.96875 24.703125 23.78125 \n",
"L 21.578125 24.515625 \n",
"Q 13.234375 26.265625 9.515625 29.90625 \n",
"Q 5.8125 33.546875 5.8125 39.890625 \n",
"Q 5.8125 47.609375 11.28125 51.796875 \n",
"Q 16.75 56 26.8125 56 \n",
"Q 31.78125 56 36.171875 55.265625 \n",
"Q 40.578125 54.546875 44.28125 53.078125 \n",
"z\n",
"\" id=\"DejaVuSans-115\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-108\"/>\n",
" <use x=\"292.333984\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"353.515625\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"405.615234\" xlink:href=\"#DejaVuSans-115\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_26\">\n",
" <path d=\"M 142.634375 74.409375 \n",
"L 162.634375 74.409375 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_27\"/>\n",
" <g id=\"text_13\">\n",
" <!-- train acc -->\n",
" <g transform=\"translate(170.634375 77.909375)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"325.830078\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"380.810547\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_28\">\n",
" <path d=\"M 142.634375 89.0875 \n",
"L 162.634375 89.0875 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_29\"/>\n",
" <g id=\"text_14\">\n",
" <!-- test acc -->\n",
" <g transform=\"translate(170.634375 92.5875)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"100.732422\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"152.832031\" xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"192.041016\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"223.828125\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"285.107422\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"340.087891\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"pdaed99b1c6\">\n",
" <rect height=\"135.9\" width=\"195.3\" x=\"30.103125\" y=\"7.2\"/>\n",
" </clipPath>\n",
" </defs>\n",
"</svg>\n"
],
"text/plain": [
"<Figure size 252x180 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"lr, num_epochs, batch_size = 0.1, 10, 128\n",
"train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=224)\n",
"d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())"
]
},
{
"cell_type": "markdown",
"id": "3b78340b-c3f8-4617-876b-79f7e89d7d2e",
"metadata": {},
"source": [
"注意:这是典型的训练失败案例。\n",
"\n",
"- 思考:如何(调参以实现)提高准确性?"
]
},
{
"cell_type": "markdown",
"id": "0d7743da-c831-4ad6-bb10-bd55e05a7178",
"metadata": {
"jp-MarkdownHeadingCollapsed": true,
"slideshow": {
"slide_type": "-"
},
"tags": []
},
"source": [
"## 含并行连结的网络(GoogLeNet)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "8892c059-5c03-4cb2-9a2f-5d3cfecbf832",
"metadata": {
"origin_pos": 2,
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"import torch\n",
"from torch import nn\n",
"from torch.nn import functional as F\n",
"from d2l import torch as d2l"
]
},
{
"cell_type": "markdown",
"id": "f161d0dd-95c0-4f0b-97e4-8e33bec1c5ac",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Inception块"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "4c8873f6-a2c8-43ed-bfb6-702d37fa897b",
"metadata": {
"origin_pos": 2,
"slideshow": {
"slide_type": "-"
},
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"class Inception(nn.Module):\n",
" # c1--c4是每条路径的输出通道数\n",
" def __init__(self, in_channels, c1, c2, c3, c4, **kwargs):\n",
" super(Inception, self).__init__(**kwargs)\n",
" # 线路1,单1x1卷积层\n",
" self.p1_1 = nn.Conv2d(in_channels, c1, kernel_size=1)\n",
" # 线路2,1x1卷积层后接3x3卷积层\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",
" # 线路3,1x1卷积层后接5x5卷积层\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",
" # 线路4,3x3最大汇聚层后接1x1卷积层\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",
"\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",
" # 在通道维度上连结输出\n",
" return torch.cat((p1, p2, p3, p4), dim=1)"
]
},
{
"cell_type": "markdown",
"id": "1f734be6-59ed-4dd2-b60f-5f7616942401",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"GoogLeNet模型"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "2ae4258c-339b-4bb2-b78a-7ad180697576",
"metadata": {
"origin_pos": 22,
"tab": [
"pytorch"
]
},
"outputs": [],
"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",
"\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",
"\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",
"\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",
"\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",
"\n",
"net = nn.Sequential(b1, b2, b3, b4, b5, nn.Linear(1024, 10))"
]
},
{
"cell_type": "markdown",
"id": "0d0f8c4d-c45f-4610-9d0d-eccc76839e4a",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"为了使Fashion-MNIST上的训练短小精悍,我们将输入的高和宽从224降到96"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "23870be5-1556-405a-bcef-2c0fe26cb645",
"metadata": {
"origin_pos": 26,
"tab": [
"pytorch"
]
},
"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"
]
}
],
"source": [
"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)"
]
},
{
"cell_type": "markdown",
"id": "9b814549-6649-4548-9297-d3847abaced1",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"训练模型"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "54f90511-0268-4d50-9316-a8ddbc953670",
"metadata": {
"origin_pos": 29,
"tab": [
"pytorch"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loss 0.244, train acc 0.908, test acc 0.896\n",
"3490.2 examples/sec on cuda:0\n"
]
},
{
"data": {
"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",
"<!-- Created with matplotlib (https://matplotlib.org/) -->\n",
"<svg height=\"180.65625pt\" version=\"1.1\" viewBox=\"0 0 238.965625 180.65625\" width=\"238.965625pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
" <metadata>\n",
" <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" 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>2022-01-17T01:55:44.273318</dc:date>\n",
" <dc:format>image/svg+xml</dc:format>\n",
" <dc:creator>\n",
" <cc:Agent>\n",
" <dc:title>Matplotlib v3.3.3, 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-linecap:butt;stroke-linejoin:round;}</style>\n",
" </defs>\n",
" <g id=\"figure_1\">\n",
" <g id=\"patch_1\">\n",
" <path d=\"M 0 180.65625 \n",
"L 238.965625 180.65625 \n",
"L 238.965625 0 \n",
"L 0 0 \n",
"z\n",
"\" style=\"fill:none;\"/>\n",
" </g>\n",
" <g id=\"axes_1\">\n",
" <g id=\"patch_2\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"L 30.103125 7.2 \n",
"z\n",
"\" style=\"fill:#ffffff;\"/>\n",
" </g>\n",
" <g id=\"matplotlib.axis_1\">\n",
" <g id=\"xtick_1\">\n",
" <g id=\"line2d_1\">\n",
" <path clip-path=\"url(#p09795e3910)\" d=\"M 51.803125 143.1 \n",
"L 51.803125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_2\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L 0 3.5 \n",
"\" id=\"mf78ab9d40e\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"51.803125\" xlink:href=\"#mf78ab9d40e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_1\">\n",
" <!-- 2 -->\n",
" <g transform=\"translate(48.621875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 19.1875 8.296875 \n",
"L 53.609375 8.296875 \n",
"L 53.609375 0 \n",
"L 7.328125 0 \n",
"L 7.328125 8.296875 \n",
"Q 12.9375 14.109375 22.625 23.890625 \n",
"Q 32.328125 33.6875 34.8125 36.53125 \n",
"Q 39.546875 41.84375 41.421875 45.53125 \n",
"Q 43.3125 49.21875 43.3125 52.78125 \n",
"Q 43.3125 58.59375 39.234375 62.25 \n",
"Q 35.15625 65.921875 28.609375 65.921875 \n",
"Q 23.96875 65.921875 18.8125 64.3125 \n",
"Q 13.671875 62.703125 7.8125 59.421875 \n",
"L 7.8125 69.390625 \n",
"Q 13.765625 71.78125 18.9375 73 \n",
"Q 24.125 74.21875 28.421875 74.21875 \n",
"Q 39.75 74.21875 46.484375 68.546875 \n",
"Q 53.21875 62.890625 53.21875 53.421875 \n",
"Q 53.21875 48.921875 51.53125 44.890625 \n",
"Q 49.859375 40.875 45.40625 35.40625 \n",
"Q 44.1875 33.984375 37.640625 27.21875 \n",
"Q 31.109375 20.453125 19.1875 8.296875 \n",
"z\n",
"\" id=\"DejaVuSans-50\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-50\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_2\">\n",
" <g id=\"line2d_3\">\n",
" <path clip-path=\"url(#p09795e3910)\" d=\"M 95.203125 143.1 \n",
"L 95.203125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_4\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"95.203125\" xlink:href=\"#mf78ab9d40e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_2\">\n",
" <!-- 4 -->\n",
" <g transform=\"translate(92.021875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 37.796875 64.3125 \n",
"L 12.890625 25.390625 \n",
"L 37.796875 25.390625 \n",
"z\n",
"M 35.203125 72.90625 \n",
"L 47.609375 72.90625 \n",
"L 47.609375 25.390625 \n",
"L 58.015625 25.390625 \n",
"L 58.015625 17.1875 \n",
"L 47.609375 17.1875 \n",
"L 47.609375 0 \n",
"L 37.796875 0 \n",
"L 37.796875 17.1875 \n",
"L 4.890625 17.1875 \n",
"L 4.890625 26.703125 \n",
"z\n",
"\" id=\"DejaVuSans-52\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-52\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_3\">\n",
" <g id=\"line2d_5\">\n",
" <path clip-path=\"url(#p09795e3910)\" d=\"M 138.603125 143.1 \n",
"L 138.603125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_6\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"138.603125\" xlink:href=\"#mf78ab9d40e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_3\">\n",
" <!-- 6 -->\n",
" <g transform=\"translate(135.421875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 33.015625 40.375 \n",
"Q 26.375 40.375 22.484375 35.828125 \n",
"Q 18.609375 31.296875 18.609375 23.390625 \n",
"Q 18.609375 15.53125 22.484375 10.953125 \n",
"Q 26.375 6.390625 33.015625 6.390625 \n",
"Q 39.65625 6.390625 43.53125 10.953125 \n",
"Q 47.40625 15.53125 47.40625 23.390625 \n",
"Q 47.40625 31.296875 43.53125 35.828125 \n",
"Q 39.65625 40.375 33.015625 40.375 \n",
"z\n",
"M 52.59375 71.296875 \n",
"L 52.59375 62.3125 \n",
"Q 48.875 64.0625 45.09375 64.984375 \n",
"Q 41.3125 65.921875 37.59375 65.921875 \n",
"Q 27.828125 65.921875 22.671875 59.328125 \n",
"Q 17.53125 52.734375 16.796875 39.40625 \n",
"Q 19.671875 43.65625 24.015625 45.921875 \n",
"Q 28.375 48.1875 33.59375 48.1875 \n",
"Q 44.578125 48.1875 50.953125 41.515625 \n",
"Q 57.328125 34.859375 57.328125 23.390625 \n",
"Q 57.328125 12.15625 50.6875 5.359375 \n",
"Q 44.046875 -1.421875 33.015625 -1.421875 \n",
"Q 20.359375 -1.421875 13.671875 8.265625 \n",
"Q 6.984375 17.96875 6.984375 36.375 \n",
"Q 6.984375 53.65625 15.1875 63.9375 \n",
"Q 23.390625 74.21875 37.203125 74.21875 \n",
"Q 40.921875 74.21875 44.703125 73.484375 \n",
"Q 48.484375 72.75 52.59375 71.296875 \n",
"z\n",
"\" id=\"DejaVuSans-54\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-54\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_4\">\n",
" <g id=\"line2d_7\">\n",
" <path clip-path=\"url(#p09795e3910)\" d=\"M 182.003125 143.1 \n",
"L 182.003125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_8\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"182.003125\" xlink:href=\"#mf78ab9d40e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_4\">\n",
" <!-- 8 -->\n",
" <g transform=\"translate(178.821875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 31.78125 34.625 \n",
"Q 24.75 34.625 20.71875 30.859375 \n",
"Q 16.703125 27.09375 16.703125 20.515625 \n",
"Q 16.703125 13.921875 20.71875 10.15625 \n",
"Q 24.75 6.390625 31.78125 6.390625 \n",
"Q 38.8125 6.390625 42.859375 10.171875 \n",
"Q 46.921875 13.96875 46.921875 20.515625 \n",
"Q 46.921875 27.09375 42.890625 30.859375 \n",
"Q 38.875 34.625 31.78125 34.625 \n",
"z\n",
"M 21.921875 38.8125 \n",
"Q 15.578125 40.375 12.03125 44.71875 \n",
"Q 8.5 49.078125 8.5 55.328125 \n",
"Q 8.5 64.0625 14.71875 69.140625 \n",
"Q 20.953125 74.21875 31.78125 74.21875 \n",
"Q 42.671875 74.21875 48.875 69.140625 \n",
"Q 55.078125 64.0625 55.078125 55.328125 \n",
"Q 55.078125 49.078125 51.53125 44.71875 \n",
"Q 48 40.375 41.703125 38.8125 \n",
"Q 48.828125 37.15625 52.796875 32.3125 \n",
"Q 56.78125 27.484375 56.78125 20.515625 \n",
"Q 56.78125 9.90625 50.3125 4.234375 \n",
"Q 43.84375 -1.421875 31.78125 -1.421875 \n",
"Q 19.734375 -1.421875 13.25 4.234375 \n",
"Q 6.78125 9.90625 6.78125 20.515625 \n",
"Q 6.78125 27.484375 10.78125 32.3125 \n",
"Q 14.796875 37.15625 21.921875 38.8125 \n",
"z\n",
"M 18.3125 54.390625 \n",
"Q 18.3125 48.734375 21.84375 45.5625 \n",
"Q 25.390625 42.390625 31.78125 42.390625 \n",
"Q 38.140625 42.390625 41.71875 45.5625 \n",
"Q 45.3125 48.734375 45.3125 54.390625 \n",
"Q 45.3125 60.0625 41.71875 63.234375 \n",
"Q 38.140625 66.40625 31.78125 66.40625 \n",
"Q 25.390625 66.40625 21.84375 63.234375 \n",
"Q 18.3125 60.0625 18.3125 54.390625 \n",
"z\n",
"\" id=\"DejaVuSans-56\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-56\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_5\">\n",
" <g id=\"line2d_9\">\n",
" <path clip-path=\"url(#p09795e3910)\" d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_10\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"225.403125\" xlink:href=\"#mf78ab9d40e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_5\">\n",
" <!-- 10 -->\n",
" <g transform=\"translate(219.040625 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 12.40625 8.296875 \n",
"L 28.515625 8.296875 \n",
"L 28.515625 63.921875 \n",
"L 10.984375 60.40625 \n",
"L 10.984375 69.390625 \n",
"L 28.421875 72.90625 \n",
"L 38.28125 72.90625 \n",
"L 38.28125 8.296875 \n",
"L 54.390625 8.296875 \n",
"L 54.390625 0 \n",
"L 12.40625 0 \n",
"z\n",
"\" id=\"DejaVuSans-49\"/>\n",
" <path d=\"M 31.78125 66.40625 \n",
"Q 24.171875 66.40625 20.328125 58.90625 \n",
"Q 16.5 51.421875 16.5 36.375 \n",
"Q 16.5 21.390625 20.328125 13.890625 \n",
"Q 24.171875 6.390625 31.78125 6.390625 \n",
"Q 39.453125 6.390625 43.28125 13.890625 \n",
"Q 47.125 21.390625 47.125 36.375 \n",
"Q 47.125 51.421875 43.28125 58.90625 \n",
"Q 39.453125 66.40625 31.78125 66.40625 \n",
"z\n",
"M 31.78125 74.21875 \n",
"Q 44.046875 74.21875 50.515625 64.515625 \n",
"Q 56.984375 54.828125 56.984375 36.375 \n",
"Q 56.984375 17.96875 50.515625 8.265625 \n",
"Q 44.046875 -1.421875 31.78125 -1.421875 \n",
"Q 19.53125 -1.421875 13.0625 8.265625 \n",
"Q 6.59375 17.96875 6.59375 36.375 \n",
"Q 6.59375 54.828125 13.0625 64.515625 \n",
"Q 19.53125 74.21875 31.78125 74.21875 \n",
"z\n",
"\" id=\"DejaVuSans-48\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_6\">\n",
" <!-- epoch -->\n",
" <g transform=\"translate(112.525 171.376563)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 56.203125 29.59375 \n",
"L 56.203125 25.203125 \n",
"L 14.890625 25.203125 \n",
"Q 15.484375 15.921875 20.484375 11.0625 \n",
"Q 25.484375 6.203125 34.421875 6.203125 \n",
"Q 39.59375 6.203125 44.453125 7.46875 \n",
"Q 49.3125 8.734375 54.109375 11.28125 \n",
"L 54.109375 2.78125 \n",
"Q 49.265625 0.734375 44.1875 -0.34375 \n",
"Q 39.109375 -1.421875 33.890625 -1.421875 \n",
"Q 20.796875 -1.421875 13.15625 6.1875 \n",
"Q 5.515625 13.8125 5.515625 26.8125 \n",
"Q 5.515625 40.234375 12.765625 48.109375 \n",
"Q 20.015625 56 32.328125 56 \n",
"Q 43.359375 56 49.78125 48.890625 \n",
"Q 56.203125 41.796875 56.203125 29.59375 \n",
"z\n",
"M 47.21875 32.234375 \n",
"Q 47.125 39.59375 43.09375 43.984375 \n",
"Q 39.0625 48.390625 32.421875 48.390625 \n",
"Q 24.90625 48.390625 20.390625 44.140625 \n",
"Q 15.875 39.890625 15.1875 32.171875 \n",
"z\n",
"\" id=\"DejaVuSans-101\"/>\n",
" <path d=\"M 18.109375 8.203125 \n",
"L 18.109375 -20.796875 \n",
"L 9.078125 -20.796875 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.390625 \n",
"Q 20.953125 51.265625 25.265625 53.625 \n",
"Q 29.59375 56 35.59375 56 \n",
"Q 45.5625 56 51.78125 48.09375 \n",
"Q 58.015625 40.1875 58.015625 27.296875 \n",
"Q 58.015625 14.40625 51.78125 6.484375 \n",
"Q 45.5625 -1.421875 35.59375 -1.421875 \n",
"Q 29.59375 -1.421875 25.265625 0.953125 \n",
"Q 20.953125 3.328125 18.109375 8.203125 \n",
"z\n",
"M 48.6875 27.296875 \n",
"Q 48.6875 37.203125 44.609375 42.84375 \n",
"Q 40.53125 48.484375 33.40625 48.484375 \n",
"Q 26.265625 48.484375 22.1875 42.84375 \n",
"Q 18.109375 37.203125 18.109375 27.296875 \n",
"Q 18.109375 17.390625 22.1875 11.75 \n",
"Q 26.265625 6.109375 33.40625 6.109375 \n",
"Q 40.53125 6.109375 44.609375 11.75 \n",
"Q 48.6875 17.390625 48.6875 27.296875 \n",
"z\n",
"\" id=\"DejaVuSans-112\"/>\n",
" <path d=\"M 30.609375 48.390625 \n",
"Q 23.390625 48.390625 19.1875 42.75 \n",
"Q 14.984375 37.109375 14.984375 27.296875 \n",
"Q 14.984375 17.484375 19.15625 11.84375 \n",
"Q 23.34375 6.203125 30.609375 6.203125 \n",
"Q 37.796875 6.203125 41.984375 11.859375 \n",
"Q 46.1875 17.53125 46.1875 27.296875 \n",
"Q 46.1875 37.015625 41.984375 42.703125 \n",
"Q 37.796875 48.390625 30.609375 48.390625 \n",
"z\n",
"M 30.609375 56 \n",
"Q 42.328125 56 49.015625 48.375 \n",
"Q 55.71875 40.765625 55.71875 27.296875 \n",
"Q 55.71875 13.875 49.015625 6.21875 \n",
"Q 42.328125 -1.421875 30.609375 -1.421875 \n",
"Q 18.84375 -1.421875 12.171875 6.21875 \n",
"Q 5.515625 13.875 5.515625 27.296875 \n",
"Q 5.515625 40.765625 12.171875 48.375 \n",
"Q 18.84375 56 30.609375 56 \n",
"z\n",
"\" id=\"DejaVuSans-111\"/>\n",
" <path d=\"M 48.78125 52.59375 \n",
"L 48.78125 44.1875 \n",
"Q 44.96875 46.296875 41.140625 47.34375 \n",
"Q 37.3125 48.390625 33.40625 48.390625 \n",
"Q 24.65625 48.390625 19.8125 42.84375 \n",
"Q 14.984375 37.3125 14.984375 27.296875 \n",
"Q 14.984375 17.28125 19.8125 11.734375 \n",
"Q 24.65625 6.203125 33.40625 6.203125 \n",
"Q 37.3125 6.203125 41.140625 7.25 \n",
"Q 44.96875 8.296875 48.78125 10.40625 \n",
"L 48.78125 2.09375 \n",
"Q 45.015625 0.34375 40.984375 -0.53125 \n",
"Q 36.96875 -1.421875 32.421875 -1.421875 \n",
"Q 20.0625 -1.421875 12.78125 6.34375 \n",
"Q 5.515625 14.109375 5.515625 27.296875 \n",
"Q 5.515625 40.671875 12.859375 48.328125 \n",
"Q 20.21875 56 33.015625 56 \n",
"Q 37.15625 56 41.109375 55.140625 \n",
"Q 45.0625 54.296875 48.78125 52.59375 \n",
"z\n",
"\" id=\"DejaVuSans-99\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 75.984375 \n",
"L 18.109375 75.984375 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-104\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"61.523438\" xlink:href=\"#DejaVuSans-112\"/>\n",
" <use x=\"125\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"186.181641\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"241.162109\" xlink:href=\"#DejaVuSans-104\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"matplotlib.axis_2\">\n",
" <g id=\"ytick_1\">\n",
" <g id=\"line2d_11\">\n",
" <path clip-path=\"url(#p09795e3910)\" d=\"M 30.103125 142.903506 \n",
"L 225.403125 142.903506 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_12\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L -3.5 0 \n",
"\" id=\"m14dfb1b958\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m14dfb1b958\" y=\"142.903506\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_7\">\n",
" <!-- 0.0 -->\n",
" <g transform=\"translate(7.2 146.702725)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 10.6875 12.40625 \n",
"L 21 12.40625 \n",
"L 21 0 \n",
"L 10.6875 0 \n",
"z\n",
"\" id=\"DejaVuSans-46\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_2\">\n",
" <g id=\"line2d_13\">\n",
" <path clip-path=\"url(#p09795e3910)\" d=\"M 30.103125 114.763114 \n",
"L 225.403125 114.763114 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_14\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m14dfb1b958\" y=\"114.763114\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_8\">\n",
" <!-- 0.5 -->\n",
" <g transform=\"translate(7.2 118.562332)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 10.796875 72.90625 \n",
"L 49.515625 72.90625 \n",
"L 49.515625 64.59375 \n",
"L 19.828125 64.59375 \n",
"L 19.828125 46.734375 \n",
"Q 21.96875 47.46875 24.109375 47.828125 \n",
"Q 26.265625 48.1875 28.421875 48.1875 \n",
"Q 40.625 48.1875 47.75 41.5 \n",
"Q 54.890625 34.8125 54.890625 23.390625 \n",
"Q 54.890625 11.625 47.5625 5.09375 \n",
"Q 40.234375 -1.421875 26.90625 -1.421875 \n",
"Q 22.3125 -1.421875 17.546875 -0.640625 \n",
"Q 12.796875 0.140625 7.71875 1.703125 \n",
"L 7.71875 11.625 \n",
"Q 12.109375 9.234375 16.796875 8.0625 \n",
"Q 21.484375 6.890625 26.703125 6.890625 \n",
"Q 35.15625 6.890625 40.078125 11.328125 \n",
"Q 45.015625 15.765625 45.015625 23.390625 \n",
"Q 45.015625 31 40.078125 35.4375 \n",
"Q 35.15625 39.890625 26.703125 39.890625 \n",
"Q 22.75 39.890625 18.8125 39.015625 \n",
"Q 14.890625 38.140625 10.796875 36.28125 \n",
"z\n",
"\" id=\"DejaVuSans-53\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_3\">\n",
" <g id=\"line2d_15\">\n",
" <path clip-path=\"url(#p09795e3910)\" d=\"M 30.103125 86.622721 \n",
"L 225.403125 86.622721 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_16\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m14dfb1b958\" y=\"86.622721\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_9\">\n",
" <!-- 1.0 -->\n",
" <g transform=\"translate(7.2 90.42194)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_4\">\n",
" <g id=\"line2d_17\">\n",
" <path clip-path=\"url(#p09795e3910)\" d=\"M 30.103125 58.482328 \n",
"L 225.403125 58.482328 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_18\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m14dfb1b958\" y=\"58.482328\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_10\">\n",
" <!-- 1.5 -->\n",
" <g transform=\"translate(7.2 62.281547)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_5\">\n",
" <g id=\"line2d_19\">\n",
" <path clip-path=\"url(#p09795e3910)\" d=\"M 30.103125 30.341935 \n",
"L 225.403125 30.341935 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_20\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m14dfb1b958\" y=\"30.341935\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_11\">\n",
" <!-- 2.0 -->\n",
" <g transform=\"translate(7.2 34.141154)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-50\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_21\">\n",
" <path clip-path=\"url(#p09795e3910)\" d=\"M 12.70611 13.377273 \n",
"L 17.009095 13.90688 \n",
"L 21.31208 17.196704 \n",
"L 25.615065 25.694433 \n",
"L 29.91805 36.449557 \n",
"L 30.103125 36.858035 \n",
"L 34.40611 89.268567 \n",
"L 38.709095 92.243738 \n",
"L 43.01208 93.391841 \n",
"L 47.315065 96.436116 \n",
"L 51.61805 99.047836 \n",
"L 51.803125 99.132284 \n",
"L 56.10611 113.214916 \n",
"L 60.409095 113.910894 \n",
"L 64.71208 114.456847 \n",
"L 69.015065 115.012329 \n",
"L 73.31805 115.450369 \n",
"L 73.503125 115.469142 \n",
"L 77.80611 119.5286 \n",
"L 82.109095 119.427363 \n",
"L 86.41208 119.898056 \n",
"L 90.715065 120.38242 \n",
"L 95.01805 120.588845 \n",
"L 95.203125 120.596856 \n",
"L 99.50611 122.568743 \n",
"L 103.809095 122.8493 \n",
"L 108.11208 123.261757 \n",
"L 112.415065 123.445023 \n",
"L 116.71805 123.468607 \n",
"L 116.903125 123.475009 \n",
"L 121.20611 124.32142 \n",
"L 125.509095 124.915181 \n",
"L 129.81208 124.999079 \n",
"L 134.115065 124.917528 \n",
"L 138.41805 125.130637 \n",
"L 138.603125 125.126753 \n",
"L 142.90611 126.466769 \n",
"L 147.209095 126.442227 \n",
"L 151.51208 126.532549 \n",
"L 155.815065 126.45239 \n",
"L 160.11805 126.433656 \n",
"L 160.303125 126.432254 \n",
"L 164.60611 127.701192 \n",
"L 168.909095 127.315125 \n",
"L 173.21208 127.328209 \n",
"L 177.515065 127.344343 \n",
"L 181.81805 127.3673 \n",
"L 182.003125 127.359543 \n",
"L 186.30611 128.034549 \n",
"L 190.609095 128.230584 \n",
"L 194.91208 128.305978 \n",
"L 199.215065 128.459244 \n",
"L 203.51805 128.39711 \n",
"L 203.703125 128.377816 \n",
"L 208.00611 129.461992 \n",
"L 212.309095 129.209328 \n",
"L 216.61208 129.317615 \n",
"L 220.915065 129.284636 \n",
"L 225.21805 129.184874 \n",
"L 225.403125 129.165658 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_22\">\n",
" <path clip-path=\"url(#p09795e3910)\" d=\"M 12.70611 136.922727 \n",
"L 17.009095 135.70766 \n",
"L 21.31208 134.108058 \n",
"L 25.615065 131.196072 \n",
"L 29.91805 127.599331 \n",
"L 30.103125 127.453493 \n",
"L 34.40611 107.94077 \n",
"L 38.709095 106.834444 \n",
"L 43.01208 106.084286 \n",
"L 47.315065 104.794361 \n",
"L 51.61805 103.699854 \n",
"L 51.803125 103.670171 \n",
"L 56.10611 97.860912 \n",
"L 60.409095 97.567783 \n",
"L 64.71208 97.373939 \n",
"L 69.015065 97.196644 \n",
"L 73.31805 97.004219 \n",
"L 73.503125 97.007464 \n",
"L 77.80611 95.539519 \n",
"L 82.109095 95.407138 \n",
"L 86.41208 95.282637 \n",
"L 90.715065 95.160106 \n",
"L 95.01805 95.080914 \n",
"L 95.203125 95.082661 \n",
"L 99.50611 94.357547 \n",
"L 103.809095 94.29372 \n",
"L 108.11208 94.102241 \n",
"L 112.415065 93.989953 \n",
"L 116.71805 93.956622 \n",
"L 116.903125 93.950479 \n",
"L 121.20611 93.63418 \n",
"L 125.509095 93.437972 \n",
"L 129.81208 93.382026 \n",
"L 134.115065 93.439154 \n",
"L 138.41805 93.355234 \n",
"L 138.603125 93.359531 \n",
"L 142.90611 92.93918 \n",
"L 147.209095 92.910813 \n",
"L 151.51208 92.869838 \n",
"L 155.815065 92.880081 \n",
"L 160.11805 92.893792 \n",
"L 160.303125 92.898028 \n",
"L 164.60611 92.608228 \n",
"L 168.909095 92.537309 \n",
"L 173.21208 92.527854 \n",
"L 177.515065 92.517216 \n",
"L 181.81805 92.507997 \n",
"L 182.003125 92.505001 \n",
"L 186.30611 92.229997 \n",
"L 190.609095 92.116527 \n",
"L 194.91208 92.102344 \n",
"L 199.215065 92.095252 \n",
"L 203.51805 92.122201 \n",
"L 203.703125 92.13261 \n",
"L 208.00611 91.691017 \n",
"L 212.309095 91.721749 \n",
"L 216.61208 91.73672 \n",
"L 220.915065 91.765482 \n",
"L 225.21805 91.814888 \n",
"L 225.403125 91.824941 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_23\">\n",
" <path clip-path=\"url(#p09795e3910)\" d=\"M 30.103125 110.575823 \n",
"L 51.803125 99.049518 \n",
"L 73.503125 95.132376 \n",
"L 95.203125 94.535799 \n",
"L 116.903125 95.768349 \n",
"L 138.603125 93.590282 \n",
"L 160.303125 93.911083 \n",
"L 182.003125 94.980418 \n",
"L 203.703125 92.881144 \n",
"L 225.403125 92.470294 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"patch_3\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 30.103125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_4\">\n",
" <path d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_5\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_6\">\n",
" <path d=\"M 30.103125 7.2 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"legend_1\">\n",
" <g id=\"patch_7\">\n",
" <path d=\"M 140.634375 59.234375 \n",
"L 218.403125 59.234375 \n",
"Q 220.403125 59.234375 220.403125 57.234375 \n",
"L 220.403125 14.2 \n",
"Q 220.403125 12.2 218.403125 12.2 \n",
"L 140.634375 12.2 \n",
"Q 138.634375 12.2 138.634375 14.2 \n",
"L 138.634375 57.234375 \n",
"Q 138.634375 59.234375 140.634375 59.234375 \n",
"z\n",
"\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\n",
" </g>\n",
" <g id=\"line2d_24\">\n",
" <path d=\"M 142.634375 20.298438 \n",
"L 162.634375 20.298438 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_25\"/>\n",
" <g id=\"text_12\">\n",
" <!-- train loss -->\n",
" <g transform=\"translate(170.634375 23.798438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 18.3125 70.21875 \n",
"L 18.3125 54.6875 \n",
"L 36.8125 54.6875 \n",
"L 36.8125 47.703125 \n",
"L 18.3125 47.703125 \n",
"L 18.3125 18.015625 \n",
"Q 18.3125 11.328125 20.140625 9.421875 \n",
"Q 21.96875 7.515625 27.59375 7.515625 \n",
"L 36.8125 7.515625 \n",
"L 36.8125 0 \n",
"L 27.59375 0 \n",
"Q 17.1875 0 13.234375 3.875 \n",
"Q 9.28125 7.765625 9.28125 18.015625 \n",
"L 9.28125 47.703125 \n",
"L 2.6875 47.703125 \n",
"L 2.6875 54.6875 \n",
"L 9.28125 54.6875 \n",
"L 9.28125 70.21875 \n",
"z\n",
"\" id=\"DejaVuSans-116\"/>\n",
" <path d=\"M 41.109375 46.296875 \n",
"Q 39.59375 47.171875 37.8125 47.578125 \n",
"Q 36.03125 48 33.890625 48 \n",
"Q 26.265625 48 22.1875 43.046875 \n",
"Q 18.109375 38.09375 18.109375 28.8125 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 20.953125 51.171875 25.484375 53.578125 \n",
"Q 30.03125 56 36.53125 56 \n",
"Q 37.453125 56 38.578125 55.875 \n",
"Q 39.703125 55.765625 41.0625 55.515625 \n",
"z\n",
"\" id=\"DejaVuSans-114\"/>\n",
" <path d=\"M 34.28125 27.484375 \n",
"Q 23.390625 27.484375 19.1875 25 \n",
"Q 14.984375 22.515625 14.984375 16.5 \n",
"Q 14.984375 11.71875 18.140625 8.90625 \n",
"Q 21.296875 6.109375 26.703125 6.109375 \n",
"Q 34.1875 6.109375 38.703125 11.40625 \n",
"Q 43.21875 16.703125 43.21875 25.484375 \n",
"L 43.21875 27.484375 \n",
"z\n",
"M 52.203125 31.203125 \n",
"L 52.203125 0 \n",
"L 43.21875 0 \n",
"L 43.21875 8.296875 \n",
"Q 40.140625 3.328125 35.546875 0.953125 \n",
"Q 30.953125 -1.421875 24.3125 -1.421875 \n",
"Q 15.921875 -1.421875 10.953125 3.296875 \n",
"Q 6 8.015625 6 15.921875 \n",
"Q 6 25.140625 12.171875 29.828125 \n",
"Q 18.359375 34.515625 30.609375 34.515625 \n",
"L 43.21875 34.515625 \n",
"L 43.21875 35.40625 \n",
"Q 43.21875 41.609375 39.140625 45 \n",
"Q 35.0625 48.390625 27.6875 48.390625 \n",
"Q 23 48.390625 18.546875 47.265625 \n",
"Q 14.109375 46.140625 10.015625 43.890625 \n",
"L 10.015625 52.203125 \n",
"Q 14.9375 54.109375 19.578125 55.046875 \n",
"Q 24.21875 56 28.609375 56 \n",
"Q 40.484375 56 46.34375 49.84375 \n",
"Q 52.203125 43.703125 52.203125 31.203125 \n",
"z\n",
"\" id=\"DejaVuSans-97\"/>\n",
" <path d=\"M 9.421875 54.6875 \n",
"L 18.40625 54.6875 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 64.59375 \n",
"L 9.421875 64.59375 \n",
"z\n",
"\" id=\"DejaVuSans-105\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-110\"/>\n",
" <path id=\"DejaVuSans-32\"/>\n",
" <path d=\"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"\" id=\"DejaVuSans-108\"/>\n",
" <path d=\"M 44.28125 53.078125 \n",
"L 44.28125 44.578125 \n",
"Q 40.484375 46.53125 36.375 47.5 \n",
"Q 32.28125 48.484375 27.875 48.484375 \n",
"Q 21.1875 48.484375 17.84375 46.4375 \n",
"Q 14.5 44.390625 14.5 40.28125 \n",
"Q 14.5 37.15625 16.890625 35.375 \n",
"Q 19.28125 33.59375 26.515625 31.984375 \n",
"L 29.59375 31.296875 \n",
"Q 39.15625 29.25 43.1875 25.515625 \n",
"Q 47.21875 21.78125 47.21875 15.09375 \n",
"Q 47.21875 7.46875 41.1875 3.015625 \n",
"Q 35.15625 -1.421875 24.609375 -1.421875 \n",
"Q 20.21875 -1.421875 15.453125 -0.5625 \n",
"Q 10.6875 0.296875 5.421875 2 \n",
"L 5.421875 11.28125 \n",
"Q 10.40625 8.6875 15.234375 7.390625 \n",
"Q 20.0625 6.109375 24.8125 6.109375 \n",
"Q 31.15625 6.109375 34.5625 8.28125 \n",
"Q 37.984375 10.453125 37.984375 14.40625 \n",
"Q 37.984375 18.0625 35.515625 20.015625 \n",
"Q 33.0625 21.96875 24.703125 23.78125 \n",
"L 21.578125 24.515625 \n",
"Q 13.234375 26.265625 9.515625 29.90625 \n",
"Q 5.8125 33.546875 5.8125 39.890625 \n",
"Q 5.8125 47.609375 11.28125 51.796875 \n",
"Q 16.75 56 26.8125 56 \n",
"Q 31.78125 56 36.171875 55.265625 \n",
"Q 40.578125 54.546875 44.28125 53.078125 \n",
"z\n",
"\" id=\"DejaVuSans-115\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-108\"/>\n",
" <use x=\"292.333984\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"353.515625\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"405.615234\" xlink:href=\"#DejaVuSans-115\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_26\">\n",
" <path d=\"M 142.634375 34.976562 \n",
"L 162.634375 34.976562 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_27\"/>\n",
" <g id=\"text_13\">\n",
" <!-- train acc -->\n",
" <g transform=\"translate(170.634375 38.476562)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"325.830078\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"380.810547\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_28\">\n",
" <path d=\"M 142.634375 49.654688 \n",
"L 162.634375 49.654688 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_29\"/>\n",
" <g id=\"text_14\">\n",
" <!-- test acc -->\n",
" <g transform=\"translate(170.634375 53.154688)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"100.732422\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"152.832031\" xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"192.041016\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"223.828125\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"285.107422\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"340.087891\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"p09795e3910\">\n",
" <rect height=\"135.9\" width=\"195.3\" x=\"30.103125\" y=\"7.2\"/>\n",
" </clipPath>\n",
" </defs>\n",
"</svg>\n"
],
"text/plain": [
"<Figure size 252x180 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"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())"
]
},
{
"cell_type": "markdown",
"id": "7edc7652-ed97-4851-aac8-ed51bacae82f",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"## 批量规范化\n",
"\n",
"从零实现"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "c59dccc1-434e-4134-a988-b4f8c4ec63f0",
"metadata": {
"origin_pos": 2,
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"import torch\n",
"from torch import nn\n",
"from d2l import torch as d2l"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "d6629b56-83fb-47bf-93cf-98becf2a088f",
"metadata": {
"origin_pos": 2,
"slideshow": {
"slide_type": "slide"
},
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"def batch_norm(X, gamma, beta, moving_mean, moving_var, eps, momentum):\n",
" if not torch.is_grad_enabled(): # 判断当前模式是训练模式还是预测模式\n",
" # 如果是在预测模式下,直接使用传入的移动平均所得的均值和方差\n",
" X_hat = (X - moving_mean) / torch.sqrt(moving_var + eps)\n",
" else:\n",
" assert len(X.shape) in (2, 4)\n",
" if len(X.shape) == 2: # 使用全连接层的情况,计算特征维上的均值和方差\n",
" mean = X.mean(dim=0)\n",
" var = ((X - mean) ** 2).mean(dim=0)\n",
" else: # 使用二维卷积层的情况,计算通道维上(axis=1)的均值和方差\n",
" # 这里我们需要保持X的形状以便后面可以做广播运算\n",
" mean = X.mean(dim=(0, 2, 3), keepdim=True)\n",
" var = ((X - mean) ** 2).mean(dim=(0, 2, 3), keepdim=True)\n",
" # 训练模式下,用当前的均值和方差做标准化\n",
" X_hat = (X - mean) / torch.sqrt(var + eps)\n",
" # 更新移动平均的均值和方差\n",
" moving_mean = momentum * moving_mean + (1.0 - momentum) * mean\n",
" moving_var = momentum * moving_var + (1.0 - momentum) * var\n",
" Y = gamma * X_hat + beta # 缩放和移位\n",
" return Y, moving_mean.data, moving_var.data"
]
},
{
"cell_type": "markdown",
"id": "f4872957-57c1-40c0-be54-6d00862c9d2f",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"创建一个正确的`BatchNorm`层"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "f4c0ef6f-7546-4949-bfd9-b1e10f3abade",
"metadata": {
"origin_pos": 6,
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"class BatchNorm(nn.Module):\n",
" def __init__(self, num_features, num_dims):\n",
" # num_features:全连接层的输出数量或卷积层的输出通道数。\n",
" # num_dims:2表示全连接层,4表示卷积层\n",
" super().__init__()\n",
" if num_dims == 2:\n",
" shape = (1, num_features)\n",
" else:\n",
" shape = (1, num_features, 1, 1)\n",
" # 参与求梯度和迭代的拉伸和偏移参数,分别初始化成1和0\n",
" self.gamma = nn.Parameter(torch.ones(shape))\n",
" self.beta = nn.Parameter(torch.zeros(shape))\n",
" # 非模型参数:均值、方差\n",
" self.moving_mean = torch.zeros(shape)\n",
" self.moving_var = torch.ones(shape)\n",
"\n",
" def forward(self, X):\n",
" if self.moving_mean.device != X.device:\n",
" # 如果X不在内存上,将moving_mean和moving_var复制到X所在显存上\n",
" self.moving_mean = self.moving_mean.to(X.device)\n",
" self.moving_var = self.moving_var.to(X.device)\n",
" # 保存更新过的moving_mean和moving_var\n",
" Y, self.moving_mean, self.moving_var = batch_norm(\n",
" X, self.gamma, self.beta, self.moving_mean,\n",
" self.moving_var, eps=1e-5, momentum=0.9)\n",
" return Y"
]
},
{
"cell_type": "markdown",
"id": "cf94bbae-4049-443e-82f9-b483b2b25a8e",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"应用`BatchNorm`\n",
"于LeNet模型"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "cc24a7dc-08ac-4a95-bfbc-b8aada3842e7",
"metadata": {
"origin_pos": 10,
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"net = nn.Sequential(\n",
" nn.Conv2d(1, 6, kernel_size=5), BatchNorm(6, num_dims=4), nn.Sigmoid(),\n",
" nn.AvgPool2d(kernel_size=2, stride=2),\n",
" nn.Conv2d(6, 16, kernel_size=5), BatchNorm(16, num_dims=4), nn.Sigmoid(),\n",
" nn.AvgPool2d(kernel_size=2, stride=2), nn.Flatten(),\n",
" nn.Linear(16*4*4, 120), BatchNorm(120, num_dims=2), nn.Sigmoid(),\n",
" nn.Linear(120, 84), BatchNorm(84, num_dims=2), nn.Sigmoid(),\n",
" nn.Linear(84, 10))"
]
},
{
"cell_type": "markdown",
"id": "fbcd9945-0abd-4443-962f-56e928685200",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"在Fashion-MNIST数据集上训练网络。注意:学习率大很多"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "3ab1ecba-57e6-4cec-a902-e68dc49b64d1",
"metadata": {
"origin_pos": 13,
"tab": [
"pytorch"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loss 0.263, train acc 0.902, test acc 0.857\n",
"31378.5 examples/sec on cuda:0\n"
]
},
{
"data": {
"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",
"<!-- Created with matplotlib (https://matplotlib.org/) -->\n",
"<svg height=\"180.65625pt\" version=\"1.1\" viewBox=\"0 0 238.965625 180.65625\" width=\"238.965625pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
" <metadata>\n",
" <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" 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>2022-03-22T19:59:51.169965</dc:date>\n",
" <dc:format>image/svg+xml</dc:format>\n",
" <dc:creator>\n",
" <cc:Agent>\n",
" <dc:title>Matplotlib v3.3.3, 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-linecap:butt;stroke-linejoin:round;}</style>\n",
" </defs>\n",
" <g id=\"figure_1\">\n",
" <g id=\"patch_1\">\n",
" <path d=\"M 0 180.65625 \n",
"L 238.965625 180.65625 \n",
"L 238.965625 0 \n",
"L 0 0 \n",
"z\n",
"\" style=\"fill:none;\"/>\n",
" </g>\n",
" <g id=\"axes_1\">\n",
" <g id=\"patch_2\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"L 30.103125 7.2 \n",
"z\n",
"\" style=\"fill:#ffffff;\"/>\n",
" </g>\n",
" <g id=\"matplotlib.axis_1\">\n",
" <g id=\"xtick_1\">\n",
" <g id=\"line2d_1\">\n",
" <path clip-path=\"url(#pa12f7f6824)\" d=\"M 51.803125 143.1 \n",
"L 51.803125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_2\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L 0 3.5 \n",
"\" id=\"m9ea0bfe744\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"51.803125\" xlink:href=\"#m9ea0bfe744\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_1\">\n",
" <!-- 2 -->\n",
" <g transform=\"translate(48.621875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 19.1875 8.296875 \n",
"L 53.609375 8.296875 \n",
"L 53.609375 0 \n",
"L 7.328125 0 \n",
"L 7.328125 8.296875 \n",
"Q 12.9375 14.109375 22.625 23.890625 \n",
"Q 32.328125 33.6875 34.8125 36.53125 \n",
"Q 39.546875 41.84375 41.421875 45.53125 \n",
"Q 43.3125 49.21875 43.3125 52.78125 \n",
"Q 43.3125 58.59375 39.234375 62.25 \n",
"Q 35.15625 65.921875 28.609375 65.921875 \n",
"Q 23.96875 65.921875 18.8125 64.3125 \n",
"Q 13.671875 62.703125 7.8125 59.421875 \n",
"L 7.8125 69.390625 \n",
"Q 13.765625 71.78125 18.9375 73 \n",
"Q 24.125 74.21875 28.421875 74.21875 \n",
"Q 39.75 74.21875 46.484375 68.546875 \n",
"Q 53.21875 62.890625 53.21875 53.421875 \n",
"Q 53.21875 48.921875 51.53125 44.890625 \n",
"Q 49.859375 40.875 45.40625 35.40625 \n",
"Q 44.1875 33.984375 37.640625 27.21875 \n",
"Q 31.109375 20.453125 19.1875 8.296875 \n",
"z\n",
"\" id=\"DejaVuSans-50\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-50\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_2\">\n",
" <g id=\"line2d_3\">\n",
" <path clip-path=\"url(#pa12f7f6824)\" d=\"M 95.203125 143.1 \n",
"L 95.203125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_4\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"95.203125\" xlink:href=\"#m9ea0bfe744\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_2\">\n",
" <!-- 4 -->\n",
" <g transform=\"translate(92.021875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 37.796875 64.3125 \n",
"L 12.890625 25.390625 \n",
"L 37.796875 25.390625 \n",
"z\n",
"M 35.203125 72.90625 \n",
"L 47.609375 72.90625 \n",
"L 47.609375 25.390625 \n",
"L 58.015625 25.390625 \n",
"L 58.015625 17.1875 \n",
"L 47.609375 17.1875 \n",
"L 47.609375 0 \n",
"L 37.796875 0 \n",
"L 37.796875 17.1875 \n",
"L 4.890625 17.1875 \n",
"L 4.890625 26.703125 \n",
"z\n",
"\" id=\"DejaVuSans-52\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-52\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_3\">\n",
" <g id=\"line2d_5\">\n",
" <path clip-path=\"url(#pa12f7f6824)\" d=\"M 138.603125 143.1 \n",
"L 138.603125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_6\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"138.603125\" xlink:href=\"#m9ea0bfe744\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_3\">\n",
" <!-- 6 -->\n",
" <g transform=\"translate(135.421875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 33.015625 40.375 \n",
"Q 26.375 40.375 22.484375 35.828125 \n",
"Q 18.609375 31.296875 18.609375 23.390625 \n",
"Q 18.609375 15.53125 22.484375 10.953125 \n",
"Q 26.375 6.390625 33.015625 6.390625 \n",
"Q 39.65625 6.390625 43.53125 10.953125 \n",
"Q 47.40625 15.53125 47.40625 23.390625 \n",
"Q 47.40625 31.296875 43.53125 35.828125 \n",
"Q 39.65625 40.375 33.015625 40.375 \n",
"z\n",
"M 52.59375 71.296875 \n",
"L 52.59375 62.3125 \n",
"Q 48.875 64.0625 45.09375 64.984375 \n",
"Q 41.3125 65.921875 37.59375 65.921875 \n",
"Q 27.828125 65.921875 22.671875 59.328125 \n",
"Q 17.53125 52.734375 16.796875 39.40625 \n",
"Q 19.671875 43.65625 24.015625 45.921875 \n",
"Q 28.375 48.1875 33.59375 48.1875 \n",
"Q 44.578125 48.1875 50.953125 41.515625 \n",
"Q 57.328125 34.859375 57.328125 23.390625 \n",
"Q 57.328125 12.15625 50.6875 5.359375 \n",
"Q 44.046875 -1.421875 33.015625 -1.421875 \n",
"Q 20.359375 -1.421875 13.671875 8.265625 \n",
"Q 6.984375 17.96875 6.984375 36.375 \n",
"Q 6.984375 53.65625 15.1875 63.9375 \n",
"Q 23.390625 74.21875 37.203125 74.21875 \n",
"Q 40.921875 74.21875 44.703125 73.484375 \n",
"Q 48.484375 72.75 52.59375 71.296875 \n",
"z\n",
"\" id=\"DejaVuSans-54\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-54\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_4\">\n",
" <g id=\"line2d_7\">\n",
" <path clip-path=\"url(#pa12f7f6824)\" d=\"M 182.003125 143.1 \n",
"L 182.003125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_8\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"182.003125\" xlink:href=\"#m9ea0bfe744\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_4\">\n",
" <!-- 8 -->\n",
" <g transform=\"translate(178.821875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 31.78125 34.625 \n",
"Q 24.75 34.625 20.71875 30.859375 \n",
"Q 16.703125 27.09375 16.703125 20.515625 \n",
"Q 16.703125 13.921875 20.71875 10.15625 \n",
"Q 24.75 6.390625 31.78125 6.390625 \n",
"Q 38.8125 6.390625 42.859375 10.171875 \n",
"Q 46.921875 13.96875 46.921875 20.515625 \n",
"Q 46.921875 27.09375 42.890625 30.859375 \n",
"Q 38.875 34.625 31.78125 34.625 \n",
"z\n",
"M 21.921875 38.8125 \n",
"Q 15.578125 40.375 12.03125 44.71875 \n",
"Q 8.5 49.078125 8.5 55.328125 \n",
"Q 8.5 64.0625 14.71875 69.140625 \n",
"Q 20.953125 74.21875 31.78125 74.21875 \n",
"Q 42.671875 74.21875 48.875 69.140625 \n",
"Q 55.078125 64.0625 55.078125 55.328125 \n",
"Q 55.078125 49.078125 51.53125 44.71875 \n",
"Q 48 40.375 41.703125 38.8125 \n",
"Q 48.828125 37.15625 52.796875 32.3125 \n",
"Q 56.78125 27.484375 56.78125 20.515625 \n",
"Q 56.78125 9.90625 50.3125 4.234375 \n",
"Q 43.84375 -1.421875 31.78125 -1.421875 \n",
"Q 19.734375 -1.421875 13.25 4.234375 \n",
"Q 6.78125 9.90625 6.78125 20.515625 \n",
"Q 6.78125 27.484375 10.78125 32.3125 \n",
"Q 14.796875 37.15625 21.921875 38.8125 \n",
"z\n",
"M 18.3125 54.390625 \n",
"Q 18.3125 48.734375 21.84375 45.5625 \n",
"Q 25.390625 42.390625 31.78125 42.390625 \n",
"Q 38.140625 42.390625 41.71875 45.5625 \n",
"Q 45.3125 48.734375 45.3125 54.390625 \n",
"Q 45.3125 60.0625 41.71875 63.234375 \n",
"Q 38.140625 66.40625 31.78125 66.40625 \n",
"Q 25.390625 66.40625 21.84375 63.234375 \n",
"Q 18.3125 60.0625 18.3125 54.390625 \n",
"z\n",
"\" id=\"DejaVuSans-56\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-56\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_5\">\n",
" <g id=\"line2d_9\">\n",
" <path clip-path=\"url(#pa12f7f6824)\" d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_10\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"225.403125\" xlink:href=\"#m9ea0bfe744\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_5\">\n",
" <!-- 10 -->\n",
" <g transform=\"translate(219.040625 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 12.40625 8.296875 \n",
"L 28.515625 8.296875 \n",
"L 28.515625 63.921875 \n",
"L 10.984375 60.40625 \n",
"L 10.984375 69.390625 \n",
"L 28.421875 72.90625 \n",
"L 38.28125 72.90625 \n",
"L 38.28125 8.296875 \n",
"L 54.390625 8.296875 \n",
"L 54.390625 0 \n",
"L 12.40625 0 \n",
"z\n",
"\" id=\"DejaVuSans-49\"/>\n",
" <path d=\"M 31.78125 66.40625 \n",
"Q 24.171875 66.40625 20.328125 58.90625 \n",
"Q 16.5 51.421875 16.5 36.375 \n",
"Q 16.5 21.390625 20.328125 13.890625 \n",
"Q 24.171875 6.390625 31.78125 6.390625 \n",
"Q 39.453125 6.390625 43.28125 13.890625 \n",
"Q 47.125 21.390625 47.125 36.375 \n",
"Q 47.125 51.421875 43.28125 58.90625 \n",
"Q 39.453125 66.40625 31.78125 66.40625 \n",
"z\n",
"M 31.78125 74.21875 \n",
"Q 44.046875 74.21875 50.515625 64.515625 \n",
"Q 56.984375 54.828125 56.984375 36.375 \n",
"Q 56.984375 17.96875 50.515625 8.265625 \n",
"Q 44.046875 -1.421875 31.78125 -1.421875 \n",
"Q 19.53125 -1.421875 13.0625 8.265625 \n",
"Q 6.59375 17.96875 6.59375 36.375 \n",
"Q 6.59375 54.828125 13.0625 64.515625 \n",
"Q 19.53125 74.21875 31.78125 74.21875 \n",
"z\n",
"\" id=\"DejaVuSans-48\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_6\">\n",
" <!-- epoch -->\n",
" <g transform=\"translate(112.525 171.376563)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 56.203125 29.59375 \n",
"L 56.203125 25.203125 \n",
"L 14.890625 25.203125 \n",
"Q 15.484375 15.921875 20.484375 11.0625 \n",
"Q 25.484375 6.203125 34.421875 6.203125 \n",
"Q 39.59375 6.203125 44.453125 7.46875 \n",
"Q 49.3125 8.734375 54.109375 11.28125 \n",
"L 54.109375 2.78125 \n",
"Q 49.265625 0.734375 44.1875 -0.34375 \n",
"Q 39.109375 -1.421875 33.890625 -1.421875 \n",
"Q 20.796875 -1.421875 13.15625 6.1875 \n",
"Q 5.515625 13.8125 5.515625 26.8125 \n",
"Q 5.515625 40.234375 12.765625 48.109375 \n",
"Q 20.015625 56 32.328125 56 \n",
"Q 43.359375 56 49.78125 48.890625 \n",
"Q 56.203125 41.796875 56.203125 29.59375 \n",
"z\n",
"M 47.21875 32.234375 \n",
"Q 47.125 39.59375 43.09375 43.984375 \n",
"Q 39.0625 48.390625 32.421875 48.390625 \n",
"Q 24.90625 48.390625 20.390625 44.140625 \n",
"Q 15.875 39.890625 15.1875 32.171875 \n",
"z\n",
"\" id=\"DejaVuSans-101\"/>\n",
" <path d=\"M 18.109375 8.203125 \n",
"L 18.109375 -20.796875 \n",
"L 9.078125 -20.796875 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.390625 \n",
"Q 20.953125 51.265625 25.265625 53.625 \n",
"Q 29.59375 56 35.59375 56 \n",
"Q 45.5625 56 51.78125 48.09375 \n",
"Q 58.015625 40.1875 58.015625 27.296875 \n",
"Q 58.015625 14.40625 51.78125 6.484375 \n",
"Q 45.5625 -1.421875 35.59375 -1.421875 \n",
"Q 29.59375 -1.421875 25.265625 0.953125 \n",
"Q 20.953125 3.328125 18.109375 8.203125 \n",
"z\n",
"M 48.6875 27.296875 \n",
"Q 48.6875 37.203125 44.609375 42.84375 \n",
"Q 40.53125 48.484375 33.40625 48.484375 \n",
"Q 26.265625 48.484375 22.1875 42.84375 \n",
"Q 18.109375 37.203125 18.109375 27.296875 \n",
"Q 18.109375 17.390625 22.1875 11.75 \n",
"Q 26.265625 6.109375 33.40625 6.109375 \n",
"Q 40.53125 6.109375 44.609375 11.75 \n",
"Q 48.6875 17.390625 48.6875 27.296875 \n",
"z\n",
"\" id=\"DejaVuSans-112\"/>\n",
" <path d=\"M 30.609375 48.390625 \n",
"Q 23.390625 48.390625 19.1875 42.75 \n",
"Q 14.984375 37.109375 14.984375 27.296875 \n",
"Q 14.984375 17.484375 19.15625 11.84375 \n",
"Q 23.34375 6.203125 30.609375 6.203125 \n",
"Q 37.796875 6.203125 41.984375 11.859375 \n",
"Q 46.1875 17.53125 46.1875 27.296875 \n",
"Q 46.1875 37.015625 41.984375 42.703125 \n",
"Q 37.796875 48.390625 30.609375 48.390625 \n",
"z\n",
"M 30.609375 56 \n",
"Q 42.328125 56 49.015625 48.375 \n",
"Q 55.71875 40.765625 55.71875 27.296875 \n",
"Q 55.71875 13.875 49.015625 6.21875 \n",
"Q 42.328125 -1.421875 30.609375 -1.421875 \n",
"Q 18.84375 -1.421875 12.171875 6.21875 \n",
"Q 5.515625 13.875 5.515625 27.296875 \n",
"Q 5.515625 40.765625 12.171875 48.375 \n",
"Q 18.84375 56 30.609375 56 \n",
"z\n",
"\" id=\"DejaVuSans-111\"/>\n",
" <path d=\"M 48.78125 52.59375 \n",
"L 48.78125 44.1875 \n",
"Q 44.96875 46.296875 41.140625 47.34375 \n",
"Q 37.3125 48.390625 33.40625 48.390625 \n",
"Q 24.65625 48.390625 19.8125 42.84375 \n",
"Q 14.984375 37.3125 14.984375 27.296875 \n",
"Q 14.984375 17.28125 19.8125 11.734375 \n",
"Q 24.65625 6.203125 33.40625 6.203125 \n",
"Q 37.3125 6.203125 41.140625 7.25 \n",
"Q 44.96875 8.296875 48.78125 10.40625 \n",
"L 48.78125 2.09375 \n",
"Q 45.015625 0.34375 40.984375 -0.53125 \n",
"Q 36.96875 -1.421875 32.421875 -1.421875 \n",
"Q 20.0625 -1.421875 12.78125 6.34375 \n",
"Q 5.515625 14.109375 5.515625 27.296875 \n",
"Q 5.515625 40.671875 12.859375 48.328125 \n",
"Q 20.21875 56 33.015625 56 \n",
"Q 37.15625 56 41.109375 55.140625 \n",
"Q 45.0625 54.296875 48.78125 52.59375 \n",
"z\n",
"\" id=\"DejaVuSans-99\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 75.984375 \n",
"L 18.109375 75.984375 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-104\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"61.523438\" xlink:href=\"#DejaVuSans-112\"/>\n",
" <use x=\"125\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"186.181641\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"241.162109\" xlink:href=\"#DejaVuSans-104\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"matplotlib.axis_2\">\n",
" <g id=\"ytick_1\">\n",
" <g id=\"line2d_11\">\n",
" <path clip-path=\"url(#pa12f7f6824)\" d=\"M 30.103125 117.022605 \n",
"L 225.403125 117.022605 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_12\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L -3.5 0 \n",
"\" id=\"mf9e949237f\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mf9e949237f\" y=\"117.022605\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_7\">\n",
" <!-- 0.4 -->\n",
" <g transform=\"translate(7.2 120.821824)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 10.6875 12.40625 \n",
"L 21 12.40625 \n",
"L 21 0 \n",
"L 10.6875 0 \n",
"z\n",
"\" id=\"DejaVuSans-46\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-52\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_2\">\n",
" <g id=\"line2d_13\">\n",
" <path clip-path=\"url(#pa12f7f6824)\" d=\"M 30.103125 89.505023 \n",
"L 225.403125 89.505023 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_14\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mf9e949237f\" y=\"89.505023\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_8\">\n",
" <!-- 0.6 -->\n",
" <g transform=\"translate(7.2 93.304241)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-54\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_3\">\n",
" <g id=\"line2d_15\">\n",
" <path clip-path=\"url(#pa12f7f6824)\" d=\"M 30.103125 61.987441 \n",
"L 225.403125 61.987441 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_16\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mf9e949237f\" y=\"61.987441\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_9\">\n",
" <!-- 0.8 -->\n",
" <g transform=\"translate(7.2 65.786659)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-56\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_4\">\n",
" <g id=\"line2d_17\">\n",
" <path clip-path=\"url(#pa12f7f6824)\" d=\"M 30.103125 34.469858 \n",
"L 225.403125 34.469858 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_18\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#mf9e949237f\" y=\"34.469858\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_10\">\n",
" <!-- 1.0 -->\n",
" <g transform=\"translate(7.2 38.269077)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_19\">\n",
" <path clip-path=\"url(#pa12f7f6824)\" d=\"M 12.743125 13.377273 \n",
"L 17.083125 46.397412 \n",
"L 21.423125 59.886721 \n",
"L 25.763125 68.647004 \n",
"L 30.103125 74.757779 \n",
"L 34.443125 100.36069 \n",
"L 38.783125 102.501832 \n",
"L 43.123125 104.37194 \n",
"L 47.463125 105.662645 \n",
"L 51.803125 107.177099 \n",
"L 56.143125 113.198381 \n",
"L 60.483125 114.700054 \n",
"L 64.823125 115.44685 \n",
"L 69.163125 116.202276 \n",
"L 73.503125 116.361081 \n",
"L 77.843125 122.539128 \n",
"L 82.183125 121.282377 \n",
"L 86.523125 122.017011 \n",
"L 90.863125 121.430713 \n",
"L 95.203125 122.369264 \n",
"L 99.543125 125.328357 \n",
"L 103.883125 125.567811 \n",
"L 108.223125 125.851595 \n",
"L 112.563125 126.112816 \n",
"L 116.903125 126.298821 \n",
"L 121.243125 128.478373 \n",
"L 125.583125 127.962033 \n",
"L 129.923125 128.721506 \n",
"L 134.263125 128.759299 \n",
"L 138.603125 129.105499 \n",
"L 142.943125 128.598937 \n",
"L 147.283125 130.018452 \n",
"L 151.623125 130.154125 \n",
"L 155.963125 130.777771 \n",
"L 160.303125 131.204822 \n",
"L 164.643125 132.811009 \n",
"L 168.983125 132.908076 \n",
"L 173.323125 133.309402 \n",
"L 177.663125 133.06857 \n",
"L 182.003125 133.265446 \n",
"L 186.343125 133.84875 \n",
"L 190.683125 134.321602 \n",
"L 195.023125 134.833822 \n",
"L 199.363125 135.069339 \n",
"L 203.703125 134.965618 \n",
"L 208.043125 136.922727 \n",
"L 212.383125 136.173997 \n",
"L 216.723125 136.159232 \n",
"L 221.063125 136.218643 \n",
"L 225.403125 135.847372 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_20\">\n",
" <path clip-path=\"url(#pa12f7f6824)\" d=\"M 12.743125 88.649672 \n",
"L 17.083125 78.032121 \n",
"L 21.423125 73.867815 \n",
"L 25.763125 71.076682 \n",
"L 30.103125 68.951682 \n",
"L 34.443125 60.86222 \n",
"L 38.783125 60.021736 \n",
"L 43.123125 59.326096 \n",
"L 47.463125 58.85249 \n",
"L 51.803125 58.203773 \n",
"L 56.143125 55.853618 \n",
"L 60.483125 55.253272 \n",
"L 64.823125 54.900687 \n",
"L 69.163125 54.767277 \n",
"L 73.503125 54.690695 \n",
"L 77.843125 52.262976 \n",
"L 82.183125 52.74897 \n",
"L 86.523125 52.548855 \n",
"L 90.863125 52.897628 \n",
"L 95.203125 52.500754 \n",
"L 99.543125 51.999967 \n",
"L 103.883125 51.782699 \n",
"L 108.223125 51.515878 \n",
"L 112.563125 51.299563 \n",
"L 116.903125 51.212014 \n",
"L 121.243125 50.227516 \n",
"L 125.583125 50.376174 \n",
"L 129.923125 50.170341 \n",
"L 134.263125 50.141753 \n",
"L 138.603125 50.083793 \n",
"L 142.943125 50.513396 \n",
"L 147.283125 49.844438 \n",
"L 151.623125 49.876838 \n",
"L 155.963125 49.670052 \n",
"L 160.303125 49.563252 \n",
"L 164.643125 48.72951 \n",
"L 168.983125 48.75238 \n",
"L 173.323125 48.573229 \n",
"L 177.663125 48.720933 \n",
"L 182.003125 48.703328 \n",
"L 186.343125 48.192057 \n",
"L 190.683125 48.277821 \n",
"L 195.023125 48.100576 \n",
"L 199.363125 48.054835 \n",
"L 203.703125 48.086475 \n",
"L 208.043125 47.563123 \n",
"L 212.383125 47.849002 \n",
"L 216.723125 47.784203 \n",
"L 221.063125 47.794685 \n",
"L 225.403125 47.900732 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_21\">\n",
" <path clip-path=\"url(#pa12f7f6824)\" d=\"M 30.103125 66.926847 \n",
"L 51.803125 57.44704 \n",
"L 73.503125 60.749149 \n",
"L 95.203125 57.144346 \n",
"L 116.903125 57.680939 \n",
"L 138.603125 54.695281 \n",
"L 160.303125 55.328186 \n",
"L 182.003125 53.608337 \n",
"L 203.703125 53.91103 \n",
"L 225.403125 54.103653 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"patch_3\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 30.103125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_4\">\n",
" <path d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_5\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_6\">\n",
" <path d=\"M 30.103125 7.2 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"legend_1\">\n",
" <g id=\"patch_7\">\n",
" <path d=\"M 140.634375 98.667187 \n",
"L 218.403125 98.667187 \n",
"Q 220.403125 98.667187 220.403125 96.667187 \n",
"L 220.403125 53.632812 \n",
"Q 220.403125 51.632812 218.403125 51.632812 \n",
"L 140.634375 51.632812 \n",
"Q 138.634375 51.632812 138.634375 53.632812 \n",
"L 138.634375 96.667187 \n",
"Q 138.634375 98.667187 140.634375 98.667187 \n",
"z\n",
"\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\n",
" </g>\n",
" <g id=\"line2d_22\">\n",
" <path d=\"M 142.634375 59.73125 \n",
"L 162.634375 59.73125 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_23\"/>\n",
" <g id=\"text_11\">\n",
" <!-- train loss -->\n",
" <g transform=\"translate(170.634375 63.23125)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 18.3125 70.21875 \n",
"L 18.3125 54.6875 \n",
"L 36.8125 54.6875 \n",
"L 36.8125 47.703125 \n",
"L 18.3125 47.703125 \n",
"L 18.3125 18.015625 \n",
"Q 18.3125 11.328125 20.140625 9.421875 \n",
"Q 21.96875 7.515625 27.59375 7.515625 \n",
"L 36.8125 7.515625 \n",
"L 36.8125 0 \n",
"L 27.59375 0 \n",
"Q 17.1875 0 13.234375 3.875 \n",
"Q 9.28125 7.765625 9.28125 18.015625 \n",
"L 9.28125 47.703125 \n",
"L 2.6875 47.703125 \n",
"L 2.6875 54.6875 \n",
"L 9.28125 54.6875 \n",
"L 9.28125 70.21875 \n",
"z\n",
"\" id=\"DejaVuSans-116\"/>\n",
" <path d=\"M 41.109375 46.296875 \n",
"Q 39.59375 47.171875 37.8125 47.578125 \n",
"Q 36.03125 48 33.890625 48 \n",
"Q 26.265625 48 22.1875 43.046875 \n",
"Q 18.109375 38.09375 18.109375 28.8125 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 20.953125 51.171875 25.484375 53.578125 \n",
"Q 30.03125 56 36.53125 56 \n",
"Q 37.453125 56 38.578125 55.875 \n",
"Q 39.703125 55.765625 41.0625 55.515625 \n",
"z\n",
"\" id=\"DejaVuSans-114\"/>\n",
" <path d=\"M 34.28125 27.484375 \n",
"Q 23.390625 27.484375 19.1875 25 \n",
"Q 14.984375 22.515625 14.984375 16.5 \n",
"Q 14.984375 11.71875 18.140625 8.90625 \n",
"Q 21.296875 6.109375 26.703125 6.109375 \n",
"Q 34.1875 6.109375 38.703125 11.40625 \n",
"Q 43.21875 16.703125 43.21875 25.484375 \n",
"L 43.21875 27.484375 \n",
"z\n",
"M 52.203125 31.203125 \n",
"L 52.203125 0 \n",
"L 43.21875 0 \n",
"L 43.21875 8.296875 \n",
"Q 40.140625 3.328125 35.546875 0.953125 \n",
"Q 30.953125 -1.421875 24.3125 -1.421875 \n",
"Q 15.921875 -1.421875 10.953125 3.296875 \n",
"Q 6 8.015625 6 15.921875 \n",
"Q 6 25.140625 12.171875 29.828125 \n",
"Q 18.359375 34.515625 30.609375 34.515625 \n",
"L 43.21875 34.515625 \n",
"L 43.21875 35.40625 \n",
"Q 43.21875 41.609375 39.140625 45 \n",
"Q 35.0625 48.390625 27.6875 48.390625 \n",
"Q 23 48.390625 18.546875 47.265625 \n",
"Q 14.109375 46.140625 10.015625 43.890625 \n",
"L 10.015625 52.203125 \n",
"Q 14.9375 54.109375 19.578125 55.046875 \n",
"Q 24.21875 56 28.609375 56 \n",
"Q 40.484375 56 46.34375 49.84375 \n",
"Q 52.203125 43.703125 52.203125 31.203125 \n",
"z\n",
"\" id=\"DejaVuSans-97\"/>\n",
" <path d=\"M 9.421875 54.6875 \n",
"L 18.40625 54.6875 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 64.59375 \n",
"L 9.421875 64.59375 \n",
"z\n",
"\" id=\"DejaVuSans-105\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-110\"/>\n",
" <path id=\"DejaVuSans-32\"/>\n",
" <path d=\"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"\" id=\"DejaVuSans-108\"/>\n",
" <path d=\"M 44.28125 53.078125 \n",
"L 44.28125 44.578125 \n",
"Q 40.484375 46.53125 36.375 47.5 \n",
"Q 32.28125 48.484375 27.875 48.484375 \n",
"Q 21.1875 48.484375 17.84375 46.4375 \n",
"Q 14.5 44.390625 14.5 40.28125 \n",
"Q 14.5 37.15625 16.890625 35.375 \n",
"Q 19.28125 33.59375 26.515625 31.984375 \n",
"L 29.59375 31.296875 \n",
"Q 39.15625 29.25 43.1875 25.515625 \n",
"Q 47.21875 21.78125 47.21875 15.09375 \n",
"Q 47.21875 7.46875 41.1875 3.015625 \n",
"Q 35.15625 -1.421875 24.609375 -1.421875 \n",
"Q 20.21875 -1.421875 15.453125 -0.5625 \n",
"Q 10.6875 0.296875 5.421875 2 \n",
"L 5.421875 11.28125 \n",
"Q 10.40625 8.6875 15.234375 7.390625 \n",
"Q 20.0625 6.109375 24.8125 6.109375 \n",
"Q 31.15625 6.109375 34.5625 8.28125 \n",
"Q 37.984375 10.453125 37.984375 14.40625 \n",
"Q 37.984375 18.0625 35.515625 20.015625 \n",
"Q 33.0625 21.96875 24.703125 23.78125 \n",
"L 21.578125 24.515625 \n",
"Q 13.234375 26.265625 9.515625 29.90625 \n",
"Q 5.8125 33.546875 5.8125 39.890625 \n",
"Q 5.8125 47.609375 11.28125 51.796875 \n",
"Q 16.75 56 26.8125 56 \n",
"Q 31.78125 56 36.171875 55.265625 \n",
"Q 40.578125 54.546875 44.28125 53.078125 \n",
"z\n",
"\" id=\"DejaVuSans-115\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-108\"/>\n",
" <use x=\"292.333984\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"353.515625\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"405.615234\" xlink:href=\"#DejaVuSans-115\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_24\">\n",
" <path d=\"M 142.634375 74.409375 \n",
"L 162.634375 74.409375 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_25\"/>\n",
" <g id=\"text_12\">\n",
" <!-- train acc -->\n",
" <g transform=\"translate(170.634375 77.909375)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"325.830078\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"380.810547\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_26\">\n",
" <path d=\"M 142.634375 89.0875 \n",
"L 162.634375 89.0875 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_27\"/>\n",
" <g id=\"text_13\">\n",
" <!-- test acc -->\n",
" <g transform=\"translate(170.634375 92.5875)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"100.732422\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"152.832031\" xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"192.041016\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"223.828125\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"285.107422\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"340.087891\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"pa12f7f6824\">\n",
" <rect height=\"135.9\" width=\"195.3\" x=\"30.103125\" y=\"7.2\"/>\n",
" </clipPath>\n",
" </defs>\n",
"</svg>\n"
],
"text/plain": [
"<Figure size 252x180 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"lr, num_epochs, batch_size = 1.0, 10, 256\n",
"train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)\n",
"d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())"
]
},
{
"cell_type": "markdown",
"id": "b8bc077b-1747-4de4-87c1-4da4e574df34",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"拉伸参数`gamma`和偏移参数`beta`"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "ed6c4a56-a677-4c93-9d13-8a3b5f5c489d",
"metadata": {
"origin_pos": 17,
"tab": [
"pytorch"
]
},
"outputs": [
{
"data": {
"text/plain": [
"(tensor([2.9182, 3.9908, 2.5709, 2.1960, 3.0324, 2.0170], device='cuda:0',\n",
" grad_fn=<ReshapeAliasBackward0>),\n",
" tensor([-0.4980, 2.6303, -2.3259, -1.4185, -3.2187, -2.1353], device='cuda:0',\n",
" grad_fn=<ReshapeAliasBackward0>))"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"net[1].gamma.reshape((-1,)), net[1].beta.reshape((-1,))"
]
},
{
"cell_type": "markdown",
"id": "57715920-0def-4217-96b1-4425f07b02f6",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"简明实现"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "ff5c985a-76c9-4a4a-bccc-feb3179e3c4b",
"metadata": {
"origin_pos": 21,
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"net = nn.Sequential(\n",
" nn.Conv2d(1, 6, kernel_size=5), nn.BatchNorm2d(6), nn.Sigmoid(),\n",
" nn.AvgPool2d(kernel_size=2, stride=2),\n",
" nn.Conv2d(6, 16, kernel_size=5), nn.BatchNorm2d(16), nn.Sigmoid(),\n",
" nn.AvgPool2d(kernel_size=2, stride=2), nn.Flatten(),\n",
" nn.Linear(256, 120), nn.BatchNorm1d(120), nn.Sigmoid(),\n",
" nn.Linear(120, 84), nn.BatchNorm1d(84), nn.Sigmoid(),\n",
" nn.Linear(84, 10))"
]
},
{
"cell_type": "markdown",
"id": "c991fda9-53a2-4510-9ee5-2968b3f521a5",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"使用相同超参数来训练模型。注意:通常高级API运行速度快得多,因为它的代码已编译为C++或CUDA"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "2e6a118b-c4db-4db0-a15f-ab361efb2051",
"metadata": {
"origin_pos": 24,
"tab": [
"pytorch"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loss 0.281, train acc 0.896, test acc 0.843\n",
"55970.4 examples/sec on cuda:0\n"
]
},
{
"data": {
"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",
"<!-- Created with matplotlib (https://matplotlib.org/) -->\n",
"<svg height=\"180.65625pt\" version=\"1.1\" viewBox=\"0 0 238.965625 180.65625\" width=\"238.965625pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
" <metadata>\n",
" <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" 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>2022-03-22T20:00:16.979860</dc:date>\n",
" <dc:format>image/svg+xml</dc:format>\n",
" <dc:creator>\n",
" <cc:Agent>\n",
" <dc:title>Matplotlib v3.3.3, 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-linecap:butt;stroke-linejoin:round;}</style>\n",
" </defs>\n",
" <g id=\"figure_1\">\n",
" <g id=\"patch_1\">\n",
" <path d=\"M 0 180.65625 \n",
"L 238.965625 180.65625 \n",
"L 238.965625 0 \n",
"L 0 0 \n",
"z\n",
"\" style=\"fill:none;\"/>\n",
" </g>\n",
" <g id=\"axes_1\">\n",
" <g id=\"patch_2\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"L 30.103125 7.2 \n",
"z\n",
"\" style=\"fill:#ffffff;\"/>\n",
" </g>\n",
" <g id=\"matplotlib.axis_1\">\n",
" <g id=\"xtick_1\">\n",
" <g id=\"line2d_1\">\n",
" <path clip-path=\"url(#pff870b7ffb)\" d=\"M 51.803125 143.1 \n",
"L 51.803125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_2\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L 0 3.5 \n",
"\" id=\"m77122eb10e\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"51.803125\" xlink:href=\"#m77122eb10e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_1\">\n",
" <!-- 2 -->\n",
" <g transform=\"translate(48.621875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 19.1875 8.296875 \n",
"L 53.609375 8.296875 \n",
"L 53.609375 0 \n",
"L 7.328125 0 \n",
"L 7.328125 8.296875 \n",
"Q 12.9375 14.109375 22.625 23.890625 \n",
"Q 32.328125 33.6875 34.8125 36.53125 \n",
"Q 39.546875 41.84375 41.421875 45.53125 \n",
"Q 43.3125 49.21875 43.3125 52.78125 \n",
"Q 43.3125 58.59375 39.234375 62.25 \n",
"Q 35.15625 65.921875 28.609375 65.921875 \n",
"Q 23.96875 65.921875 18.8125 64.3125 \n",
"Q 13.671875 62.703125 7.8125 59.421875 \n",
"L 7.8125 69.390625 \n",
"Q 13.765625 71.78125 18.9375 73 \n",
"Q 24.125 74.21875 28.421875 74.21875 \n",
"Q 39.75 74.21875 46.484375 68.546875 \n",
"Q 53.21875 62.890625 53.21875 53.421875 \n",
"Q 53.21875 48.921875 51.53125 44.890625 \n",
"Q 49.859375 40.875 45.40625 35.40625 \n",
"Q 44.1875 33.984375 37.640625 27.21875 \n",
"Q 31.109375 20.453125 19.1875 8.296875 \n",
"z\n",
"\" id=\"DejaVuSans-50\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-50\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_2\">\n",
" <g id=\"line2d_3\">\n",
" <path clip-path=\"url(#pff870b7ffb)\" d=\"M 95.203125 143.1 \n",
"L 95.203125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_4\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"95.203125\" xlink:href=\"#m77122eb10e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_2\">\n",
" <!-- 4 -->\n",
" <g transform=\"translate(92.021875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 37.796875 64.3125 \n",
"L 12.890625 25.390625 \n",
"L 37.796875 25.390625 \n",
"z\n",
"M 35.203125 72.90625 \n",
"L 47.609375 72.90625 \n",
"L 47.609375 25.390625 \n",
"L 58.015625 25.390625 \n",
"L 58.015625 17.1875 \n",
"L 47.609375 17.1875 \n",
"L 47.609375 0 \n",
"L 37.796875 0 \n",
"L 37.796875 17.1875 \n",
"L 4.890625 17.1875 \n",
"L 4.890625 26.703125 \n",
"z\n",
"\" id=\"DejaVuSans-52\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-52\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_3\">\n",
" <g id=\"line2d_5\">\n",
" <path clip-path=\"url(#pff870b7ffb)\" d=\"M 138.603125 143.1 \n",
"L 138.603125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_6\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"138.603125\" xlink:href=\"#m77122eb10e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_3\">\n",
" <!-- 6 -->\n",
" <g transform=\"translate(135.421875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 33.015625 40.375 \n",
"Q 26.375 40.375 22.484375 35.828125 \n",
"Q 18.609375 31.296875 18.609375 23.390625 \n",
"Q 18.609375 15.53125 22.484375 10.953125 \n",
"Q 26.375 6.390625 33.015625 6.390625 \n",
"Q 39.65625 6.390625 43.53125 10.953125 \n",
"Q 47.40625 15.53125 47.40625 23.390625 \n",
"Q 47.40625 31.296875 43.53125 35.828125 \n",
"Q 39.65625 40.375 33.015625 40.375 \n",
"z\n",
"M 52.59375 71.296875 \n",
"L 52.59375 62.3125 \n",
"Q 48.875 64.0625 45.09375 64.984375 \n",
"Q 41.3125 65.921875 37.59375 65.921875 \n",
"Q 27.828125 65.921875 22.671875 59.328125 \n",
"Q 17.53125 52.734375 16.796875 39.40625 \n",
"Q 19.671875 43.65625 24.015625 45.921875 \n",
"Q 28.375 48.1875 33.59375 48.1875 \n",
"Q 44.578125 48.1875 50.953125 41.515625 \n",
"Q 57.328125 34.859375 57.328125 23.390625 \n",
"Q 57.328125 12.15625 50.6875 5.359375 \n",
"Q 44.046875 -1.421875 33.015625 -1.421875 \n",
"Q 20.359375 -1.421875 13.671875 8.265625 \n",
"Q 6.984375 17.96875 6.984375 36.375 \n",
"Q 6.984375 53.65625 15.1875 63.9375 \n",
"Q 23.390625 74.21875 37.203125 74.21875 \n",
"Q 40.921875 74.21875 44.703125 73.484375 \n",
"Q 48.484375 72.75 52.59375 71.296875 \n",
"z\n",
"\" id=\"DejaVuSans-54\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-54\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_4\">\n",
" <g id=\"line2d_7\">\n",
" <path clip-path=\"url(#pff870b7ffb)\" d=\"M 182.003125 143.1 \n",
"L 182.003125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_8\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"182.003125\" xlink:href=\"#m77122eb10e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_4\">\n",
" <!-- 8 -->\n",
" <g transform=\"translate(178.821875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 31.78125 34.625 \n",
"Q 24.75 34.625 20.71875 30.859375 \n",
"Q 16.703125 27.09375 16.703125 20.515625 \n",
"Q 16.703125 13.921875 20.71875 10.15625 \n",
"Q 24.75 6.390625 31.78125 6.390625 \n",
"Q 38.8125 6.390625 42.859375 10.171875 \n",
"Q 46.921875 13.96875 46.921875 20.515625 \n",
"Q 46.921875 27.09375 42.890625 30.859375 \n",
"Q 38.875 34.625 31.78125 34.625 \n",
"z\n",
"M 21.921875 38.8125 \n",
"Q 15.578125 40.375 12.03125 44.71875 \n",
"Q 8.5 49.078125 8.5 55.328125 \n",
"Q 8.5 64.0625 14.71875 69.140625 \n",
"Q 20.953125 74.21875 31.78125 74.21875 \n",
"Q 42.671875 74.21875 48.875 69.140625 \n",
"Q 55.078125 64.0625 55.078125 55.328125 \n",
"Q 55.078125 49.078125 51.53125 44.71875 \n",
"Q 48 40.375 41.703125 38.8125 \n",
"Q 48.828125 37.15625 52.796875 32.3125 \n",
"Q 56.78125 27.484375 56.78125 20.515625 \n",
"Q 56.78125 9.90625 50.3125 4.234375 \n",
"Q 43.84375 -1.421875 31.78125 -1.421875 \n",
"Q 19.734375 -1.421875 13.25 4.234375 \n",
"Q 6.78125 9.90625 6.78125 20.515625 \n",
"Q 6.78125 27.484375 10.78125 32.3125 \n",
"Q 14.796875 37.15625 21.921875 38.8125 \n",
"z\n",
"M 18.3125 54.390625 \n",
"Q 18.3125 48.734375 21.84375 45.5625 \n",
"Q 25.390625 42.390625 31.78125 42.390625 \n",
"Q 38.140625 42.390625 41.71875 45.5625 \n",
"Q 45.3125 48.734375 45.3125 54.390625 \n",
"Q 45.3125 60.0625 41.71875 63.234375 \n",
"Q 38.140625 66.40625 31.78125 66.40625 \n",
"Q 25.390625 66.40625 21.84375 63.234375 \n",
"Q 18.3125 60.0625 18.3125 54.390625 \n",
"z\n",
"\" id=\"DejaVuSans-56\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-56\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_5\">\n",
" <g id=\"line2d_9\">\n",
" <path clip-path=\"url(#pff870b7ffb)\" d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_10\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"225.403125\" xlink:href=\"#m77122eb10e\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_5\">\n",
" <!-- 10 -->\n",
" <g transform=\"translate(219.040625 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 12.40625 8.296875 \n",
"L 28.515625 8.296875 \n",
"L 28.515625 63.921875 \n",
"L 10.984375 60.40625 \n",
"L 10.984375 69.390625 \n",
"L 28.421875 72.90625 \n",
"L 38.28125 72.90625 \n",
"L 38.28125 8.296875 \n",
"L 54.390625 8.296875 \n",
"L 54.390625 0 \n",
"L 12.40625 0 \n",
"z\n",
"\" id=\"DejaVuSans-49\"/>\n",
" <path d=\"M 31.78125 66.40625 \n",
"Q 24.171875 66.40625 20.328125 58.90625 \n",
"Q 16.5 51.421875 16.5 36.375 \n",
"Q 16.5 21.390625 20.328125 13.890625 \n",
"Q 24.171875 6.390625 31.78125 6.390625 \n",
"Q 39.453125 6.390625 43.28125 13.890625 \n",
"Q 47.125 21.390625 47.125 36.375 \n",
"Q 47.125 51.421875 43.28125 58.90625 \n",
"Q 39.453125 66.40625 31.78125 66.40625 \n",
"z\n",
"M 31.78125 74.21875 \n",
"Q 44.046875 74.21875 50.515625 64.515625 \n",
"Q 56.984375 54.828125 56.984375 36.375 \n",
"Q 56.984375 17.96875 50.515625 8.265625 \n",
"Q 44.046875 -1.421875 31.78125 -1.421875 \n",
"Q 19.53125 -1.421875 13.0625 8.265625 \n",
"Q 6.59375 17.96875 6.59375 36.375 \n",
"Q 6.59375 54.828125 13.0625 64.515625 \n",
"Q 19.53125 74.21875 31.78125 74.21875 \n",
"z\n",
"\" id=\"DejaVuSans-48\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_6\">\n",
" <!-- epoch -->\n",
" <g transform=\"translate(112.525 171.376563)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 56.203125 29.59375 \n",
"L 56.203125 25.203125 \n",
"L 14.890625 25.203125 \n",
"Q 15.484375 15.921875 20.484375 11.0625 \n",
"Q 25.484375 6.203125 34.421875 6.203125 \n",
"Q 39.59375 6.203125 44.453125 7.46875 \n",
"Q 49.3125 8.734375 54.109375 11.28125 \n",
"L 54.109375 2.78125 \n",
"Q 49.265625 0.734375 44.1875 -0.34375 \n",
"Q 39.109375 -1.421875 33.890625 -1.421875 \n",
"Q 20.796875 -1.421875 13.15625 6.1875 \n",
"Q 5.515625 13.8125 5.515625 26.8125 \n",
"Q 5.515625 40.234375 12.765625 48.109375 \n",
"Q 20.015625 56 32.328125 56 \n",
"Q 43.359375 56 49.78125 48.890625 \n",
"Q 56.203125 41.796875 56.203125 29.59375 \n",
"z\n",
"M 47.21875 32.234375 \n",
"Q 47.125 39.59375 43.09375 43.984375 \n",
"Q 39.0625 48.390625 32.421875 48.390625 \n",
"Q 24.90625 48.390625 20.390625 44.140625 \n",
"Q 15.875 39.890625 15.1875 32.171875 \n",
"z\n",
"\" id=\"DejaVuSans-101\"/>\n",
" <path d=\"M 18.109375 8.203125 \n",
"L 18.109375 -20.796875 \n",
"L 9.078125 -20.796875 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.390625 \n",
"Q 20.953125 51.265625 25.265625 53.625 \n",
"Q 29.59375 56 35.59375 56 \n",
"Q 45.5625 56 51.78125 48.09375 \n",
"Q 58.015625 40.1875 58.015625 27.296875 \n",
"Q 58.015625 14.40625 51.78125 6.484375 \n",
"Q 45.5625 -1.421875 35.59375 -1.421875 \n",
"Q 29.59375 -1.421875 25.265625 0.953125 \n",
"Q 20.953125 3.328125 18.109375 8.203125 \n",
"z\n",
"M 48.6875 27.296875 \n",
"Q 48.6875 37.203125 44.609375 42.84375 \n",
"Q 40.53125 48.484375 33.40625 48.484375 \n",
"Q 26.265625 48.484375 22.1875 42.84375 \n",
"Q 18.109375 37.203125 18.109375 27.296875 \n",
"Q 18.109375 17.390625 22.1875 11.75 \n",
"Q 26.265625 6.109375 33.40625 6.109375 \n",
"Q 40.53125 6.109375 44.609375 11.75 \n",
"Q 48.6875 17.390625 48.6875 27.296875 \n",
"z\n",
"\" id=\"DejaVuSans-112\"/>\n",
" <path d=\"M 30.609375 48.390625 \n",
"Q 23.390625 48.390625 19.1875 42.75 \n",
"Q 14.984375 37.109375 14.984375 27.296875 \n",
"Q 14.984375 17.484375 19.15625 11.84375 \n",
"Q 23.34375 6.203125 30.609375 6.203125 \n",
"Q 37.796875 6.203125 41.984375 11.859375 \n",
"Q 46.1875 17.53125 46.1875 27.296875 \n",
"Q 46.1875 37.015625 41.984375 42.703125 \n",
"Q 37.796875 48.390625 30.609375 48.390625 \n",
"z\n",
"M 30.609375 56 \n",
"Q 42.328125 56 49.015625 48.375 \n",
"Q 55.71875 40.765625 55.71875 27.296875 \n",
"Q 55.71875 13.875 49.015625 6.21875 \n",
"Q 42.328125 -1.421875 30.609375 -1.421875 \n",
"Q 18.84375 -1.421875 12.171875 6.21875 \n",
"Q 5.515625 13.875 5.515625 27.296875 \n",
"Q 5.515625 40.765625 12.171875 48.375 \n",
"Q 18.84375 56 30.609375 56 \n",
"z\n",
"\" id=\"DejaVuSans-111\"/>\n",
" <path d=\"M 48.78125 52.59375 \n",
"L 48.78125 44.1875 \n",
"Q 44.96875 46.296875 41.140625 47.34375 \n",
"Q 37.3125 48.390625 33.40625 48.390625 \n",
"Q 24.65625 48.390625 19.8125 42.84375 \n",
"Q 14.984375 37.3125 14.984375 27.296875 \n",
"Q 14.984375 17.28125 19.8125 11.734375 \n",
"Q 24.65625 6.203125 33.40625 6.203125 \n",
"Q 37.3125 6.203125 41.140625 7.25 \n",
"Q 44.96875 8.296875 48.78125 10.40625 \n",
"L 48.78125 2.09375 \n",
"Q 45.015625 0.34375 40.984375 -0.53125 \n",
"Q 36.96875 -1.421875 32.421875 -1.421875 \n",
"Q 20.0625 -1.421875 12.78125 6.34375 \n",
"Q 5.515625 14.109375 5.515625 27.296875 \n",
"Q 5.515625 40.671875 12.859375 48.328125 \n",
"Q 20.21875 56 33.015625 56 \n",
"Q 37.15625 56 41.109375 55.140625 \n",
"Q 45.0625 54.296875 48.78125 52.59375 \n",
"z\n",
"\" id=\"DejaVuSans-99\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 75.984375 \n",
"L 18.109375 75.984375 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-104\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"61.523438\" xlink:href=\"#DejaVuSans-112\"/>\n",
" <use x=\"125\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"186.181641\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"241.162109\" xlink:href=\"#DejaVuSans-104\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"matplotlib.axis_2\">\n",
" <g id=\"ytick_1\">\n",
" <g id=\"line2d_11\">\n",
" <path clip-path=\"url(#pff870b7ffb)\" d=\"M 30.103125 120.519208 \n",
"L 225.403125 120.519208 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_12\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L -3.5 0 \n",
"\" id=\"m86de3851a4\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m86de3851a4\" y=\"120.519208\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_7\">\n",
" <!-- 0.4 -->\n",
" <g transform=\"translate(7.2 124.318427)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 10.6875 12.40625 \n",
"L 21 12.40625 \n",
"L 21 0 \n",
"L 10.6875 0 \n",
"z\n",
"\" id=\"DejaVuSans-46\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-52\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_2\">\n",
" <g id=\"line2d_13\">\n",
" <path clip-path=\"url(#pff870b7ffb)\" d=\"M 30.103125 94.113885 \n",
"L 225.403125 94.113885 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_14\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m86de3851a4\" y=\"94.113885\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_8\">\n",
" <!-- 0.6 -->\n",
" <g transform=\"translate(7.2 97.913104)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-54\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_3\">\n",
" <g id=\"line2d_15\">\n",
" <path clip-path=\"url(#pff870b7ffb)\" d=\"M 30.103125 67.708563 \n",
"L 225.403125 67.708563 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_16\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m86de3851a4\" y=\"67.708563\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_9\">\n",
" <!-- 0.8 -->\n",
" <g transform=\"translate(7.2 71.507782)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-56\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_4\">\n",
" <g id=\"line2d_17\">\n",
" <path clip-path=\"url(#pff870b7ffb)\" d=\"M 30.103125 41.303241 \n",
"L 225.403125 41.303241 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_18\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m86de3851a4\" y=\"41.303241\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_10\">\n",
" <!-- 1.0 -->\n",
" <g transform=\"translate(7.2 45.10246)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_5\">\n",
" <g id=\"line2d_19\">\n",
" <path clip-path=\"url(#pff870b7ffb)\" d=\"M 30.103125 14.897918 \n",
"L 225.403125 14.897918 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_20\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m86de3851a4\" y=\"14.897918\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_11\">\n",
" <!-- 1.2 -->\n",
" <g transform=\"translate(7.2 18.697137)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_21\">\n",
" <path clip-path=\"url(#pff870b7ffb)\" d=\"M 12.743125 13.377273 \n",
"L 17.083125 43.641659 \n",
"L 21.423125 58.493102 \n",
"L 25.763125 67.312223 \n",
"L 30.103125 73.753115 \n",
"L 34.443125 104.280555 \n",
"L 38.783125 104.947038 \n",
"L 43.123125 106.754147 \n",
"L 47.463125 108.24409 \n",
"L 51.803125 109.625944 \n",
"L 56.143125 117.026558 \n",
"L 60.483125 116.517257 \n",
"L 64.823125 116.792934 \n",
"L 69.163125 117.683394 \n",
"L 73.503125 118.066517 \n",
"L 77.843125 122.429756 \n",
"L 82.183125 122.035346 \n",
"L 86.523125 122.712918 \n",
"L 90.863125 123.118241 \n",
"L 95.203125 123.839287 \n",
"L 99.543125 125.349841 \n",
"L 103.883125 126.42074 \n",
"L 108.223125 127.068962 \n",
"L 112.563125 127.341038 \n",
"L 116.903125 127.405801 \n",
"L 121.243125 129.060757 \n",
"L 125.583125 129.155523 \n",
"L 129.923125 129.640389 \n",
"L 134.263125 129.701322 \n",
"L 138.603125 130.02403 \n",
"L 142.943125 132.375159 \n",
"L 147.283125 132.23065 \n",
"L 151.623125 131.565653 \n",
"L 155.963125 131.925717 \n",
"L 160.303125 131.96525 \n",
"L 164.643125 134.362138 \n",
"L 168.983125 133.589403 \n",
"L 173.323125 134.087517 \n",
"L 177.663125 133.330482 \n",
"L 182.003125 133.739306 \n",
"L 186.343125 134.164122 \n",
"L 190.683125 134.174928 \n",
"L 195.023125 134.618512 \n",
"L 199.363125 134.853482 \n",
"L 203.703125 135.180067 \n",
"L 208.043125 136.922727 \n",
"L 212.383125 136.457528 \n",
"L 216.723125 135.911417 \n",
"L 221.063125 135.808154 \n",
"L 225.403125 136.242653 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_22\">\n",
" <path clip-path=\"url(#pff870b7ffb)\" d=\"M 12.743125 97.451859 \n",
"L 17.083125 87.850522 \n",
"L 21.423125 82.766385 \n",
"L 25.763125 79.801858 \n",
"L 30.103125 77.507138 \n",
"L 34.443125 66.409365 \n",
"L 38.783125 66.272203 \n",
"L 43.123125 65.571763 \n",
"L 47.463125 65.10084 \n",
"L 51.803125 64.572931 \n",
"L 56.143125 61.471535 \n",
"L 60.483125 62.053101 \n",
"L 64.823125 61.877534 \n",
"L 69.163125 61.534629 \n",
"L 73.503125 61.417495 \n",
"L 77.843125 59.715862 \n",
"L 82.183125 60.012131 \n",
"L 86.523125 59.726835 \n",
"L 90.863125 59.630821 \n",
"L 95.203125 59.344677 \n",
"L 99.543125 58.618566 \n",
"L 103.883125 58.437512 \n",
"L 108.223125 58.344242 \n",
"L 112.563125 58.209823 \n",
"L 116.903125 58.21805 \n",
"L 121.243125 57.576135 \n",
"L 125.583125 57.61454 \n",
"L 129.923125 57.404225 \n",
"L 134.263125 57.285352 \n",
"L 138.603125 57.199245 \n",
"L 142.943125 56.47884 \n",
"L 147.283125 56.341678 \n",
"L 151.623125 56.672695 \n",
"L 155.963125 56.561137 \n",
"L 160.303125 56.444493 \n",
"L 164.643125 55.535165 \n",
"L 168.983125 55.902759 \n",
"L 173.323125 55.710733 \n",
"L 177.663125 55.985056 \n",
"L 182.003125 55.848172 \n",
"L 186.343125 55.425436 \n",
"L 190.683125 55.546138 \n",
"L 195.023125 55.440066 \n",
"L 199.363125 55.337652 \n",
"L 203.703125 55.315665 \n",
"L 208.043125 54.909707 \n",
"L 212.383125 54.882274 \n",
"L 216.723125 55.154769 \n",
"L 221.063125 55.126423 \n",
"L 225.403125 54.9944 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_23\">\n",
" <path clip-path=\"url(#pff870b7ffb)\" d=\"M 30.103125 72.329495 \n",
"L 51.803125 67.550131 \n",
"L 73.503125 64.724762 \n",
"L 95.203125 67.44451 \n",
"L 116.903125 61.859784 \n",
"L 138.603125 67.206862 \n",
"L 160.303125 59.219252 \n",
"L 182.003125 60.288668 \n",
"L 203.703125 59.971804 \n",
"L 225.403125 62.031419 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"patch_3\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 30.103125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_4\">\n",
" <path d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_5\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_6\">\n",
" <path d=\"M 30.103125 7.2 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"legend_1\">\n",
" <g id=\"patch_7\">\n",
" <path d=\"M 37.103125 59.234375 \n",
"L 114.871875 59.234375 \n",
"Q 116.871875 59.234375 116.871875 57.234375 \n",
"L 116.871875 14.2 \n",
"Q 116.871875 12.2 114.871875 12.2 \n",
"L 37.103125 12.2 \n",
"Q 35.103125 12.2 35.103125 14.2 \n",
"L 35.103125 57.234375 \n",
"Q 35.103125 59.234375 37.103125 59.234375 \n",
"z\n",
"\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\n",
" </g>\n",
" <g id=\"line2d_24\">\n",
" <path d=\"M 39.103125 20.298438 \n",
"L 59.103125 20.298438 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_25\"/>\n",
" <g id=\"text_12\">\n",
" <!-- train loss -->\n",
" <g transform=\"translate(67.103125 23.798438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 18.3125 70.21875 \n",
"L 18.3125 54.6875 \n",
"L 36.8125 54.6875 \n",
"L 36.8125 47.703125 \n",
"L 18.3125 47.703125 \n",
"L 18.3125 18.015625 \n",
"Q 18.3125 11.328125 20.140625 9.421875 \n",
"Q 21.96875 7.515625 27.59375 7.515625 \n",
"L 36.8125 7.515625 \n",
"L 36.8125 0 \n",
"L 27.59375 0 \n",
"Q 17.1875 0 13.234375 3.875 \n",
"Q 9.28125 7.765625 9.28125 18.015625 \n",
"L 9.28125 47.703125 \n",
"L 2.6875 47.703125 \n",
"L 2.6875 54.6875 \n",
"L 9.28125 54.6875 \n",
"L 9.28125 70.21875 \n",
"z\n",
"\" id=\"DejaVuSans-116\"/>\n",
" <path d=\"M 41.109375 46.296875 \n",
"Q 39.59375 47.171875 37.8125 47.578125 \n",
"Q 36.03125 48 33.890625 48 \n",
"Q 26.265625 48 22.1875 43.046875 \n",
"Q 18.109375 38.09375 18.109375 28.8125 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 20.953125 51.171875 25.484375 53.578125 \n",
"Q 30.03125 56 36.53125 56 \n",
"Q 37.453125 56 38.578125 55.875 \n",
"Q 39.703125 55.765625 41.0625 55.515625 \n",
"z\n",
"\" id=\"DejaVuSans-114\"/>\n",
" <path d=\"M 34.28125 27.484375 \n",
"Q 23.390625 27.484375 19.1875 25 \n",
"Q 14.984375 22.515625 14.984375 16.5 \n",
"Q 14.984375 11.71875 18.140625 8.90625 \n",
"Q 21.296875 6.109375 26.703125 6.109375 \n",
"Q 34.1875 6.109375 38.703125 11.40625 \n",
"Q 43.21875 16.703125 43.21875 25.484375 \n",
"L 43.21875 27.484375 \n",
"z\n",
"M 52.203125 31.203125 \n",
"L 52.203125 0 \n",
"L 43.21875 0 \n",
"L 43.21875 8.296875 \n",
"Q 40.140625 3.328125 35.546875 0.953125 \n",
"Q 30.953125 -1.421875 24.3125 -1.421875 \n",
"Q 15.921875 -1.421875 10.953125 3.296875 \n",
"Q 6 8.015625 6 15.921875 \n",
"Q 6 25.140625 12.171875 29.828125 \n",
"Q 18.359375 34.515625 30.609375 34.515625 \n",
"L 43.21875 34.515625 \n",
"L 43.21875 35.40625 \n",
"Q 43.21875 41.609375 39.140625 45 \n",
"Q 35.0625 48.390625 27.6875 48.390625 \n",
"Q 23 48.390625 18.546875 47.265625 \n",
"Q 14.109375 46.140625 10.015625 43.890625 \n",
"L 10.015625 52.203125 \n",
"Q 14.9375 54.109375 19.578125 55.046875 \n",
"Q 24.21875 56 28.609375 56 \n",
"Q 40.484375 56 46.34375 49.84375 \n",
"Q 52.203125 43.703125 52.203125 31.203125 \n",
"z\n",
"\" id=\"DejaVuSans-97\"/>\n",
" <path d=\"M 9.421875 54.6875 \n",
"L 18.40625 54.6875 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 64.59375 \n",
"L 9.421875 64.59375 \n",
"z\n",
"\" id=\"DejaVuSans-105\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-110\"/>\n",
" <path id=\"DejaVuSans-32\"/>\n",
" <path d=\"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"\" id=\"DejaVuSans-108\"/>\n",
" <path d=\"M 44.28125 53.078125 \n",
"L 44.28125 44.578125 \n",
"Q 40.484375 46.53125 36.375 47.5 \n",
"Q 32.28125 48.484375 27.875 48.484375 \n",
"Q 21.1875 48.484375 17.84375 46.4375 \n",
"Q 14.5 44.390625 14.5 40.28125 \n",
"Q 14.5 37.15625 16.890625 35.375 \n",
"Q 19.28125 33.59375 26.515625 31.984375 \n",
"L 29.59375 31.296875 \n",
"Q 39.15625 29.25 43.1875 25.515625 \n",
"Q 47.21875 21.78125 47.21875 15.09375 \n",
"Q 47.21875 7.46875 41.1875 3.015625 \n",
"Q 35.15625 -1.421875 24.609375 -1.421875 \n",
"Q 20.21875 -1.421875 15.453125 -0.5625 \n",
"Q 10.6875 0.296875 5.421875 2 \n",
"L 5.421875 11.28125 \n",
"Q 10.40625 8.6875 15.234375 7.390625 \n",
"Q 20.0625 6.109375 24.8125 6.109375 \n",
"Q 31.15625 6.109375 34.5625 8.28125 \n",
"Q 37.984375 10.453125 37.984375 14.40625 \n",
"Q 37.984375 18.0625 35.515625 20.015625 \n",
"Q 33.0625 21.96875 24.703125 23.78125 \n",
"L 21.578125 24.515625 \n",
"Q 13.234375 26.265625 9.515625 29.90625 \n",
"Q 5.8125 33.546875 5.8125 39.890625 \n",
"Q 5.8125 47.609375 11.28125 51.796875 \n",
"Q 16.75 56 26.8125 56 \n",
"Q 31.78125 56 36.171875 55.265625 \n",
"Q 40.578125 54.546875 44.28125 53.078125 \n",
"z\n",
"\" id=\"DejaVuSans-115\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-108\"/>\n",
" <use x=\"292.333984\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"353.515625\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"405.615234\" xlink:href=\"#DejaVuSans-115\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_26\">\n",
" <path d=\"M 39.103125 34.976562 \n",
"L 59.103125 34.976562 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_27\"/>\n",
" <g id=\"text_13\">\n",
" <!-- train acc -->\n",
" <g transform=\"translate(67.103125 38.476562)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"325.830078\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"380.810547\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_28\">\n",
" <path d=\"M 39.103125 49.654688 \n",
"L 59.103125 49.654688 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_29\"/>\n",
" <g id=\"text_14\">\n",
" <!-- test acc -->\n",
" <g transform=\"translate(67.103125 53.154688)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"100.732422\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"152.832031\" xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"192.041016\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"223.828125\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"285.107422\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"340.087891\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"pff870b7ffb\">\n",
" <rect height=\"135.9\" width=\"195.3\" x=\"30.103125\" y=\"7.2\"/>\n",
" </clipPath>\n",
" </defs>\n",
"</svg>\n"
],
"text/plain": [
"<Figure size 252x180 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())"
]
},
{
"cell_type": "markdown",
"id": "be2ce66c-0694-4c20-8f9c-e4c62b9e92b1",
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"source": [
"## 残差网络(ResNet)\n",
"\n",
"残差块"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "b253049d-96a4-4871-a6a1-c9d2de3a9379",
"metadata": {
"origin_pos": 2,
"tab": [
"pytorch"
]
},
"outputs": [],
"source": [
"import torch\n",
"from torch import nn\n",
"from torch.nn import functional as F\n",
"from d2l import torch as d2l\n",
"\n",
"\n",
"class Residual(nn.Module): \n",
" def __init__(self, input_channels, num_channels,\n",
" use_1x1conv=False, strides=1):\n",
" super().__init__()\n",
" self.conv1 = nn.Conv2d(input_channels, num_channels,\n",
" kernel_size=3, padding=1, stride=strides)\n",
" self.conv2 = nn.Conv2d(num_channels, num_channels,\n",
" kernel_size=3, padding=1)\n",
" if use_1x1conv:\n",
" self.conv3 = nn.Conv2d(input_channels, num_channels,\n",
" 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",
"\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)"
]
},
{
"cell_type": "markdown",
"id": "72824a52-1ed9-4f12-b826-e60d2ce42568",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"输入和输出形状一致"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "02cc50d9-5710-4e2f-bf0f-568f1046321e",
"metadata": {
"origin_pos": 6,
"tab": [
"pytorch"
]
},
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([4, 3, 6, 6])"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"blk = Residual(3,3)\n",
"X = torch.rand(4, 3, 6, 6)\n",
"Y = blk(X)\n",
"Y.shape"
]
},
{
"cell_type": "markdown",
"id": "c09c8e89-dfdb-4e6f-a75b-b949f8e04d6c",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"增加输出通道数的同时,减半输出的高和宽"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "57b5f05e-853c-460e-afb7-3a3483c7e776",
"metadata": {
"origin_pos": 10,
"tab": [
"pytorch"
]
},
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([4, 6, 3, 3])"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"blk = Residual(3,6, use_1x1conv=True, strides=2)\n",
"blk(X).shape"
]
},
{
"cell_type": "markdown",
"id": "57bd6688-aa3a-4758-b0f6-67b786db8c7a",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"ResNet模型"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "95fcb71a-7682-4efe-9434-688e4f1606e0",
"metadata": {
"origin_pos": 26,
"tab": [
"pytorch"
]
},
"outputs": [],
"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))\n",
"\n",
"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\n",
"\n",
"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))\n",
"\n",
"net = nn.Sequential(b1, b2, b3, b4, b5,\n",
" nn.AdaptiveAvgPool2d((1,1)),\n",
" nn.Flatten(), nn.Linear(512, 10))"
]
},
{
"cell_type": "markdown",
"id": "ead75736-665d-48b8-9ba9-7634f5ed1395",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"观察一下ResNet中不同模块的输入形状是如何变化的"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "caaf4445-c02e-4d4e-af70-ead31c246332",
"metadata": {
"origin_pos": 30,
"tab": [
"pytorch"
]
},
"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"
]
}
],
"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)"
]
},
{
"cell_type": "markdown",
"id": "057bd90d-193f-4577-8d4b-e922d8e1ae18",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"训练模型"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "bd0e57ed-ed08-4d18-8cdf-4062fad7ffe1",
"metadata": {
"origin_pos": 33,
"tab": [
"pytorch"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loss 0.009, train acc 0.998, test acc 0.922\n",
"4702.7 examples/sec on cuda:0\n"
]
},
{
"data": {
"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",
"<!-- Created with matplotlib (https://matplotlib.org/) -->\n",
"<svg height=\"180.65625pt\" version=\"1.1\" viewBox=\"0 0 238.965625 180.65625\" width=\"238.965625pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
" <metadata>\n",
" <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" 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>2022-01-17T01:46:46.812949</dc:date>\n",
" <dc:format>image/svg+xml</dc:format>\n",
" <dc:creator>\n",
" <cc:Agent>\n",
" <dc:title>Matplotlib v3.3.3, 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-linecap:butt;stroke-linejoin:round;}</style>\n",
" </defs>\n",
" <g id=\"figure_1\">\n",
" <g id=\"patch_1\">\n",
" <path d=\"M 0 180.65625 \n",
"L 238.965625 180.65625 \n",
"L 238.965625 0 \n",
"L 0 0 \n",
"z\n",
"\" style=\"fill:none;\"/>\n",
" </g>\n",
" <g id=\"axes_1\">\n",
" <g id=\"patch_2\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"L 30.103125 7.2 \n",
"z\n",
"\" style=\"fill:#ffffff;\"/>\n",
" </g>\n",
" <g id=\"matplotlib.axis_1\">\n",
" <g id=\"xtick_1\">\n",
" <g id=\"line2d_1\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 51.803125 143.1 \n",
"L 51.803125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_2\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L 0 3.5 \n",
"\" id=\"mff60f23549\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"51.803125\" xlink:href=\"#mff60f23549\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_1\">\n",
" <!-- 2 -->\n",
" <g transform=\"translate(48.621875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 19.1875 8.296875 \n",
"L 53.609375 8.296875 \n",
"L 53.609375 0 \n",
"L 7.328125 0 \n",
"L 7.328125 8.296875 \n",
"Q 12.9375 14.109375 22.625 23.890625 \n",
"Q 32.328125 33.6875 34.8125 36.53125 \n",
"Q 39.546875 41.84375 41.421875 45.53125 \n",
"Q 43.3125 49.21875 43.3125 52.78125 \n",
"Q 43.3125 58.59375 39.234375 62.25 \n",
"Q 35.15625 65.921875 28.609375 65.921875 \n",
"Q 23.96875 65.921875 18.8125 64.3125 \n",
"Q 13.671875 62.703125 7.8125 59.421875 \n",
"L 7.8125 69.390625 \n",
"Q 13.765625 71.78125 18.9375 73 \n",
"Q 24.125 74.21875 28.421875 74.21875 \n",
"Q 39.75 74.21875 46.484375 68.546875 \n",
"Q 53.21875 62.890625 53.21875 53.421875 \n",
"Q 53.21875 48.921875 51.53125 44.890625 \n",
"Q 49.859375 40.875 45.40625 35.40625 \n",
"Q 44.1875 33.984375 37.640625 27.21875 \n",
"Q 31.109375 20.453125 19.1875 8.296875 \n",
"z\n",
"\" id=\"DejaVuSans-50\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-50\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_2\">\n",
" <g id=\"line2d_3\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 95.203125 143.1 \n",
"L 95.203125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_4\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"95.203125\" xlink:href=\"#mff60f23549\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_2\">\n",
" <!-- 4 -->\n",
" <g transform=\"translate(92.021875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 37.796875 64.3125 \n",
"L 12.890625 25.390625 \n",
"L 37.796875 25.390625 \n",
"z\n",
"M 35.203125 72.90625 \n",
"L 47.609375 72.90625 \n",
"L 47.609375 25.390625 \n",
"L 58.015625 25.390625 \n",
"L 58.015625 17.1875 \n",
"L 47.609375 17.1875 \n",
"L 47.609375 0 \n",
"L 37.796875 0 \n",
"L 37.796875 17.1875 \n",
"L 4.890625 17.1875 \n",
"L 4.890625 26.703125 \n",
"z\n",
"\" id=\"DejaVuSans-52\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-52\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_3\">\n",
" <g id=\"line2d_5\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 138.603125 143.1 \n",
"L 138.603125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_6\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"138.603125\" xlink:href=\"#mff60f23549\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_3\">\n",
" <!-- 6 -->\n",
" <g transform=\"translate(135.421875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 33.015625 40.375 \n",
"Q 26.375 40.375 22.484375 35.828125 \n",
"Q 18.609375 31.296875 18.609375 23.390625 \n",
"Q 18.609375 15.53125 22.484375 10.953125 \n",
"Q 26.375 6.390625 33.015625 6.390625 \n",
"Q 39.65625 6.390625 43.53125 10.953125 \n",
"Q 47.40625 15.53125 47.40625 23.390625 \n",
"Q 47.40625 31.296875 43.53125 35.828125 \n",
"Q 39.65625 40.375 33.015625 40.375 \n",
"z\n",
"M 52.59375 71.296875 \n",
"L 52.59375 62.3125 \n",
"Q 48.875 64.0625 45.09375 64.984375 \n",
"Q 41.3125 65.921875 37.59375 65.921875 \n",
"Q 27.828125 65.921875 22.671875 59.328125 \n",
"Q 17.53125 52.734375 16.796875 39.40625 \n",
"Q 19.671875 43.65625 24.015625 45.921875 \n",
"Q 28.375 48.1875 33.59375 48.1875 \n",
"Q 44.578125 48.1875 50.953125 41.515625 \n",
"Q 57.328125 34.859375 57.328125 23.390625 \n",
"Q 57.328125 12.15625 50.6875 5.359375 \n",
"Q 44.046875 -1.421875 33.015625 -1.421875 \n",
"Q 20.359375 -1.421875 13.671875 8.265625 \n",
"Q 6.984375 17.96875 6.984375 36.375 \n",
"Q 6.984375 53.65625 15.1875 63.9375 \n",
"Q 23.390625 74.21875 37.203125 74.21875 \n",
"Q 40.921875 74.21875 44.703125 73.484375 \n",
"Q 48.484375 72.75 52.59375 71.296875 \n",
"z\n",
"\" id=\"DejaVuSans-54\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-54\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_4\">\n",
" <g id=\"line2d_7\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 182.003125 143.1 \n",
"L 182.003125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_8\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"182.003125\" xlink:href=\"#mff60f23549\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_4\">\n",
" <!-- 8 -->\n",
" <g transform=\"translate(178.821875 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 31.78125 34.625 \n",
"Q 24.75 34.625 20.71875 30.859375 \n",
"Q 16.703125 27.09375 16.703125 20.515625 \n",
"Q 16.703125 13.921875 20.71875 10.15625 \n",
"Q 24.75 6.390625 31.78125 6.390625 \n",
"Q 38.8125 6.390625 42.859375 10.171875 \n",
"Q 46.921875 13.96875 46.921875 20.515625 \n",
"Q 46.921875 27.09375 42.890625 30.859375 \n",
"Q 38.875 34.625 31.78125 34.625 \n",
"z\n",
"M 21.921875 38.8125 \n",
"Q 15.578125 40.375 12.03125 44.71875 \n",
"Q 8.5 49.078125 8.5 55.328125 \n",
"Q 8.5 64.0625 14.71875 69.140625 \n",
"Q 20.953125 74.21875 31.78125 74.21875 \n",
"Q 42.671875 74.21875 48.875 69.140625 \n",
"Q 55.078125 64.0625 55.078125 55.328125 \n",
"Q 55.078125 49.078125 51.53125 44.71875 \n",
"Q 48 40.375 41.703125 38.8125 \n",
"Q 48.828125 37.15625 52.796875 32.3125 \n",
"Q 56.78125 27.484375 56.78125 20.515625 \n",
"Q 56.78125 9.90625 50.3125 4.234375 \n",
"Q 43.84375 -1.421875 31.78125 -1.421875 \n",
"Q 19.734375 -1.421875 13.25 4.234375 \n",
"Q 6.78125 9.90625 6.78125 20.515625 \n",
"Q 6.78125 27.484375 10.78125 32.3125 \n",
"Q 14.796875 37.15625 21.921875 38.8125 \n",
"z\n",
"M 18.3125 54.390625 \n",
"Q 18.3125 48.734375 21.84375 45.5625 \n",
"Q 25.390625 42.390625 31.78125 42.390625 \n",
"Q 38.140625 42.390625 41.71875 45.5625 \n",
"Q 45.3125 48.734375 45.3125 54.390625 \n",
"Q 45.3125 60.0625 41.71875 63.234375 \n",
"Q 38.140625 66.40625 31.78125 66.40625 \n",
"Q 25.390625 66.40625 21.84375 63.234375 \n",
"Q 18.3125 60.0625 18.3125 54.390625 \n",
"z\n",
"\" id=\"DejaVuSans-56\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-56\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"xtick_5\">\n",
" <g id=\"line2d_9\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_10\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"225.403125\" xlink:href=\"#mff60f23549\" y=\"143.1\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_5\">\n",
" <!-- 10 -->\n",
" <g transform=\"translate(219.040625 157.698438)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 12.40625 8.296875 \n",
"L 28.515625 8.296875 \n",
"L 28.515625 63.921875 \n",
"L 10.984375 60.40625 \n",
"L 10.984375 69.390625 \n",
"L 28.421875 72.90625 \n",
"L 38.28125 72.90625 \n",
"L 38.28125 8.296875 \n",
"L 54.390625 8.296875 \n",
"L 54.390625 0 \n",
"L 12.40625 0 \n",
"z\n",
"\" id=\"DejaVuSans-49\"/>\n",
" <path d=\"M 31.78125 66.40625 \n",
"Q 24.171875 66.40625 20.328125 58.90625 \n",
"Q 16.5 51.421875 16.5 36.375 \n",
"Q 16.5 21.390625 20.328125 13.890625 \n",
"Q 24.171875 6.390625 31.78125 6.390625 \n",
"Q 39.453125 6.390625 43.28125 13.890625 \n",
"Q 47.125 21.390625 47.125 36.375 \n",
"Q 47.125 51.421875 43.28125 58.90625 \n",
"Q 39.453125 66.40625 31.78125 66.40625 \n",
"z\n",
"M 31.78125 74.21875 \n",
"Q 44.046875 74.21875 50.515625 64.515625 \n",
"Q 56.984375 54.828125 56.984375 36.375 \n",
"Q 56.984375 17.96875 50.515625 8.265625 \n",
"Q 44.046875 -1.421875 31.78125 -1.421875 \n",
"Q 19.53125 -1.421875 13.0625 8.265625 \n",
"Q 6.59375 17.96875 6.59375 36.375 \n",
"Q 6.59375 54.828125 13.0625 64.515625 \n",
"Q 19.53125 74.21875 31.78125 74.21875 \n",
"z\n",
"\" id=\"DejaVuSans-48\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_6\">\n",
" <!-- epoch -->\n",
" <g transform=\"translate(112.525 171.376563)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 56.203125 29.59375 \n",
"L 56.203125 25.203125 \n",
"L 14.890625 25.203125 \n",
"Q 15.484375 15.921875 20.484375 11.0625 \n",
"Q 25.484375 6.203125 34.421875 6.203125 \n",
"Q 39.59375 6.203125 44.453125 7.46875 \n",
"Q 49.3125 8.734375 54.109375 11.28125 \n",
"L 54.109375 2.78125 \n",
"Q 49.265625 0.734375 44.1875 -0.34375 \n",
"Q 39.109375 -1.421875 33.890625 -1.421875 \n",
"Q 20.796875 -1.421875 13.15625 6.1875 \n",
"Q 5.515625 13.8125 5.515625 26.8125 \n",
"Q 5.515625 40.234375 12.765625 48.109375 \n",
"Q 20.015625 56 32.328125 56 \n",
"Q 43.359375 56 49.78125 48.890625 \n",
"Q 56.203125 41.796875 56.203125 29.59375 \n",
"z\n",
"M 47.21875 32.234375 \n",
"Q 47.125 39.59375 43.09375 43.984375 \n",
"Q 39.0625 48.390625 32.421875 48.390625 \n",
"Q 24.90625 48.390625 20.390625 44.140625 \n",
"Q 15.875 39.890625 15.1875 32.171875 \n",
"z\n",
"\" id=\"DejaVuSans-101\"/>\n",
" <path d=\"M 18.109375 8.203125 \n",
"L 18.109375 -20.796875 \n",
"L 9.078125 -20.796875 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.390625 \n",
"Q 20.953125 51.265625 25.265625 53.625 \n",
"Q 29.59375 56 35.59375 56 \n",
"Q 45.5625 56 51.78125 48.09375 \n",
"Q 58.015625 40.1875 58.015625 27.296875 \n",
"Q 58.015625 14.40625 51.78125 6.484375 \n",
"Q 45.5625 -1.421875 35.59375 -1.421875 \n",
"Q 29.59375 -1.421875 25.265625 0.953125 \n",
"Q 20.953125 3.328125 18.109375 8.203125 \n",
"z\n",
"M 48.6875 27.296875 \n",
"Q 48.6875 37.203125 44.609375 42.84375 \n",
"Q 40.53125 48.484375 33.40625 48.484375 \n",
"Q 26.265625 48.484375 22.1875 42.84375 \n",
"Q 18.109375 37.203125 18.109375 27.296875 \n",
"Q 18.109375 17.390625 22.1875 11.75 \n",
"Q 26.265625 6.109375 33.40625 6.109375 \n",
"Q 40.53125 6.109375 44.609375 11.75 \n",
"Q 48.6875 17.390625 48.6875 27.296875 \n",
"z\n",
"\" id=\"DejaVuSans-112\"/>\n",
" <path d=\"M 30.609375 48.390625 \n",
"Q 23.390625 48.390625 19.1875 42.75 \n",
"Q 14.984375 37.109375 14.984375 27.296875 \n",
"Q 14.984375 17.484375 19.15625 11.84375 \n",
"Q 23.34375 6.203125 30.609375 6.203125 \n",
"Q 37.796875 6.203125 41.984375 11.859375 \n",
"Q 46.1875 17.53125 46.1875 27.296875 \n",
"Q 46.1875 37.015625 41.984375 42.703125 \n",
"Q 37.796875 48.390625 30.609375 48.390625 \n",
"z\n",
"M 30.609375 56 \n",
"Q 42.328125 56 49.015625 48.375 \n",
"Q 55.71875 40.765625 55.71875 27.296875 \n",
"Q 55.71875 13.875 49.015625 6.21875 \n",
"Q 42.328125 -1.421875 30.609375 -1.421875 \n",
"Q 18.84375 -1.421875 12.171875 6.21875 \n",
"Q 5.515625 13.875 5.515625 27.296875 \n",
"Q 5.515625 40.765625 12.171875 48.375 \n",
"Q 18.84375 56 30.609375 56 \n",
"z\n",
"\" id=\"DejaVuSans-111\"/>\n",
" <path d=\"M 48.78125 52.59375 \n",
"L 48.78125 44.1875 \n",
"Q 44.96875 46.296875 41.140625 47.34375 \n",
"Q 37.3125 48.390625 33.40625 48.390625 \n",
"Q 24.65625 48.390625 19.8125 42.84375 \n",
"Q 14.984375 37.3125 14.984375 27.296875 \n",
"Q 14.984375 17.28125 19.8125 11.734375 \n",
"Q 24.65625 6.203125 33.40625 6.203125 \n",
"Q 37.3125 6.203125 41.140625 7.25 \n",
"Q 44.96875 8.296875 48.78125 10.40625 \n",
"L 48.78125 2.09375 \n",
"Q 45.015625 0.34375 40.984375 -0.53125 \n",
"Q 36.96875 -1.421875 32.421875 -1.421875 \n",
"Q 20.0625 -1.421875 12.78125 6.34375 \n",
"Q 5.515625 14.109375 5.515625 27.296875 \n",
"Q 5.515625 40.671875 12.859375 48.328125 \n",
"Q 20.21875 56 33.015625 56 \n",
"Q 37.15625 56 41.109375 55.140625 \n",
"Q 45.0625 54.296875 48.78125 52.59375 \n",
"z\n",
"\" id=\"DejaVuSans-99\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 75.984375 \n",
"L 18.109375 75.984375 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-104\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"61.523438\" xlink:href=\"#DejaVuSans-112\"/>\n",
" <use x=\"125\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"186.181641\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"241.162109\" xlink:href=\"#DejaVuSans-104\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"matplotlib.axis_2\">\n",
" <g id=\"ytick_1\">\n",
" <g id=\"line2d_11\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 30.103125 137.93096 \n",
"L 225.403125 137.93096 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_12\">\n",
" <defs>\n",
" <path d=\"M 0 0 \n",
"L -3.5 0 \n",
"\" id=\"m7b299725ba\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
" </defs>\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m7b299725ba\" y=\"137.93096\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_7\">\n",
" <!-- 0.0 -->\n",
" <g transform=\"translate(7.2 141.730178)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 10.6875 12.40625 \n",
"L 21 12.40625 \n",
"L 21 0 \n",
"L 10.6875 0 \n",
"z\n",
"\" id=\"DejaVuSans-46\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_2\">\n",
" <g id=\"line2d_13\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 30.103125 112.978746 \n",
"L 225.403125 112.978746 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_14\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m7b299725ba\" y=\"112.978746\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_8\">\n",
" <!-- 0.2 -->\n",
" <g transform=\"translate(7.2 116.777965)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_3\">\n",
" <g id=\"line2d_15\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 30.103125 88.026532 \n",
"L 225.403125 88.026532 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_16\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m7b299725ba\" y=\"88.026532\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_9\">\n",
" <!-- 0.4 -->\n",
" <g transform=\"translate(7.2 91.825751)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-52\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_4\">\n",
" <g id=\"line2d_17\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 30.103125 63.074318 \n",
"L 225.403125 63.074318 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_18\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m7b299725ba\" y=\"63.074318\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_10\">\n",
" <!-- 0.6 -->\n",
" <g transform=\"translate(7.2 66.873537)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-54\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_5\">\n",
" <g id=\"line2d_19\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 30.103125 38.122104 \n",
"L 225.403125 38.122104 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_20\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m7b299725ba\" y=\"38.122104\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_11\">\n",
" <!-- 0.8 -->\n",
" <g transform=\"translate(7.2 41.921323)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-48\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-56\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"ytick_6\">\n",
" <g id=\"line2d_21\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 30.103125 13.169891 \n",
"L 225.403125 13.169891 \n",
"\" style=\"fill:none;stroke:#b0b0b0;stroke-linecap:square;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"line2d_22\">\n",
" <g>\n",
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"30.103125\" xlink:href=\"#m7b299725ba\" y=\"13.169891\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"text_12\">\n",
" <!-- 1.0 -->\n",
" <g transform=\"translate(7.2 16.969109)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-49\"/>\n",
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n",
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_23\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 12.743125 23.31786 \n",
"L 17.083125 53.212021 \n",
"L 21.423125 66.051275 \n",
"L 25.763125 73.593385 \n",
"L 30.103125 78.538047 \n",
"L 34.443125 105.509061 \n",
"L 38.783125 105.279838 \n",
"L 43.123125 105.687404 \n",
"L 47.463125 106.145533 \n",
"L 51.803125 106.430936 \n",
"L 56.143125 114.557925 \n",
"L 60.483125 114.73712 \n",
"L 64.823125 114.80369 \n",
"L 69.163125 114.839776 \n",
"L 73.503125 114.588206 \n",
"L 77.843125 120.470126 \n",
"L 82.183125 120.666442 \n",
"L 86.523125 120.348492 \n",
"L 90.863125 120.447106 \n",
"L 95.203125 120.089736 \n",
"L 99.543125 124.589563 \n",
"L 103.883125 125.34185 \n",
"L 108.223125 125.077049 \n",
"L 112.563125 124.898619 \n",
"L 116.903125 124.352569 \n",
"L 121.243125 129.255753 \n",
"L 125.583125 129.191305 \n",
"L 129.923125 129.121743 \n",
"L 134.263125 128.747127 \n",
"L 138.603125 128.249575 \n",
"L 142.943125 132.199866 \n",
"L 147.283125 132.356722 \n",
"L 151.623125 131.903585 \n",
"L 155.963125 132.026033 \n",
"L 160.303125 131.657519 \n",
"L 164.643125 134.471376 \n",
"L 168.983125 134.612211 \n",
"L 173.323125 134.450586 \n",
"L 177.663125 134.309622 \n",
"L 182.003125 134.055616 \n",
"L 186.343125 135.279609 \n",
"L 190.683125 135.611662 \n",
"L 195.023125 135.704164 \n",
"L 199.363125 135.648711 \n",
"L 203.703125 135.624547 \n",
"L 208.043125 136.880675 \n",
"L 212.383125 136.922727 \n",
"L 216.723125 136.831273 \n",
"L 221.063125 136.83511 \n",
"L 225.403125 136.793476 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_24\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 12.743125 50.384608 \n",
"L 17.083125 41.669375 \n",
"L 21.423125 37.882924 \n",
"L 25.763125 35.53605 \n",
"L 30.103125 33.977958 \n",
"L 34.443125 25.156576 \n",
"L 38.783125 25.115099 \n",
"L 43.123125 25.021777 \n",
"L 47.463125 24.874018 \n",
"L 51.803125 24.853765 \n",
"L 56.143125 21.734771 \n",
"L 60.483125 21.776248 \n",
"L 64.823125 21.651818 \n",
"L 69.163125 21.576642 \n",
"L 73.503125 21.651564 \n",
"L 77.843125 19.194341 \n",
"L 82.183125 19.298032 \n",
"L 86.523125 19.477763 \n",
"L 90.863125 19.497637 \n",
"L 95.203125 19.642911 \n",
"L 99.543125 17.711559 \n",
"L 103.883125 17.51973 \n",
"L 108.223125 17.649344 \n",
"L 112.563125 17.765996 \n",
"L 116.903125 18.014779 \n",
"L 121.243125 16.011025 \n",
"L 125.583125 16.13027 \n",
"L 129.923125 16.22532 \n",
"L 134.263125 16.384313 \n",
"L 138.603125 16.542598 \n",
"L 142.943125 14.870424 \n",
"L 147.283125 14.880793 \n",
"L 151.623125 15.081262 \n",
"L 155.963125 15.064845 \n",
"L 160.303125 15.199337 \n",
"L 164.643125 14.165325 \n",
"L 168.983125 14.077187 \n",
"L 173.323125 14.206801 \n",
"L 177.663125 14.266423 \n",
"L 182.003125 14.367597 \n",
"L 186.343125 13.978681 \n",
"L 190.683125 13.802406 \n",
"L 195.023125 13.750561 \n",
"L 199.363125 13.797221 \n",
"L 203.703125 13.824886 \n",
"L 208.043125 13.40838 \n",
"L 212.383125 13.377273 \n",
"L 216.723125 13.418749 \n",
"L 221.063125 13.40838 \n",
"L 225.403125 13.419413 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_25\">\n",
" <path clip-path=\"url(#p5bc179852d)\" d=\"M 30.103125 31.123008 \n",
"L 51.803125 31.884051 \n",
"L 73.503125 31.222817 \n",
"L 95.203125 38.309246 \n",
"L 116.903125 27.97903 \n",
"L 138.603125 25.982852 \n",
"L 160.303125 27.667127 \n",
"L 182.003125 28.116267 \n",
"L 203.703125 25.109525 \n",
"L 225.403125 22.901254 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"patch_3\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 30.103125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_4\">\n",
" <path d=\"M 225.403125 143.1 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_5\">\n",
" <path d=\"M 30.103125 143.1 \n",
"L 225.403125 143.1 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"patch_6\">\n",
" <path d=\"M 30.103125 7.2 \n",
"L 225.403125 7.2 \n",
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
" </g>\n",
" <g id=\"legend_1\">\n",
" <g id=\"patch_7\">\n",
" <path d=\"M 140.634375 98.667187 \n",
"L 218.403125 98.667187 \n",
"Q 220.403125 98.667187 220.403125 96.667187 \n",
"L 220.403125 53.632812 \n",
"Q 220.403125 51.632812 218.403125 51.632812 \n",
"L 140.634375 51.632812 \n",
"Q 138.634375 51.632812 138.634375 53.632812 \n",
"L 138.634375 96.667187 \n",
"Q 138.634375 98.667187 140.634375 98.667187 \n",
"z\n",
"\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\n",
" </g>\n",
" <g id=\"line2d_26\">\n",
" <path d=\"M 142.634375 59.73125 \n",
"L 162.634375 59.73125 \n",
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_27\"/>\n",
" <g id=\"text_13\">\n",
" <!-- train loss -->\n",
" <g transform=\"translate(170.634375 63.23125)scale(0.1 -0.1)\">\n",
" <defs>\n",
" <path d=\"M 18.3125 70.21875 \n",
"L 18.3125 54.6875 \n",
"L 36.8125 54.6875 \n",
"L 36.8125 47.703125 \n",
"L 18.3125 47.703125 \n",
"L 18.3125 18.015625 \n",
"Q 18.3125 11.328125 20.140625 9.421875 \n",
"Q 21.96875 7.515625 27.59375 7.515625 \n",
"L 36.8125 7.515625 \n",
"L 36.8125 0 \n",
"L 27.59375 0 \n",
"Q 17.1875 0 13.234375 3.875 \n",
"Q 9.28125 7.765625 9.28125 18.015625 \n",
"L 9.28125 47.703125 \n",
"L 2.6875 47.703125 \n",
"L 2.6875 54.6875 \n",
"L 9.28125 54.6875 \n",
"L 9.28125 70.21875 \n",
"z\n",
"\" id=\"DejaVuSans-116\"/>\n",
" <path d=\"M 41.109375 46.296875 \n",
"Q 39.59375 47.171875 37.8125 47.578125 \n",
"Q 36.03125 48 33.890625 48 \n",
"Q 26.265625 48 22.1875 43.046875 \n",
"Q 18.109375 38.09375 18.109375 28.8125 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 20.953125 51.171875 25.484375 53.578125 \n",
"Q 30.03125 56 36.53125 56 \n",
"Q 37.453125 56 38.578125 55.875 \n",
"Q 39.703125 55.765625 41.0625 55.515625 \n",
"z\n",
"\" id=\"DejaVuSans-114\"/>\n",
" <path d=\"M 34.28125 27.484375 \n",
"Q 23.390625 27.484375 19.1875 25 \n",
"Q 14.984375 22.515625 14.984375 16.5 \n",
"Q 14.984375 11.71875 18.140625 8.90625 \n",
"Q 21.296875 6.109375 26.703125 6.109375 \n",
"Q 34.1875 6.109375 38.703125 11.40625 \n",
"Q 43.21875 16.703125 43.21875 25.484375 \n",
"L 43.21875 27.484375 \n",
"z\n",
"M 52.203125 31.203125 \n",
"L 52.203125 0 \n",
"L 43.21875 0 \n",
"L 43.21875 8.296875 \n",
"Q 40.140625 3.328125 35.546875 0.953125 \n",
"Q 30.953125 -1.421875 24.3125 -1.421875 \n",
"Q 15.921875 -1.421875 10.953125 3.296875 \n",
"Q 6 8.015625 6 15.921875 \n",
"Q 6 25.140625 12.171875 29.828125 \n",
"Q 18.359375 34.515625 30.609375 34.515625 \n",
"L 43.21875 34.515625 \n",
"L 43.21875 35.40625 \n",
"Q 43.21875 41.609375 39.140625 45 \n",
"Q 35.0625 48.390625 27.6875 48.390625 \n",
"Q 23 48.390625 18.546875 47.265625 \n",
"Q 14.109375 46.140625 10.015625 43.890625 \n",
"L 10.015625 52.203125 \n",
"Q 14.9375 54.109375 19.578125 55.046875 \n",
"Q 24.21875 56 28.609375 56 \n",
"Q 40.484375 56 46.34375 49.84375 \n",
"Q 52.203125 43.703125 52.203125 31.203125 \n",
"z\n",
"\" id=\"DejaVuSans-97\"/>\n",
" <path d=\"M 9.421875 54.6875 \n",
"L 18.40625 54.6875 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 64.59375 \n",
"L 9.421875 64.59375 \n",
"z\n",
"\" id=\"DejaVuSans-105\"/>\n",
" <path d=\"M 54.890625 33.015625 \n",
"L 54.890625 0 \n",
"L 45.90625 0 \n",
"L 45.90625 32.71875 \n",
"Q 45.90625 40.484375 42.875 44.328125 \n",
"Q 39.84375 48.1875 33.796875 48.1875 \n",
"Q 26.515625 48.1875 22.3125 43.546875 \n",
"Q 18.109375 38.921875 18.109375 30.90625 \n",
"L 18.109375 0 \n",
"L 9.078125 0 \n",
"L 9.078125 54.6875 \n",
"L 18.109375 54.6875 \n",
"L 18.109375 46.1875 \n",
"Q 21.34375 51.125 25.703125 53.5625 \n",
"Q 30.078125 56 35.796875 56 \n",
"Q 45.21875 56 50.046875 50.171875 \n",
"Q 54.890625 44.34375 54.890625 33.015625 \n",
"z\n",
"\" id=\"DejaVuSans-110\"/>\n",
" <path id=\"DejaVuSans-32\"/>\n",
" <path d=\"M 9.421875 75.984375 \n",
"L 18.40625 75.984375 \n",
"L 18.40625 0 \n",
"L 9.421875 0 \n",
"z\n",
"\" id=\"DejaVuSans-108\"/>\n",
" <path d=\"M 44.28125 53.078125 \n",
"L 44.28125 44.578125 \n",
"Q 40.484375 46.53125 36.375 47.5 \n",
"Q 32.28125 48.484375 27.875 48.484375 \n",
"Q 21.1875 48.484375 17.84375 46.4375 \n",
"Q 14.5 44.390625 14.5 40.28125 \n",
"Q 14.5 37.15625 16.890625 35.375 \n",
"Q 19.28125 33.59375 26.515625 31.984375 \n",
"L 29.59375 31.296875 \n",
"Q 39.15625 29.25 43.1875 25.515625 \n",
"Q 47.21875 21.78125 47.21875 15.09375 \n",
"Q 47.21875 7.46875 41.1875 3.015625 \n",
"Q 35.15625 -1.421875 24.609375 -1.421875 \n",
"Q 20.21875 -1.421875 15.453125 -0.5625 \n",
"Q 10.6875 0.296875 5.421875 2 \n",
"L 5.421875 11.28125 \n",
"Q 10.40625 8.6875 15.234375 7.390625 \n",
"Q 20.0625 6.109375 24.8125 6.109375 \n",
"Q 31.15625 6.109375 34.5625 8.28125 \n",
"Q 37.984375 10.453125 37.984375 14.40625 \n",
"Q 37.984375 18.0625 35.515625 20.015625 \n",
"Q 33.0625 21.96875 24.703125 23.78125 \n",
"L 21.578125 24.515625 \n",
"Q 13.234375 26.265625 9.515625 29.90625 \n",
"Q 5.8125 33.546875 5.8125 39.890625 \n",
"Q 5.8125 47.609375 11.28125 51.796875 \n",
"Q 16.75 56 26.8125 56 \n",
"Q 31.78125 56 36.171875 55.265625 \n",
"Q 40.578125 54.546875 44.28125 53.078125 \n",
"z\n",
"\" id=\"DejaVuSans-115\"/>\n",
" </defs>\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-108\"/>\n",
" <use x=\"292.333984\" xlink:href=\"#DejaVuSans-111\"/>\n",
" <use x=\"353.515625\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"405.615234\" xlink:href=\"#DejaVuSans-115\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_28\">\n",
" <path d=\"M 142.634375 74.409375 \n",
"L 162.634375 74.409375 \n",
"\" style=\"fill:none;stroke:#bf00bf;stroke-dasharray:5.55,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_29\"/>\n",
" <g id=\"text_14\">\n",
" <!-- train acc -->\n",
" <g transform=\"translate(170.634375 77.909375)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-114\"/>\n",
" <use x=\"80.322266\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"141.601562\" xlink:href=\"#DejaVuSans-105\"/>\n",
" <use x=\"169.384766\" xlink:href=\"#DejaVuSans-110\"/>\n",
" <use x=\"232.763672\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"264.550781\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"325.830078\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"380.810547\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" <g id=\"line2d_30\">\n",
" <path d=\"M 142.634375 89.0875 \n",
"L 162.634375 89.0875 \n",
"\" style=\"fill:none;stroke:#008000;stroke-dasharray:9.6,2.4,1.5,2.4;stroke-dashoffset:0;stroke-width:1.5;\"/>\n",
" </g>\n",
" <g id=\"line2d_31\"/>\n",
" <g id=\"text_15\">\n",
" <!-- test acc -->\n",
" <g transform=\"translate(170.634375 92.5875)scale(0.1 -0.1)\">\n",
" <use xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"39.208984\" xlink:href=\"#DejaVuSans-101\"/>\n",
" <use x=\"100.732422\" xlink:href=\"#DejaVuSans-115\"/>\n",
" <use x=\"152.832031\" xlink:href=\"#DejaVuSans-116\"/>\n",
" <use x=\"192.041016\" xlink:href=\"#DejaVuSans-32\"/>\n",
" <use x=\"223.828125\" xlink:href=\"#DejaVuSans-97\"/>\n",
" <use x=\"285.107422\" xlink:href=\"#DejaVuSans-99\"/>\n",
" <use x=\"340.087891\" xlink:href=\"#DejaVuSans-99\"/>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" </g>\n",
" <defs>\n",
" <clipPath id=\"p5bc179852d\">\n",
" <rect height=\"135.9\" width=\"195.3\" x=\"30.103125\" y=\"7.2\"/>\n",
" </clipPath>\n",
" </defs>\n",
"</svg>\n"
],
"text/plain": [
"<Figure size 252x180 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"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())"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.16"
}
},
"nbformat": 4,
"nbformat_minor": 5
}