You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2705 lines
200 KiB
2705 lines
200 KiB
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 7.4 动量法"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"1.0.0\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"%matplotlib inline\n",
|
|
"import sys\n",
|
|
"sys.path.append(\"..\") \n",
|
|
"import d2lzh_pytorch as d2l\n",
|
|
"import torch\n",
|
|
"\n",
|
|
"eta = 0.4\n",
|
|
"print(torch.__version__)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 7.4.1 梯度下降的问题"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"epoch 20, x1 -0.943467, x2 -0.000073\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\nNw4zM6vlB/boPHmkPc1SAAAAAElFTkSuQmCC\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x1110a18d0>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"def f_2d(x1, x2):\n",
|
|
" return 0.1 * x1 ** 2 + 2 * x2 ** 2\n",
|
|
"\n",
|
|
"def gd_2d(x1, x2, s1, s2):\n",
|
|
" return (x1 - eta * 0.2 * x1, x2 - eta * 4 * x2, 0, 0)\n",
|
|
"\n",
|
|
"d2l.show_trace_2d(f_2d, d2l.train_2d(gd_2d))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"epoch 20, x1 -0.387814, x2 -1673.365109\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x1111691d0>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"eta = 0.6\n",
|
|
"d2l.show_trace_2d(f_2d, d2l.train_2d(gd_2d))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 7.4.2 动量法"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"epoch 20, x1 -0.062843, x2 0.001202\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\nlQtFcwP7AAAAAElFTkSuQmCC\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x11dec3c88>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"def momentum_2d(x1, x2, v1, v2):\n",
|
|
" v1 = gamma * v1 + eta * 0.2 * x1\n",
|
|
" v2 = gamma * v2 + eta * 4 * x2\n",
|
|
" return x1 - v1, x2 - v2, v1, v2\n",
|
|
"\n",
|
|
"eta, gamma = 0.4, 0.5\n",
|
|
"d2l.show_trace_2d(f_2d, d2l.train_2d(momentum_2d))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"epoch 20, x1 0.007188, x2 0.002553\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x11de85ac8>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"eta = 0.6\n",
|
|
"d2l.show_trace_2d(f_2d, d2l.train_2d(momentum_2d))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 7.4.3 从零开始实现"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"features, labels = d2l.get_data_ch7()\n",
|
|
"\n",
|
|
"def init_momentum_states():\n",
|
|
" v_w = torch.zeros((features.shape[1], 1), dtype=torch.float32)\n",
|
|
" v_b = torch.zeros(1, dtype=torch.float32)\n",
|
|
" return (v_w, v_b)\n",
|
|
"\n",
|
|
"def sgd_momentum(params, states, hyperparams):\n",
|
|
" for p, v in zip(params, states):\n",
|
|
" v.data = hyperparams['momentum'] * v.data + hyperparams['lr'] * p.grad.data\n",
|
|
" p.data -= v.data"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"loss: 0.247369, 0.040711 sec per epoch\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 (http://matplotlib.org/) -->\n",
|
|
"<svg height=\"184pt\" version=\"1.1\" viewBox=\"0 0 256 184\" width=\"256pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
|
" <defs>\n",
|
|
" <style type=\"text/css\">\n",
|
|
"*{stroke-linecap:butt;stroke-linejoin:round;}\n",
|
|
" </style>\n",
|
|
" </defs>\n",
|
|
" <g id=\"figure_1\">\n",
|
|
" <g id=\"patch_1\">\n",
|
|
" <path d=\"M 0 184.15625 \n",
|
|
"L 256.14375 184.15625 \n",
|
|
"L 256.14375 -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 50.14375 146.6 \n",
|
|
"L 245.44375 146.6 \n",
|
|
"L 245.44375 10.7 \n",
|
|
"L 50.14375 10.7 \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",
|
|
" <defs>\n",
|
|
" <path d=\"M 0 0 \n",
|
|
"L 0 3.5 \n",
|
|
"\" id=\"mc68a50c681\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
|
|
" </defs>\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"59.021023\" xlink:href=\"#mc68a50c681\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_1\">\n",
|
|
" <!-- 0.0 -->\n",
|
|
" <defs>\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-30\"/>\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-2e\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(51.06946 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_2\">\n",
|
|
" <g id=\"line2d_2\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"103.407386\" xlink:href=\"#mc68a50c681\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_2\">\n",
|
|
" <!-- 0.5 -->\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-35\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(95.455824 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_3\">\n",
|
|
" <g id=\"line2d_3\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"147.79375\" xlink:href=\"#mc68a50c681\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_3\">\n",
|
|
" <!-- 1.0 -->\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-31\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(139.842187 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-31\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_4\">\n",
|
|
" <g id=\"line2d_4\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"192.180114\" xlink:href=\"#mc68a50c681\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_4\">\n",
|
|
" <!-- 1.5 -->\n",
|
|
" <g transform=\"translate(184.228551 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-31\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_5\">\n",
|
|
" <g id=\"line2d_5\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"236.566477\" xlink:href=\"#mc68a50c681\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_5\">\n",
|
|
" <!-- 2.0 -->\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-32\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(228.614915 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-32\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_6\">\n",
|
|
" <!-- epoch -->\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-65\"/>\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-70\"/>\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-6f\"/>\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-63\"/>\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-68\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(132.565625 174.876562)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-65\"/>\n",
|
|
" <use x=\"61.523438\" xlink:href=\"#DejaVuSans-70\"/>\n",
|
|
" <use x=\"125\" xlink:href=\"#DejaVuSans-6f\"/>\n",
|
|
" <use x=\"186.181641\" xlink:href=\"#DejaVuSans-63\"/>\n",
|
|
" <use x=\"241.162109\" xlink:href=\"#DejaVuSans-68\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"matplotlib.axis_2\">\n",
|
|
" <g id=\"ytick_1\">\n",
|
|
" <g id=\"line2d_6\">\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 0 0 \n",
|
|
"L -3.5 0 \n",
|
|
"\" id=\"m4d90bcabcf\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
|
|
" </defs>\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#m4d90bcabcf\" y=\"136.976109\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_7\">\n",
|
|
" <!-- 0.25 -->\n",
|
|
" <g transform=\"translate(20.878125 140.775328)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-32\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_2\">\n",
|
|
" <g id=\"line2d_7\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#m4d90bcabcf\" y=\"111.423896\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_8\">\n",
|
|
" <!-- 0.30 -->\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 40.578125 39.3125 \n",
|
|
"Q 47.65625 37.796875 51.625 33 \n",
|
|
"Q 55.609375 28.21875 55.609375 21.1875 \n",
|
|
"Q 55.609375 10.40625 48.1875 4.484375 \n",
|
|
"Q 40.765625 -1.421875 27.09375 -1.421875 \n",
|
|
"Q 22.515625 -1.421875 17.65625 -0.515625 \n",
|
|
"Q 12.796875 0.390625 7.625 2.203125 \n",
|
|
"L 7.625 11.71875 \n",
|
|
"Q 11.71875 9.328125 16.59375 8.109375 \n",
|
|
"Q 21.484375 6.890625 26.8125 6.890625 \n",
|
|
"Q 36.078125 6.890625 40.9375 10.546875 \n",
|
|
"Q 45.796875 14.203125 45.796875 21.1875 \n",
|
|
"Q 45.796875 27.640625 41.28125 31.265625 \n",
|
|
"Q 36.765625 34.90625 28.71875 34.90625 \n",
|
|
"L 20.21875 34.90625 \n",
|
|
"L 20.21875 43.015625 \n",
|
|
"L 29.109375 43.015625 \n",
|
|
"Q 36.375 43.015625 40.234375 45.921875 \n",
|
|
"Q 44.09375 48.828125 44.09375 54.296875 \n",
|
|
"Q 44.09375 59.90625 40.109375 62.90625 \n",
|
|
"Q 36.140625 65.921875 28.71875 65.921875 \n",
|
|
"Q 24.65625 65.921875 20.015625 65.03125 \n",
|
|
"Q 15.375 64.15625 9.8125 62.3125 \n",
|
|
"L 9.8125 71.09375 \n",
|
|
"Q 15.4375 72.65625 20.34375 73.4375 \n",
|
|
"Q 25.25 74.21875 29.59375 74.21875 \n",
|
|
"Q 40.828125 74.21875 47.359375 69.109375 \n",
|
|
"Q 53.90625 64.015625 53.90625 55.328125 \n",
|
|
"Q 53.90625 49.265625 50.4375 45.09375 \n",
|
|
"Q 46.96875 40.921875 40.578125 39.3125 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-33\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(20.878125 115.223115)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-33\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_3\">\n",
|
|
" <g id=\"line2d_8\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#m4d90bcabcf\" y=\"85.871683\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_9\">\n",
|
|
" <!-- 0.35 -->\n",
|
|
" <g transform=\"translate(20.878125 89.670901)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-33\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_4\">\n",
|
|
" <g id=\"line2d_9\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#m4d90bcabcf\" y=\"60.319469\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_10\">\n",
|
|
" <!-- 0.40 -->\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-34\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(20.878125 64.118688)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-34\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_5\">\n",
|
|
" <g id=\"line2d_10\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#m4d90bcabcf\" y=\"34.767256\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_11\">\n",
|
|
" <!-- 0.45 -->\n",
|
|
" <g transform=\"translate(20.878125 38.566475)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-34\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_12\">\n",
|
|
" <!-- loss -->\n",
|
|
" <defs>\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-6c\"/>\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-73\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(14.798437 88.307812)rotate(-90)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-6c\"/>\n",
|
|
" <use x=\"27.783203\" xlink:href=\"#DejaVuSans-6f\"/>\n",
|
|
" <use x=\"88.964844\" xlink:href=\"#DejaVuSans-73\"/>\n",
|
|
" <use x=\"141.064453\" xlink:href=\"#DejaVuSans-73\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"line2d_11\">\n",
|
|
" <path clip-path=\"url(#pc9b743ed19)\" d=\"M 59.021023 16.877273 \n",
|
|
"L 64.939205 59.080313 \n",
|
|
"L 70.857386 89.90828 \n",
|
|
"L 76.775568 110.895261 \n",
|
|
"L 82.69375 122.503054 \n",
|
|
"L 88.611932 129.643691 \n",
|
|
"L 94.530114 135.241027 \n",
|
|
"L 100.448295 136.721413 \n",
|
|
"L 106.366477 136.780217 \n",
|
|
"L 112.284659 137.062137 \n",
|
|
"L 118.202841 136.971905 \n",
|
|
"L 124.121023 138.008754 \n",
|
|
"L 130.039205 137.320223 \n",
|
|
"L 135.957386 139.111398 \n",
|
|
"L 141.875568 140.028316 \n",
|
|
"L 147.79375 139.893733 \n",
|
|
"L 153.711932 139.331735 \n",
|
|
"L 159.630114 139.694612 \n",
|
|
"L 165.548295 139.654549 \n",
|
|
"L 171.466477 140.195301 \n",
|
|
"L 177.384659 140.422727 \n",
|
|
"L 183.302841 139.586302 \n",
|
|
"L 189.221023 139.329717 \n",
|
|
"L 195.139205 140.037553 \n",
|
|
"L 201.057386 139.780366 \n",
|
|
"L 206.975568 137.555439 \n",
|
|
"L 212.89375 139.83285 \n",
|
|
"L 218.811932 140.269099 \n",
|
|
"L 224.730114 140.015842 \n",
|
|
"L 230.648295 137.343205 \n",
|
|
"L 236.566477 138.320511 \n",
|
|
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"patch_3\">\n",
|
|
" <path d=\"M 50.14375 146.6 \n",
|
|
"L 50.14375 10.7 \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 245.44375 146.6 \n",
|
|
"L 245.44375 10.7 \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 50.14375 146.6 \n",
|
|
"L 245.44375 146.6 \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 50.14375 10.7 \n",
|
|
"L 245.44375 10.7 \n",
|
|
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <defs>\n",
|
|
" <clipPath id=\"pc9b743ed19\">\n",
|
|
" <rect height=\"135.9\" width=\"195.3\" x=\"50.14375\" y=\"10.7\"/>\n",
|
|
" </clipPath>\n",
|
|
" </defs>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x11e089908>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"d2l.train_ch7(sgd_momentum, init_momentum_states(),\n",
|
|
" {'lr': 0.02, 'momentum': 0.5}, features, labels)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"loss: 0.283397, 0.075622 sec per epoch\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 (http://matplotlib.org/) -->\n",
|
|
"<svg height=\"184pt\" version=\"1.1\" viewBox=\"0 0 256 184\" width=\"256pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
|
" <defs>\n",
|
|
" <style type=\"text/css\">\n",
|
|
"*{stroke-linecap:butt;stroke-linejoin:round;}\n",
|
|
" </style>\n",
|
|
" </defs>\n",
|
|
" <g id=\"figure_1\">\n",
|
|
" <g id=\"patch_1\">\n",
|
|
" <path d=\"M 0 184.670728 \n",
|
|
"L 256.14375 184.670728 \n",
|
|
"L 256.14375 -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 50.14375 147.114478 \n",
|
|
"L 245.44375 147.114478 \n",
|
|
"L 245.44375 11.214478 \n",
|
|
"L 50.14375 11.214478 \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",
|
|
" <defs>\n",
|
|
" <path d=\"M 0 0 \n",
|
|
"L 0 3.5 \n",
|
|
"\" id=\"m8182e650c7\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
|
|
" </defs>\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"59.021023\" xlink:href=\"#m8182e650c7\" y=\"147.114478\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_1\">\n",
|
|
" <!-- 0.0 -->\n",
|
|
" <defs>\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-30\"/>\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-2e\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(51.06946 161.712916)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_2\">\n",
|
|
" <g id=\"line2d_2\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"103.407386\" xlink:href=\"#m8182e650c7\" y=\"147.114478\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_2\">\n",
|
|
" <!-- 0.5 -->\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-35\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(95.455824 161.712916)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_3\">\n",
|
|
" <g id=\"line2d_3\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"147.79375\" xlink:href=\"#m8182e650c7\" y=\"147.114478\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_3\">\n",
|
|
" <!-- 1.0 -->\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-31\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(139.842187 161.712916)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-31\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_4\">\n",
|
|
" <g id=\"line2d_4\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"192.180114\" xlink:href=\"#m8182e650c7\" y=\"147.114478\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_4\">\n",
|
|
" <!-- 1.5 -->\n",
|
|
" <g transform=\"translate(184.228551 161.712916)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-31\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_5\">\n",
|
|
" <g id=\"line2d_5\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"236.566477\" xlink:href=\"#m8182e650c7\" y=\"147.114478\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_5\">\n",
|
|
" <!-- 2.0 -->\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-32\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(228.614915 161.712916)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-32\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_6\">\n",
|
|
" <!-- epoch -->\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-65\"/>\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-70\"/>\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-6f\"/>\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-63\"/>\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-68\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(132.565625 175.391041)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-65\"/>\n",
|
|
" <use x=\"61.523438\" xlink:href=\"#DejaVuSans-70\"/>\n",
|
|
" <use x=\"125\" xlink:href=\"#DejaVuSans-6f\"/>\n",
|
|
" <use x=\"186.181641\" xlink:href=\"#DejaVuSans-63\"/>\n",
|
|
" <use x=\"241.162109\" xlink:href=\"#DejaVuSans-68\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"matplotlib.axis_2\">\n",
|
|
" <g id=\"ytick_1\">\n",
|
|
" <g id=\"line2d_6\">\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 0 0 \n",
|
|
"L -3.5 0 \n",
|
|
"\" id=\"m17456102da\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
|
|
" </defs>\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#m17456102da\" y=\"141.587985\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_7\">\n",
|
|
" <!-- 0.25 -->\n",
|
|
" <g transform=\"translate(20.878125 145.387204)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-32\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_2\">\n",
|
|
" <g id=\"line2d_7\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#m17456102da\" y=\"115.470232\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_8\">\n",
|
|
" <!-- 0.30 -->\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 40.578125 39.3125 \n",
|
|
"Q 47.65625 37.796875 51.625 33 \n",
|
|
"Q 55.609375 28.21875 55.609375 21.1875 \n",
|
|
"Q 55.609375 10.40625 48.1875 4.484375 \n",
|
|
"Q 40.765625 -1.421875 27.09375 -1.421875 \n",
|
|
"Q 22.515625 -1.421875 17.65625 -0.515625 \n",
|
|
"Q 12.796875 0.390625 7.625 2.203125 \n",
|
|
"L 7.625 11.71875 \n",
|
|
"Q 11.71875 9.328125 16.59375 8.109375 \n",
|
|
"Q 21.484375 6.890625 26.8125 6.890625 \n",
|
|
"Q 36.078125 6.890625 40.9375 10.546875 \n",
|
|
"Q 45.796875 14.203125 45.796875 21.1875 \n",
|
|
"Q 45.796875 27.640625 41.28125 31.265625 \n",
|
|
"Q 36.765625 34.90625 28.71875 34.90625 \n",
|
|
"L 20.21875 34.90625 \n",
|
|
"L 20.21875 43.015625 \n",
|
|
"L 29.109375 43.015625 \n",
|
|
"Q 36.375 43.015625 40.234375 45.921875 \n",
|
|
"Q 44.09375 48.828125 44.09375 54.296875 \n",
|
|
"Q 44.09375 59.90625 40.109375 62.90625 \n",
|
|
"Q 36.140625 65.921875 28.71875 65.921875 \n",
|
|
"Q 24.65625 65.921875 20.015625 65.03125 \n",
|
|
"Q 15.375 64.15625 9.8125 62.3125 \n",
|
|
"L 9.8125 71.09375 \n",
|
|
"Q 15.4375 72.65625 20.34375 73.4375 \n",
|
|
"Q 25.25 74.21875 29.59375 74.21875 \n",
|
|
"Q 40.828125 74.21875 47.359375 69.109375 \n",
|
|
"Q 53.90625 64.015625 53.90625 55.328125 \n",
|
|
"Q 53.90625 49.265625 50.4375 45.09375 \n",
|
|
"Q 46.96875 40.921875 40.578125 39.3125 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-33\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(20.878125 119.269451)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-33\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_3\">\n",
|
|
" <g id=\"line2d_8\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#m17456102da\" y=\"89.352479\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_9\">\n",
|
|
" <!-- 0.35 -->\n",
|
|
" <g transform=\"translate(20.878125 93.151697)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-33\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_4\">\n",
|
|
" <g id=\"line2d_9\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#m17456102da\" y=\"63.234725\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_10\">\n",
|
|
" <!-- 0.40 -->\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-34\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(20.878125 67.033944)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-34\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_5\">\n",
|
|
" <g id=\"line2d_10\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#m17456102da\" y=\"37.116972\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_11\">\n",
|
|
" <!-- 0.45 -->\n",
|
|
" <g transform=\"translate(20.878125 40.916191)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-34\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_6\">\n",
|
|
" <g id=\"line2d_11\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#m17456102da\" y=\"10.999219\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_12\">\n",
|
|
" <!-- 0.50 -->\n",
|
|
" <g transform=\"translate(20.878125 14.798438)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_13\">\n",
|
|
" <!-- loss -->\n",
|
|
" <defs>\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-6c\"/>\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-73\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(14.798437 88.822291)rotate(-90)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-6c\"/>\n",
|
|
" <use x=\"27.783203\" xlink:href=\"#DejaVuSans-6f\"/>\n",
|
|
" <use x=\"88.964844\" xlink:href=\"#DejaVuSans-73\"/>\n",
|
|
" <use x=\"141.064453\" xlink:href=\"#DejaVuSans-73\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"line2d_12\">\n",
|
|
" <path clip-path=\"url(#p5c187fef0b)\" d=\"M 59.021023 17.391751 \n",
|
|
"L 64.939205 72.267376 \n",
|
|
"L 70.857386 136.730943 \n",
|
|
"L 76.775568 115.394272 \n",
|
|
"L 82.69375 127.691891 \n",
|
|
"L 88.611932 137.608788 \n",
|
|
"L 94.530114 137.241366 \n",
|
|
"L 100.448295 125.482224 \n",
|
|
"L 106.366477 137.920992 \n",
|
|
"L 112.284659 131.065392 \n",
|
|
"L 118.202841 137.260125 \n",
|
|
"L 124.121023 133.844623 \n",
|
|
"L 130.039205 140.937206 \n",
|
|
"L 135.957386 137.483128 \n",
|
|
"L 141.875568 138.016218 \n",
|
|
"L 147.79375 138.644238 \n",
|
|
"L 153.711932 133.467223 \n",
|
|
"L 159.630114 133.256316 \n",
|
|
"L 165.548295 134.707181 \n",
|
|
"L 171.466477 131.635828 \n",
|
|
"L 177.384659 135.138056 \n",
|
|
"L 183.302841 126.83145 \n",
|
|
"L 189.221023 138.595947 \n",
|
|
"L 195.139205 137.81778 \n",
|
|
"L 201.057386 139.626618 \n",
|
|
"L 206.975568 130.142463 \n",
|
|
"L 212.89375 139.423043 \n",
|
|
"L 218.811932 134.11288 \n",
|
|
"L 224.730114 131.858893 \n",
|
|
"L 230.648295 131.230235 \n",
|
|
"L 236.566477 124.142976 \n",
|
|
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"patch_3\">\n",
|
|
" <path d=\"M 50.14375 147.114478 \n",
|
|
"L 50.14375 11.214478 \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 245.44375 147.114478 \n",
|
|
"L 245.44375 11.214478 \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 50.14375 147.114478 \n",
|
|
"L 245.44375 147.114478 \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 50.14375 11.214478 \n",
|
|
"L 245.44375 11.214478 \n",
|
|
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <defs>\n",
|
|
" <clipPath id=\"p5c187fef0b\">\n",
|
|
" <rect height=\"135.9\" width=\"195.3\" x=\"50.14375\" y=\"11.214478\"/>\n",
|
|
" </clipPath>\n",
|
|
" </defs>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x11dfe0208>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"d2l.train_ch7(sgd_momentum, init_momentum_states(),\n",
|
|
" {'lr': 0.02, 'momentum': 0.9}, features, labels)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"loss: 0.242619, 0.045030 sec per epoch\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 (http://matplotlib.org/) -->\n",
|
|
"<svg height=\"184pt\" version=\"1.1\" viewBox=\"0 0 256 184\" width=\"256pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
|
" <defs>\n",
|
|
" <style type=\"text/css\">\n",
|
|
"*{stroke-linecap:butt;stroke-linejoin:round;}\n",
|
|
" </style>\n",
|
|
" </defs>\n",
|
|
" <g id=\"figure_1\">\n",
|
|
" <g id=\"patch_1\">\n",
|
|
" <path d=\"M 0 184.15625 \n",
|
|
"L 256.14375 184.15625 \n",
|
|
"L 256.14375 -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 50.14375 146.6 \n",
|
|
"L 245.44375 146.6 \n",
|
|
"L 245.44375 10.7 \n",
|
|
"L 50.14375 10.7 \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",
|
|
" <defs>\n",
|
|
" <path d=\"M 0 0 \n",
|
|
"L 0 3.5 \n",
|
|
"\" id=\"mf67d090ef9\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
|
|
" </defs>\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"59.021023\" xlink:href=\"#mf67d090ef9\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_1\">\n",
|
|
" <!-- 0.0 -->\n",
|
|
" <defs>\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-30\"/>\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-2e\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(51.06946 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_2\">\n",
|
|
" <g id=\"line2d_2\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"103.407386\" xlink:href=\"#mf67d090ef9\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_2\">\n",
|
|
" <!-- 0.5 -->\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-35\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(95.455824 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_3\">\n",
|
|
" <g id=\"line2d_3\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"147.79375\" xlink:href=\"#mf67d090ef9\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_3\">\n",
|
|
" <!-- 1.0 -->\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-31\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(139.842187 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-31\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_4\">\n",
|
|
" <g id=\"line2d_4\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"192.180114\" xlink:href=\"#mf67d090ef9\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_4\">\n",
|
|
" <!-- 1.5 -->\n",
|
|
" <g transform=\"translate(184.228551 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-31\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_5\">\n",
|
|
" <g id=\"line2d_5\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"236.566477\" xlink:href=\"#mf67d090ef9\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_5\">\n",
|
|
" <!-- 2.0 -->\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-32\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(228.614915 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-32\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_6\">\n",
|
|
" <!-- epoch -->\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-65\"/>\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-70\"/>\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-6f\"/>\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-63\"/>\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-68\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(132.565625 174.876562)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-65\"/>\n",
|
|
" <use x=\"61.523438\" xlink:href=\"#DejaVuSans-70\"/>\n",
|
|
" <use x=\"125\" xlink:href=\"#DejaVuSans-6f\"/>\n",
|
|
" <use x=\"186.181641\" xlink:href=\"#DejaVuSans-63\"/>\n",
|
|
" <use x=\"241.162109\" xlink:href=\"#DejaVuSans-68\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"matplotlib.axis_2\">\n",
|
|
" <g id=\"ytick_1\">\n",
|
|
" <g id=\"line2d_6\">\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 0 0 \n",
|
|
"L -3.5 0 \n",
|
|
"\" id=\"maa92c306bb\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
|
|
" </defs>\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#maa92c306bb\" y=\"136.739739\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_7\">\n",
|
|
" <!-- 0.25 -->\n",
|
|
" <g transform=\"translate(20.878125 140.538958)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-32\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_2\">\n",
|
|
" <g id=\"line2d_7\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#maa92c306bb\" y=\"111.987187\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_8\">\n",
|
|
" <!-- 0.30 -->\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 40.578125 39.3125 \n",
|
|
"Q 47.65625 37.796875 51.625 33 \n",
|
|
"Q 55.609375 28.21875 55.609375 21.1875 \n",
|
|
"Q 55.609375 10.40625 48.1875 4.484375 \n",
|
|
"Q 40.765625 -1.421875 27.09375 -1.421875 \n",
|
|
"Q 22.515625 -1.421875 17.65625 -0.515625 \n",
|
|
"Q 12.796875 0.390625 7.625 2.203125 \n",
|
|
"L 7.625 11.71875 \n",
|
|
"Q 11.71875 9.328125 16.59375 8.109375 \n",
|
|
"Q 21.484375 6.890625 26.8125 6.890625 \n",
|
|
"Q 36.078125 6.890625 40.9375 10.546875 \n",
|
|
"Q 45.796875 14.203125 45.796875 21.1875 \n",
|
|
"Q 45.796875 27.640625 41.28125 31.265625 \n",
|
|
"Q 36.765625 34.90625 28.71875 34.90625 \n",
|
|
"L 20.21875 34.90625 \n",
|
|
"L 20.21875 43.015625 \n",
|
|
"L 29.109375 43.015625 \n",
|
|
"Q 36.375 43.015625 40.234375 45.921875 \n",
|
|
"Q 44.09375 48.828125 44.09375 54.296875 \n",
|
|
"Q 44.09375 59.90625 40.109375 62.90625 \n",
|
|
"Q 36.140625 65.921875 28.71875 65.921875 \n",
|
|
"Q 24.65625 65.921875 20.015625 65.03125 \n",
|
|
"Q 15.375 64.15625 9.8125 62.3125 \n",
|
|
"L 9.8125 71.09375 \n",
|
|
"Q 15.4375 72.65625 20.34375 73.4375 \n",
|
|
"Q 25.25 74.21875 29.59375 74.21875 \n",
|
|
"Q 40.828125 74.21875 47.359375 69.109375 \n",
|
|
"Q 53.90625 64.015625 53.90625 55.328125 \n",
|
|
"Q 53.90625 49.265625 50.4375 45.09375 \n",
|
|
"Q 46.96875 40.921875 40.578125 39.3125 \n",
|
|
"z\n",
|
|
"\" id=\"DejaVuSans-33\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(20.878125 115.786405)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-33\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_3\">\n",
|
|
" <g id=\"line2d_8\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#maa92c306bb\" y=\"87.234634\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_9\">\n",
|
|
" <!-- 0.35 -->\n",
|
|
" <g transform=\"translate(20.878125 91.033853)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-33\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_4\">\n",
|
|
" <g id=\"line2d_9\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#maa92c306bb\" y=\"62.482082\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_10\">\n",
|
|
" <!-- 0.40 -->\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-34\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(20.878125 66.281301)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-34\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_5\">\n",
|
|
" <g id=\"line2d_10\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#maa92c306bb\" y=\"37.72953\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_11\">\n",
|
|
" <!-- 0.45 -->\n",
|
|
" <g transform=\"translate(20.878125 41.528749)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-34\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_6\">\n",
|
|
" <g id=\"line2d_11\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#maa92c306bb\" y=\"12.976978\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_12\">\n",
|
|
" <!-- 0.50 -->\n",
|
|
" <g transform=\"translate(20.878125 16.776196)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" <use x=\"159.033203\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_13\">\n",
|
|
" <!-- loss -->\n",
|
|
" <defs>\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-6c\"/>\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-73\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(14.798437 88.307812)rotate(-90)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-6c\"/>\n",
|
|
" <use x=\"27.783203\" xlink:href=\"#DejaVuSans-6f\"/>\n",
|
|
" <use x=\"88.964844\" xlink:href=\"#DejaVuSans-73\"/>\n",
|
|
" <use x=\"141.064453\" xlink:href=\"#DejaVuSans-73\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"line2d_12\">\n",
|
|
" <path clip-path=\"url(#pdf1f7a4ac9)\" d=\"M 59.021023 16.877273 \n",
|
|
"L 64.939205 42.550076 \n",
|
|
"L 70.857386 75.976657 \n",
|
|
"L 76.775568 105.177727 \n",
|
|
"L 82.69375 122.208347 \n",
|
|
"L 88.611932 132.081267 \n",
|
|
"L 94.530114 136.25033 \n",
|
|
"L 100.448295 136.447985 \n",
|
|
"L 106.366477 137.822562 \n",
|
|
"L 112.284659 138.764835 \n",
|
|
"L 118.202841 138.778128 \n",
|
|
"L 124.121023 138.42643 \n",
|
|
"L 130.039205 138.306564 \n",
|
|
"L 135.957386 139.215324 \n",
|
|
"L 141.875568 137.374206 \n",
|
|
"L 147.79375 138.828748 \n",
|
|
"L 153.711932 139.64082 \n",
|
|
"L 159.630114 139.662448 \n",
|
|
"L 165.548295 140.217548 \n",
|
|
"L 171.466477 139.797297 \n",
|
|
"L 177.384659 139.43775 \n",
|
|
"L 183.302841 139.576966 \n",
|
|
"L 189.221023 138.709088 \n",
|
|
"L 195.139205 139.780043 \n",
|
|
"L 201.057386 140.14732 \n",
|
|
"L 206.975568 139.677069 \n",
|
|
"L 212.89375 139.887774 \n",
|
|
"L 218.811932 140.221554 \n",
|
|
"L 224.730114 140.246148 \n",
|
|
"L 230.648295 140.422727 \n",
|
|
"L 236.566477 140.393803 \n",
|
|
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"patch_3\">\n",
|
|
" <path d=\"M 50.14375 146.6 \n",
|
|
"L 50.14375 10.7 \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 245.44375 146.6 \n",
|
|
"L 245.44375 10.7 \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 50.14375 146.6 \n",
|
|
"L 245.44375 146.6 \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 50.14375 10.7 \n",
|
|
"L 245.44375 10.7 \n",
|
|
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <defs>\n",
|
|
" <clipPath id=\"pdf1f7a4ac9\">\n",
|
|
" <rect height=\"135.9\" width=\"195.3\" x=\"50.14375\" y=\"10.7\"/>\n",
|
|
" </clipPath>\n",
|
|
" </defs>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x11e5c8668>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"d2l.train_ch7(sgd_momentum, init_momentum_states(),\n",
|
|
" {'lr': 0.004, 'momentum': 0.9}, features, labels)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 7.4.4 简洁实现"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"loss: 0.253280, 0.060247 sec per epoch\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 (http://matplotlib.org/) -->\n",
|
|
"<svg height=\"184pt\" version=\"1.1\" viewBox=\"0 0 249 184\" width=\"249pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
|
|
" <defs>\n",
|
|
" <style type=\"text/css\">\n",
|
|
"*{stroke-linecap:butt;stroke-linejoin:round;}\n",
|
|
" </style>\n",
|
|
" </defs>\n",
|
|
" <g id=\"figure_1\">\n",
|
|
" <g id=\"patch_1\">\n",
|
|
" <path d=\"M 0 184.15625 \n",
|
|
"L 249.78125 184.15625 \n",
|
|
"L 249.78125 -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 43.78125 146.6 \n",
|
|
"L 239.08125 146.6 \n",
|
|
"L 239.08125 10.7 \n",
|
|
"L 43.78125 10.7 \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",
|
|
" <defs>\n",
|
|
" <path d=\"M 0 0 \n",
|
|
"L 0 3.5 \n",
|
|
"\" id=\"m49cf4c0bbb\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
|
|
" </defs>\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"52.658523\" xlink:href=\"#m49cf4c0bbb\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_1\">\n",
|
|
" <!-- 0.0 -->\n",
|
|
" <defs>\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-30\"/>\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-2e\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(44.70696 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_2\">\n",
|
|
" <g id=\"line2d_2\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"97.044886\" xlink:href=\"#m49cf4c0bbb\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_2\">\n",
|
|
" <!-- 0.5 -->\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-35\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(89.093324 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_3\">\n",
|
|
" <g id=\"line2d_3\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"141.43125\" xlink:href=\"#m49cf4c0bbb\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_3\">\n",
|
|
" <!-- 1.0 -->\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-31\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(133.479688 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-31\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_4\">\n",
|
|
" <g id=\"line2d_4\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"185.817614\" xlink:href=\"#m49cf4c0bbb\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_4\">\n",
|
|
" <!-- 1.5 -->\n",
|
|
" <g transform=\"translate(177.866051 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-31\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-35\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"xtick_5\">\n",
|
|
" <g id=\"line2d_5\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"230.203977\" xlink:href=\"#m49cf4c0bbb\" y=\"146.6\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_5\">\n",
|
|
" <!-- 2.0 -->\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-32\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(222.252415 161.198437)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-32\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_6\">\n",
|
|
" <!-- epoch -->\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-65\"/>\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-70\"/>\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-6f\"/>\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-63\"/>\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-68\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(126.203125 174.876562)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-65\"/>\n",
|
|
" <use x=\"61.523438\" xlink:href=\"#DejaVuSans-70\"/>\n",
|
|
" <use x=\"125\" xlink:href=\"#DejaVuSans-6f\"/>\n",
|
|
" <use x=\"186.181641\" xlink:href=\"#DejaVuSans-63\"/>\n",
|
|
" <use x=\"241.162109\" xlink:href=\"#DejaVuSans-68\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"matplotlib.axis_2\">\n",
|
|
" <g id=\"ytick_1\">\n",
|
|
" <g id=\"line2d_6\">\n",
|
|
" <defs>\n",
|
|
" <path d=\"M 0 0 \n",
|
|
"L -3.5 0 \n",
|
|
"\" id=\"mb0ab4fc347\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n",
|
|
" </defs>\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#mb0ab4fc347\" y=\"107.37084\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_7\">\n",
|
|
" <!-- 0.4 -->\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-34\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(20.878125 111.170059)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-34\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_2\">\n",
|
|
" <g id=\"line2d_7\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#mb0ab4fc347\" y=\"65.441227\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_8\">\n",
|
|
" <!-- 0.6 -->\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-36\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(20.878125 69.240446)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-36\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"ytick_3\">\n",
|
|
" <g id=\"line2d_8\">\n",
|
|
" <g>\n",
|
|
" <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#mb0ab4fc347\" y=\"23.511613\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_9\">\n",
|
|
" <!-- 0.8 -->\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-38\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(20.878125 27.310832)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-30\"/>\n",
|
|
" <use x=\"63.623047\" xlink:href=\"#DejaVuSans-2e\"/>\n",
|
|
" <use x=\"95.410156\" xlink:href=\"#DejaVuSans-38\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"text_10\">\n",
|
|
" <!-- loss -->\n",
|
|
" <defs>\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-6c\"/>\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-73\"/>\n",
|
|
" </defs>\n",
|
|
" <g transform=\"translate(14.798437 88.307812)rotate(-90)scale(0.1 -0.1)\">\n",
|
|
" <use xlink:href=\"#DejaVuSans-6c\"/>\n",
|
|
" <use x=\"27.783203\" xlink:href=\"#DejaVuSans-6f\"/>\n",
|
|
" <use x=\"88.964844\" xlink:href=\"#DejaVuSans-73\"/>\n",
|
|
" <use x=\"141.064453\" xlink:href=\"#DejaVuSans-73\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <g id=\"line2d_9\">\n",
|
|
" <path clip-path=\"url(#pe919ec1e39)\" d=\"M 52.658523 16.877273 \n",
|
|
"L 58.576705 52.599621 \n",
|
|
"L 64.494886 89.722803 \n",
|
|
"L 70.413068 111.918901 \n",
|
|
"L 76.33125 125.012078 \n",
|
|
"L 82.249432 132.789462 \n",
|
|
"L 88.167614 137.414787 \n",
|
|
"L 94.085795 139.159232 \n",
|
|
"L 100.003977 139.533481 \n",
|
|
"L 105.922159 139.707525 \n",
|
|
"L 111.840341 139.782307 \n",
|
|
"L 117.758523 139.984942 \n",
|
|
"L 123.676705 139.473466 \n",
|
|
"L 129.594886 138.964757 \n",
|
|
"L 135.513068 139.763079 \n",
|
|
"L 141.43125 140.094551 \n",
|
|
"L 147.349432 139.899157 \n",
|
|
"L 153.267614 139.792813 \n",
|
|
"L 159.185795 140.021218 \n",
|
|
"L 165.103977 140.26858 \n",
|
|
"L 171.022159 140.116881 \n",
|
|
"L 176.940341 140.168265 \n",
|
|
"L 182.858523 140.207646 \n",
|
|
"L 188.776705 140.04532 \n",
|
|
"L 194.694886 139.600737 \n",
|
|
"L 200.613068 139.605929 \n",
|
|
"L 206.53125 139.792826 \n",
|
|
"L 212.449432 140.205915 \n",
|
|
"L 218.367614 140.422727 \n",
|
|
"L 224.285795 140.193635 \n",
|
|
"L 230.203977 138.130358 \n",
|
|
"\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n",
|
|
" </g>\n",
|
|
" <g id=\"patch_3\">\n",
|
|
" <path d=\"M 43.78125 146.6 \n",
|
|
"L 43.78125 10.7 \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 239.08125 146.6 \n",
|
|
"L 239.08125 10.7 \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 43.78125 146.6 \n",
|
|
"L 239.08125 146.6 \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 43.78125 10.7 \n",
|
|
"L 239.08125 10.7 \n",
|
|
"\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" </g>\n",
|
|
" <defs>\n",
|
|
" <clipPath id=\"pe919ec1e39\">\n",
|
|
" <rect height=\"135.9\" width=\"195.3\" x=\"43.78125\" y=\"10.7\"/>\n",
|
|
" </clipPath>\n",
|
|
" </defs>\n",
|
|
"</svg>\n"
|
|
],
|
|
"text/plain": [
|
|
"<matplotlib.figure.Figure at 0x121b3dcc0>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"d2l.train_pytorch_ch7(torch.optim.SGD, {'lr': 0.004, 'momentum': 0.9},\n",
|
|
" features, labels)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {
|
|
"collapsed": true
|
|
},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python [default]",
|
|
"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.6.3"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|