pythonproject/image_classification_dataset.ipynb
2024-06-25 14:15:07 +08:00

973 lines
122 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

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

{
"cells": [
{
"metadata": {},
"cell_type": "raw",
"source": "MNIST数据集 (LeCun et al., 1998) 是图像分类中广泛使用的数据集之一,但作为基准数据集过于简单。 我们将使用类似但更复杂的Fashion-MNIST数据集 (Xiao et al., 2017)。",
"id": "58ac648c45d06f50"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:25.877309Z",
"start_time": "2024-05-23T13:55:25.812732Z"
}
},
"cell_type": "code",
"source": [
"import tensorflow as tf\n",
"from d2l import tensorflow as d2l\n",
"from IPython import display\n",
"d2l.use_svg_display()"
],
"id": "4f19e5d16d0a7341",
"outputs": [],
"execution_count": 73
},
{
"metadata": {},
"cell_type": "raw",
"source": [
"3.5.1. 读取数据集\n",
"我们可以通过框架中的内置函数将Fashion-MNIST数据集下载并读取到内存中。"
],
"id": "c67a3433075cb8ed"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:32.337258Z",
"start_time": "2024-05-23T13:55:31.440906Z"
}
},
"cell_type": "code",
"source": "mnist_train, mnist_test = tf.keras.datasets.fashion_mnist.load_data()",
"id": "e5defd40322a3af2",
"outputs": [],
"execution_count": 74
},
{
"metadata": {},
"cell_type": "raw",
"source": "Fashion-MNIST由10个类别的图像组成 每个类别由训练数据集train dataset中的6000张图像 和测试数据集test dataset中的1000张图像组成。 因此训练集和测试集分别包含60000和10000张图像。 测试数据集不会用于训练,只用于评估模型性能。",
"id": "9f2c0b217b6b5e30"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:34.042764Z",
"start_time": "2024-05-23T13:55:34.012956Z"
}
},
"cell_type": "code",
"source": "len(mnist_train[0]), len(mnist_test[0])",
"id": "6129edd7e9c7e9fc",
"outputs": [
{
"data": {
"text/plain": [
"(60000, 10000)"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 75
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"每个输入图像的高度和宽度均为28像素。 数据集由灰度图像组成其通道数为1。 为了简洁起见,本书将高度\n",
"h像素、宽度w像素图像的形状记hxw或h,w。"
],
"id": "719bd9e11b3b06a9"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:36.376606Z",
"start_time": "2024-05-23T13:55:36.366558Z"
}
},
"cell_type": "code",
"source": "mnist_train[0][0].shape",
"id": "3ed7450fafac4f36",
"outputs": [
{
"data": {
"text/plain": [
"(28, 28)"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 76
},
{
"metadata": {},
"cell_type": "raw",
"source": "Fashion-MNIST中包含的10个类别分别为t-shirtT恤、trouser裤子、pullover套衫、dress连衣裙、coat外套、sandal凉鞋、shirt衬衫、sneaker运动鞋、bag和ankle boot短靴。 以下函数用于在数字标签索引及其文本名称之间进行转换。",
"id": "8003fdd00380a19b"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:38.313353Z",
"start_time": "2024-05-23T13:55:38.302321Z"
}
},
"cell_type": "code",
"source": [
"def get_fashion_mnist_labels(labels): #@save\n",
" \"\"\"返回Fashion-MNIST数据集的文本标签\"\"\"\n",
" text_labels = ['t-shirt', 'trouser', 'pullover', 'dress', 'coat',\n",
" 'sandal', 'shirt', 'sneaker', 'bag', 'ankle boot']\n",
" return [text_labels[int(i)] for i in labels]"
],
"id": "89d7939efe1b7dda",
"outputs": [],
"execution_count": 77
},
{
"metadata": {},
"cell_type": "markdown",
"source": "我们现在可以创建一个函数来可视化这些样本。",
"id": "b197821aad4ea3d9"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:39.686787Z",
"start_time": "2024-05-23T13:55:39.674485Z"
}
},
"cell_type": "code",
"source": [
"def show_images(imgs, num_rows, num_cols, titles=None, scale=1.5): #@save\n",
" \"\"\"绘制图像列表\"\"\"\n",
" figsize = (num_cols * scale, num_rows * scale)\n",
" _, axes = d2l.plt.subplots(num_rows, num_cols, figsize=figsize)\n",
" axes = axes.flatten()\n",
" for i, (ax, img) in enumerate(zip(axes, imgs)):\n",
" ax.imshow(img.numpy())\n",
" ax.axes.get_xaxis().set_visible(False)\n",
" ax.axes.get_yaxis().set_visible(False)\n",
" if titles:\n",
" ax.set_title(titles[i])\n",
" return axes"
],
"id": "a8769deec41f021d",
"outputs": [],
"execution_count": 78
},
{
"metadata": {},
"cell_type": "markdown",
"source": "以下是训练数据集中前几个样本的图像及其相应的标签。",
"id": "a982d30eb1488615"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:42.522468Z",
"start_time": "2024-05-23T13:55:41.174261Z"
}
},
"cell_type": "code",
"source": [
"X = tf.constant(mnist_train[0][:18])\n",
"y = tf.constant(mnist_train[1][:18])\n",
"show_images(X, 2, 9, titles=get_fashion_mnist_labels(y));"
],
"id": "92f6aa86ebd139f1",
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 1350x300 with 18 Axes>"
],
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"767.7pt\" height=\"191.304163pt\" viewBox=\"0 0 767.7 191.304163\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">\n <metadata>\n <rdf:RDF xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <cc:Work>\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n <dc:date>2024-05-23T21:55:42.349715</dc:date>\n <dc:format>image/svg+xml</dc:format>\n <dc:creator>\n <cc:Agent>\n <dc:title>Matplotlib v3.7.2, https://matplotlib.org/</dc:title>\n </cc:Agent>\n </dc:creator>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs>\n <style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style>\n </defs>\n <g id=\"figure_1\">\n <g id=\"patch_1\">\n <path d=\"M 0 191.304163 \nL 767.7 191.304163 \nL 767.7 0 \nL 0 0 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 7.2 93.384163 \nL 78.266038 93.384163 \nL 78.266038 22.318125 \nL 7.2 22.318125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#p27b7da0425)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"image4118976fb9\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"7.2\" y=\"-22.104163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_3\">\n <path d=\"M 7.2 93.384163 \nL 7.2 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_4\">\n <path d=\"M 78.266038 93.384163 \nL 78.266038 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_5\">\n <path d=\"M 7.2 93.384163 \nL 78.266038 93.384163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_6\">\n <path d=\"M 7.2 22.318125 \nL 78.266038 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_1\">\n <!-- ankle boot -->\n <g transform=\"translate(11.009894 16.318125) scale(0.12 -0.12)\">\n <defs>\n <path id=\"DejaVuSans-61\" d=\"M 2194 1759 \nQ 1497 1759 1228 1600 \nQ 959 1441 959 1056 \nQ 959 750 1161 570 \nQ 1363 391 1709 391 \nQ 2188 391 2477 730 \nQ 2766 1069 2766 1631 \nL 2766 1759 \nL 2194 1759 \nz\nM 3341 1997 \nL 3341 0 \nL 2766 0 \nL 2766 531 \nQ 2569 213 2275 61 \nQ 1981 -91 1556 -91 \nQ 1019 -91 701 211 \nQ 384 513 384 1019 \nQ 384 1609 779 1909 \nQ 1175 2209 1959 2209 \nL 2766 2209 \nL 2766 2266 \nQ 2766 2663 2505 2880 \nQ 2244 3097 1772 3097 \nQ 1472 3097 1187 3025 \nQ 903 2953 641 2809 \nL 641 3341 \nQ 956 3463 1253 3523 \nQ 1550 3584 1831 3584 \nQ 2591 3584 2966 3190 \nQ 3341 2797 3341 1997 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6e\" d=\"M 3513 2113 \nL 3513 0 \nL 2938 0 \nL 2938 2094 \nQ 2938 2591 2744 2837 \nQ 2550 3084 2163 3084 \nQ 1697 3084 1428 2787 \nQ 1159 2491 1159 1978 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1366 3272 1645 3428 \nQ 1925 3584 2291 3584 \nQ 2894 3584 3203 3211 \nQ 3513 2838 3513 2113 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6b\" d=\"M 581 4863 \nL 1159 4863 \nL 1159 1991 \nL 2875 3500 \nL 3609 3500 \nL 1753 1863 \nL 3688 0 \nL 2938 0 \nL 1159 1709 \nL 1159 0 \nL 581 0 \nL 581 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6c\" d=\"M 603 4863 \nL 1178 4863 \nL 1178 0 \nL 603 0 \nL 603 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-65\" d=\"M 3597 1894 \nL 3597 1613 \nL 953 1613 \nQ 991 1019 1311 708 \nQ 1631 397 2203 397 \nQ 2534 397 2845 478 \nQ 3156 559 3463 722 \nL 3463 178 \nQ 3153 47 2828 -22 \nQ 2503 -91 2169 -91 \nQ 1331 -91 842 396 \nQ 353 884 353 1716 \nQ 353 2575 817 3079 \nQ 1281 3584 2069 3584 \nQ 2775 3584 3186 3129 \nQ 3597 2675 3597 1894 \nz\nM 3022 2063 \nQ 3016 2534 2758 2815 \nQ 2500 3097 2075 3097 \nQ 1594 3097 1305 2825 \nQ 1016 2553 972 2059 \nL 3022 2063 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-20\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-62\" d=\"M 3116 1747 \nQ 3116 2381 2855 2742 \nQ 2594 3103 2138 3103 \nQ 1681 3103 1420 2742 \nQ 1159 2381 1159 1747 \nQ 1159 1113 1420 752 \nQ 1681 391 2138 391 \nQ 2594 391 2855 752 \nQ 3116 1113 3116 1747 \nz\nM 1159 2969 \nQ 1341 3281 1617 3432 \nQ 1894 3584 2278 3584 \nQ 2916 3584 3314 3078 \nQ 3713 2572 3713 1747 \nQ 3713 922 3314 415 \nQ 2916 -91 2278 -91 \nQ 1894 -91 1617 61 \nQ 1341 213 1159 525 \nL 1159 0 \nL 581 0 \nL 581 4863 \nL 1159 4863 \nL 1159 2969 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-6f\" d=\"M 1959 3097 \nQ 1497 3097 1228 2736 \nQ 959 2375 959 1747 \nQ 959 1119 1226 758 \nQ 1494 397 1959 397 \nQ 2419 397 2687 759 \nQ 2956 1122 2956 1747 \nQ 2956 2369 2687 2733 \nQ 2419 3097 1959 3097 \nz\nM 1959 3584 \nQ 2709 3584 3137 3096 \nQ 3566 2609 3566 1747 \nQ 3566 888 3137 398 \nQ 2709 -91 1959 -91 \nQ 1206 -91 779 398 \nQ 353 888 353 1747 \nQ 353 2609 779 3096 \nQ 1206 3584 1959 3584 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-74\" d=\"M 1172 4494 \nL 1172 3500 \nL 2356 3500 \nL 2356 3053 \nL 1172 3053 \nL 1172 1153 \nQ 1172 725 1289 603 \nQ 1406 481 1766 481 \nL 2356 481 \nL 2356 0 \nL 1766 0 \nQ 1100 0 847 248 \nQ 594 497 594 1153 \nL 594 3053 \nL 172 3053 \nL 172 3500 \nL 594 3500 \nL 594 4494 \nL 1172 4494 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-61\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"61.279297\"/>\n <use xlink:href=\"#DejaVuSans-6b\" x=\"124.658203\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"182.568359\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"210.351562\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"271.875\"/>\n <use xlink:href=\"#DejaVuSans-62\" x=\"303.662109\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"367.138672\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"428.320312\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"489.501953\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_2\">\n <g id=\"patch_7\">\n <path d=\"M 92.479245 93.384163 \nL 163.545283 93.384163 \nL 163.545283 22.318125 \nL 92.479245 22.318125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#pbf456264b7)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"image37218ff12e\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"92.479245\" y=\"-22.104163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_8\">\n <path d=\"M 92.479245 93.384163 \nL 92.479245 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_9\">\n <path d=\"M 163.545283 93.384163 \nL 163.545283 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_10\">\n <path d=\"M 92.479245 93.384163 \nL 163.545283 93.384163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_11\">\n <path d=\"M 92.479245 22.318125 \nL 163.545283 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_2\">\n <!-- t-shirt -->\n <g transform=\"translate(110.081639 16.318125) scale(0.12 -0.12)\">\n <defs>\n <path id=\"DejaVuSans-2d\" d=\"M 313 2009 \nL 1997 2009 \nL 1997 1497 \nL 313 1497 \nL 313 2009 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-73\" d=\"M 2834 3397 \nL 2834 2853 \nQ 2591 2978 2328 3040 \nQ 2066 3103 1784 3103 \nQ 1356 3103 1142 2972 \nQ 928 2841 928 2578 \nQ 928 2378 1081 2264 \nQ 1234 2150 1697 2047 \nL 1894 2003 \nQ 2506 1872 2764 1633 \nQ 3022 1394 3022 966 \nQ 3022 478 2636 193 \nQ 2250 -91 1575 -91 \nQ 1294 -91 989 -36 \nQ 684 19 347 128 \nL 347 722 \nQ 666 556 975 473 \nQ 1284 391 1588 391 \nQ 1994 391 2212 530 \nQ 2431 669 2431 922 \nQ 2431 1156 2273 1281 \nQ 2116 1406 1581 1522 \nL 1381 1569 \nQ 847 1681 609 1914 \nQ 372 2147 372 2553 \nQ 372 3047 722 3315 \nQ 1072 3584 1716 3584 \nQ 2034 3584 2315 3537 \nQ 2597 3491 2834 3397 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-68\" d=\"M 3513 2113 \nL 3513 0 \nL 2938 0 \nL 2938 2094 \nQ 2938 2591 2744 2837 \nQ 2550 3084 2163 3084 \nQ 1697 3084 1428 2787 \nQ 1159 2491 1159 1978 \nL 1159 0 \nL 581 0 \nL 581 4863 \nL 1159 4863 \nL 1159 2956 \nQ 1366 3272 1645 3428 \nQ 1925 3584 2291 3584 \nQ 2894 3584 3203 3211 \nQ 3513 2838 3513 2113 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-69\" d=\"M 603 3500 \nL 1178 3500 \nL 1178 0 \nL 603 0 \nL 603 3500 \nz\nM 603 4863 \nL 1178 4863 \nL 1178 4134 \nL 603 4134 \nL 603 4863 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-72\" d=\"M 2631 2963 \nQ 2534 3019 2420 3045 \nQ 2306 3072 2169 3072 \nQ 1681 3072 1420 2755 \nQ 1159 2438 1159 1844 \nL 1159 0 \nL 581 0 \nL 581 3500 \nL 1159 3500 \nL 1159 2956 \nQ 1341 3275 1631 3429 \nQ 1922 3584 2338 3584 \nQ 2397 3584 2469 3576 \nQ 2541 3569 2628 3553 \nL 2631 2963 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-2d\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"75.292969\"/>\n <use xlink:href=\"#DejaVuSans-68\" x=\"127.392578\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"190.771484\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"218.554688\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"259.667969\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_3\">\n <g id=\"patch_12\">\n <path d=\"M 177.758491 93.384163 \nL 248.824528 93.384163 \nL 248.824528 22.318125 \nL 177.758491 22.318125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#p07f1494ff4)\">\n <image xlink:href=\"data:image/png;base64,\niVBORw0KGgoAAAANSUhEUgAAAGMAAABjCAYAAACPO76VAAAFTklEQVR4nO2dv48bRRTHd9d2zvE5F/kuOYIgOqSIAghKQoWEohRcT0EoKaBBVBRUdPwTNCBFES0dQlT0SCkoKPJDFAQugYDulJMT+2zvepcG7bzvszy+S9azT7rvp5rJ293Zy9fvzdvZmdl4O75eRCGJY6wXh2u++eI5qGdbm2V53FvBJtQlT+70XXP3H4AtHwzmNyrv9ZD3+TwkS2+BHBqKYQiKYYhm8BZV7E1WV8vy/ntvgu3gjPutpKtgigrxM0qmC5p8a6Msx9MNsHUf5mV5/fvbYJv2+1FI6BmGoBiGiEOnto21Naj/+elFdzM5Hts88FxIHJtk+Cfo1BZOa2B9dMalr7r9ra/vleXp7p7nZqqBnmEIimEIimGI4Kntk3dfg7qM0yv7GOwhvqtRlFiks4XqB3SXkWTz76fzyB2ddrGR0eVXynLrJ/YZxwqKYYjgYSprYyhIUlcuVCiST9baBqFpQXI+bcn0FQ+WT/Ktp2jLuq6Rlr+JSqBnGIJiGIJiGCJ4n9HdGUF9+EKnLOvhCJnOFvpnc4RBHN1PgE2YcvW/MTzr+oyTh2/umaFnGIJiGCJ4mGqM1ZsgEYp0mJgJWxXgu2bewvx5/e5ozpHLgZ5hCIphCIphiOB9RjxOPUaszqSzS0AOs+RqzKP5ZOyOW/6t0DMsQTEMET5MpSq1Ff4fa5N6aTTvvKOQNzEWxmIelw5T0RJSax/0DENQDENQDEPUntrK4Qk9+ayYW6mOoiH6EP2mcehS2wXTeSuBnmEIimGI2pcEyPRVTzqAtFelmfB0rs/TlxHLwWLdPrzBUifuPfZfuGLoGYagGIagGIYI32dkFSWJC/oJOFT0E4Ve+ixTa31rE88I8xKgZxiCYhii9tQW0ldt8oUieewRQpYGU128UDEN8dztoGcYgmIYgmIYInifUQyG+A9yNMIzHOKbnDDzhtB3rBrzgFRXZ70HnMR2bKEYhqAYhgjfZ2Tz1wE/66S1mfM8fY9Grt2At35RFEU5nzOOLRTDEOEnJKhR05mR0iWjR22bo7D7ZfqgZxiCYhiCYhgifJ/RwUW8U7E/cKJfrPnCuQz9+jhVlzNLdBost8SYrM3fzNK7GXFF0DMMQTEMEX5XnUf/QD2eXnAV75My1r1rNxQyNOlJbFnblZsDTHtDhCYJPcMQFMMQFMMQ4WeHKHzbR8i0U28O7LuGb/RXbx4pd4Zr79U7NELPMATFMISpMJV1MLWU+9zqKbJywpt3slsUeSe5eUcAAkPPMATFMATFMET9fYZINWOdvnrW9EFdn+dJl3X/Iq+z6HNBy4aeYQiKYYjaw9QJsf94qh6A4QlcnefbC933mR9fuGuEnVo7Az3DEBTDEBTDELX3GTDXNcbfRt6YH/zb+y7Y60/DpZ1E1T1bUgiTvk5o6BmGoBiGqD1M6Q0cJZ1dl9vqzy70z7tbl1+hjKIoWruP+eupB+4xf3gW/2R4In+OJcxVQM8wBMUwBMUwRO19hvxqZOdfjPX9LXd72x//DLY3Og/L8nrjKdjujF6C+s27b5flzW9xru+4J/4Lal6qQc8wBMUwRO1hKpm42JCtYG557aNbZfnqqXtgu9reLcu9RgdsF1q/Qv3ilZ2y/HnxAdg2vnPnTrr1/jbpGYagGIagGIYI/2m4Xg/qk9Oun/jwsx/B9jhzy7hu/v0O2L5K3eyzQXoCbOdW+1A/3XKv8L689APYvui/X5bXb7HPIP9DMQwRb8fXa33ubG6dL8u/ffIy2F795q+ynP3+RyXt5deuQH3vdbeObPPGL2ArxuMoJPQMQ1AMQ1AMQ/wHXZZSPwAsKAQAAAAASUVORK5CYII=\" id=\"image551ec95d52\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"177.758491\" y=\"-22.104163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_13\">\n <path d=\"M 177.758491 93.384163 \nL 177.758491 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_14\">\n <path d=\"M 248.824528 93.384163 \nL 248.824528 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_15\">\n <path d=\"M 177.758491 93.384163 \nL 248.824528 93.384163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_16\">\n <path d=\"M 177.758491 22.318125 \nL 248.824528 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_3\">\n <!-- t-shirt -->\n <g transform=\"translate(195.360884 16.318125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-2d\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"75.292969\"/>\n <use xlink:href=\"#DejaVuSans-68\" x=\"127.392578\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"190.771484\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"218.554688\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"259.667969\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_4\">\n <g id=\"patch_17\">\n <path d=\"M 263.037736 93.384163 \nL 334.103774 93.384163 \nL 334.103774 22.318125 \nL 263.037736 22.318125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#pa4a63b3e9b)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"imagef3fe5a4602\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"263.037736\" y=\"-22.104163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_18\">\n <path d=\"M 263.037736 93.384163 \nL 263.037736 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_19\">\n <path d=\"M 334.103774 93.384163 \nL 334.103774 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_20\">\n <path d=\"M 263.037736 93.384163 \nL 334.103774 93.384163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_21\">\n <path d=\"M 263.037736 22.318125 \nL 334.103774 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_4\">\n <!-- dress -->\n <g transform=\"translate(282.487005 16.318125) scale(0.12 -0.12)\">\n <defs>\n <path id=\"DejaVuSans-64\" d=\"M 2906 2969 \nL 2906 4863 \nL 3481 4863 \nL 3481 0 \nL 2906 0 \nL 2906 525 \nQ 2725 213 2448 61 \nQ 2172 -91 1784 -91 \nQ 1150 -91 751 415 \nQ 353 922 353 1747 \nQ 353 2572 751 3078 \nQ 1150 3584 1784 3584 \nQ 2172 3584 2448 3432 \nQ 2725 3281 2906 2969 \nz\nM 947 1747 \nQ 947 1113 1208 752 \nQ 1469 391 1925 391 \nQ 2381 391 2643 752 \nQ 2906 1113 2906 1747 \nQ 2906 2381 2643 2742 \nQ 2381 3103 1925 3103 \nQ 1469 3103 1208 2742 \nQ 947 2381 947 1747 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-64\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"63.476562\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"102.339844\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"163.863281\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"215.962891\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_5\">\n <g id=\"patch_22\">\n <path d=\"M 348.316981 93.384163 \nL 419.383019 93.384163 \nL 419.383019 22.318125 \nL 348.316981 22.318125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#p3ec2359db4)\">\n <image xlink:href=\"data:image/png;base64,\niVBORw0KGgoAAAANSUhEUgAAAGMAAABjCAYAAACPO76VAAAGqElEQVR4nO2dTUwkVRCAX3czzA8zMPzDohJEkGyyibuAMbh6cd0Ysp7c6MGDFxP1YtRNPHryoNmDe/DgT2L0YKIh6MFEsyaadZdVV1yjQUBh+dmALCwLGRyYnZmmuz353qtKeiCGeVMx9Z2qqGa6k+qqel393mvrhHU6EETIP34/0DcOV0k5/tAtYGt5sSjl3flFYJt5dxDoNc05KSdHU8BW9/GP/+lay4Fd6QtgFOwMQrAzCFG19yEHS/DgfUD/euRDKS+4Y8C26VdLuT9aDWwDj7wg5UZUM64MnwN6i1OjztG/DWxdZ5NSHnr5eWBLfWq2nnBkEIKdQQjjaUpPS0IIseCqtDFe6AC2nB+Vcn/0JrAlbnqh57h0ux3ofdVrUp5zW+A5gg0pf//WO8A2PPGklL2pmdDzHRQcGYRgZxCCnUEIIzVj5dUhKc+h4eucWy/ltJ0DNjcIv7zAtkJtg7EVoGd89Tu1dh7YlnbTUo5ZG8A2/UqtlHufDT3dgcGRQQh2BiGMpKmWk8tSbrCh/2e1+yFi7QLbmlunaTCFFJPq/xLofAkLpTBb/e4mGhHHLFfKTY4DbIN9C1LeEuWHI4MQ7AxCsDMIYaRmzC+qFsR8Nzzlxey9Uu6NrwJb0lHD0ItwRCo+ef2slCdegy2Oa24M6DPFViln/TiwRSxVRJqdOWAbn+lS14ZqVjngyCAEO4MQRtJUx1dqyNg/DF8SnXcKUtZThhBC2MKX8upuHbB1OKrbi1PPppcUYdTYBaB/l1Fp8tEE7Mwmp+C1lhuODEKwMwjBziCEkZpRd3lRyl7gA1tCqxleEN6JxR3cdU/ViYwHGyK49sQsNeEtZrvANjbfLeVcG2yHNE7BY8sNRwYh2BmEMJKmdlfVhICrRZhCUtrLnnwAh5L6MBSnMNtS6U7vvAohhBvAdONb6p7LeDXA9sbAZ1JudWAKjV+YVL8hyg9HBiHYGYRgZxDC+CS20QxcO3E0cV3KG6iN4WiZ2hOwDuSDiDrOghkd1wydgh8B+pLfIOXzAbT5OThBotxwZBCCnUEI42lq5Ld+oD98/A8pr2hzqIQQwnPC75U8SjelKGpP77d2YSrsjqph95vTJ4GtXUzv+xwHAUcGIdgZhGBnEMJ4zWi6AFseznG18hkPSUt1cX3tPrL3aFbow1lbwJXWT6fUuo8P3gt/Q2gCjgxCsDMIYTxNNUz8DfTHEqozO1eEk6NKpSL9Cdzf457S01/Kgee4XFD/G/1yvOTvlBuODEKwMwjBziCE+R0Srk4Cfcu/LWU8kcALtJqBOrNFrQ7oxwkhhCewrobIKbSM7Ofc3fu5bCNwZBCCnUEIdgYhjNcMjB+EbwSnPx/gt3k6uEZg9HZIc1UW2D6/cVTTlkUl4cggBDuDEBVPU54IT1N6+sHDV33urYNaJQU0sSDnqU5xAq3PmF1WS9B6OE0x/8LOIAQ7gxAVrxluiaGtDh6+6rND8BtCrNuWOgeeJG2vm123VwqODEKwMwhR8TQVwTvghICHr2DYi+4p3OH1tYkN+EneqzGx8mJ/cGQQgp1BCHYGISpeM+rteKgN14lQGyo7+I1hVNuJDbdV7JTZ5cWl4MggBDuDEMbTVFVXJ/rLL1LCT8457ZMNDuruRrWdDnA6y6OubUHb11bfX10IIdJ1O3tftCE4MgjBziAEO4MQxmuGewiu2xvdqQ85Ek4eKKJddba0XXXwxDSs3xBpKeNddWIRuLFxJeHIIAQ7gxDG09T2HXDPWf0zDWtBGtj0J+m0A3creKZW7aww78LUM56/C+i9MbVfboO20aQQsKNbaTgyCMHOIAQ7gxAVqBnQ//pua7gdkvVUfTlVAyeYnXpKfcFy9UwR2L4ZeB/oI9k+Kfuoa9uRVF/GgLNwzcORQQh2BiGMp6lsLxyG6h1WPJHgzmr1mYQ69BLKHvtVKWcOA5v+YV0hYGraQZtSdiY2pfx7ies2AUcGIdgZhGBnEMJ4zejohJ/L2dHevOF5sI22egtXaoedBw5dB/qMC9/e6Wsysh6sPWuFWk3LhJ7DBBwZhGBnEMJ4mupJrwO9WuvMHosvAlub9jmHS/laYJv96JiUz7W+DWwRNHnhSGxJylPoA/BHUn9J+VsBh8Sm4cggBDuDEOwMQhivGQUPnvLKjvrMzmS2Hdi2n2uSsjf5J7D1aJPfXhJDwObc0wX0J774QcptkQyw/ZRVu+o4aTjBzcuY+NaxgiODEOwMQlgnrNP7W276PwGnMO/aQsiR5uHIIAQ7gxDsDEL8A2zYw4fvnHqBAAAAAElFTkSuQmCC\" id=\"imagecbd7cff3dc\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"348.316981\" y=\"-22.104163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_23\">\n <path d=\"M 348.316981 93.384163 \nL 348.316981 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_24\">\n <path d=\"M 419.383019 93.384163 \nL 419.383019 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_25\">\n <path d=\"M 348.316981 93.384163 \nL 419.383019 93.384163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_26\">\n <path d=\"M 348.316981 22.318125 \nL 419.383019 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_5\">\n <!-- t-shirt -->\n <g transform=\"translate(365.919375 16.318125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-2d\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"75.292969\"/>\n <use xlink:href=\"#DejaVuSans-68\" x=\"127.392578\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"190.771484\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"218.554688\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"259.667969\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_6\">\n <g id=\"patch_27\">\n <path d=\"M 433.596226 93.384163 \nL 504.662264 93.384163 \nL 504.662264 22.318125 \nL 433.596226 22.318125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#pa48e070148)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"image76e8360bc3\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"433.596226\" y=\"-22.104163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_28\">\n <path d=\"M 433.596226 93.384163 \nL 433.596226 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_29\">\n <path d=\"M 504.662264 93.384163 \nL 504.662264 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_30\">\n <path d=\"M 433.596226 93.384163 \nL 504.662264 93.384163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_31\">\n <path d=\"M 433.596226 22.318125 \nL 504.662264 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_6\">\n <!-- pullover -->\n <g transform=\"translate(444.802995 16.318125) scale(0.12 -0.12)\">\n <defs>\n <path id=\"DejaVuSans-70\" d=\"M 1159 525 \nL 1159 -1331 \nL 581 -1331 \nL 581 3500 \nL 1159 3500 \nL 1159 2969 \nQ 1341 3281 1617 3432 \nQ 1894 3584 2278 3584 \nQ 2916 3584 3314 3078 \nQ 3713 2572 3713 1747 \nQ 3713 922 3314 415 \nQ 2916 -91 2278 -91 \nQ 1894 -91 1617 61 \nQ 1341 213 1159 525 \nz\nM 3116 1747 \nQ 3116 2381 2855 2742 \nQ 2594 3103 2138 3103 \nQ 1681 3103 1420 2742 \nQ 1159 2381 1159 1747 \nQ 1159 1113 1420 752 \nQ 1681 391 2138 391 \nQ 2594 391 2855 752 \nQ 3116 1113 3116 1747 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-75\" d=\"M 544 1381 \nL 544 3500 \nL 1119 3500 \nL 1119 1403 \nQ 1119 906 1312 657 \nQ 1506 409 1894 409 \nQ 2359 409 2629 706 \nQ 2900 1003 2900 1516 \nL 2900 3500 \nL 3475 3500 \nL 3475 0 \nL 2900 0 \nL 2900 538 \nQ 2691 219 2414 64 \nQ 2138 -91 1772 -91 \nQ 1169 -91 856 284 \nQ 544 659 544 1381 \nz\nM 1991 3584 \nL 1991 3584 \nz\n\" transform=\"scale(0.015625)\"/>\n <path id=\"DejaVuSans-76\" d=\"M 191 3500 \nL 800 3500 \nL 1894 563 \nL 2988 3500 \nL 3597 3500 \nL 2284 0 \nL 1503 0 \nL 191 3500 \nz\n\" transform=\"scale(0.015625)\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-70\"/>\n <use xlink:href=\"#DejaVuSans-75\" x=\"63.476562\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"126.855469\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"154.638672\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"182.421875\"/>\n <use xlink:href=\"#DejaVuSans-76\" x=\"243.603516\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"302.783203\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"364.306641\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_7\">\n <g id=\"patch_32\">\n <path d=\"M 518.875472 93.384163 \nL 589.941509 93.384163 \nL 589.941509 22.318125 \nL 518.875472 22.318125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#p3599443f63)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"imagedaee3389f1\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"518.875472\" y=\"-22.104163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_33\">\n <path d=\"M 518.875472 93.384163 \nL 518.875472 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_34\">\n <path d=\"M 589.941509 93.384163 \nL 589.941509 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_35\">\n <path d=\"M 518.875472 93.384163 \nL 589.941509 93.384163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_36\">\n <path d=\"M 518.875472 22.318125 \nL 589.941509 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_7\">\n <!-- sneaker -->\n <g transform=\"translate(530.696303 16.318125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-73\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"52.099609\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"115.478516\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"177.001953\"/>\n <use xlink:href=\"#DejaVuSans-6b\" x=\"238.28125\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"292.566406\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"354.089844\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_8\">\n <g id=\"patch_37\">\n <path d=\"M 604.154717 93.384163 \nL 675.220755 93.384163 \nL 675.220755 22.318125 \nL 604.154717 22.318125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#p3c41962ef5)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"imagec8e86e4394\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"604.154717\" y=\"-22.104163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_38\">\n <path d=\"M 604.154717 93.384163 \nL 604.154717 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_39\">\n <path d=\"M 675.220755 93.384163 \nL 675.220755 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_40\">\n <path d=\"M 604.154717 93.384163 \nL 675.220755 93.384163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_41\">\n <path d=\"M 604.154717 22.318125 \nL 675.220755 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_8\">\n <!-- pullover -->\n <g transform=\"translate(615.361486 16.318125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-70\"/>\n <use xlink:href=\"#DejaVuSans-75\" x=\"63.476562\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"126.855469\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"154.638672\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"182.421875\"/>\n <use xlink:href=\"#DejaVuSans-76\" x=\"243.603516\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"302.783203\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"364.306641\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_9\">\n <g id=\"patch_42\">\n <path d=\"M 689.433962 93.384163 \nL 760.5 93.384163 \nL 760.5 22.318125 \nL 689.433962 22.318125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#p38af20fe07)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"image56788c93e1\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"689.433962\" y=\"-22.104163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_43\">\n <path d=\"M 689.433962 93.384163 \nL 689.433962 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_44\">\n <path d=\"M 760.5 93.384163 \nL 760.5 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_45\">\n <path d=\"M 689.433962 93.384163 \nL 760.5 93.384163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_46\">\n <path d=\"M 689.433962 22.318125 \nL 760.5 22.318125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_9\">\n <!-- sandal -->\n <g transform=\"translate(705.209169 16.318125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-73\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"52.099609\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"113.378906\"/>\n <use xlink:href=\"#DejaVuSans-64\" x=\"176.757812\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"240.234375\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"301.513672\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_10\">\n <g id=\"patch_47\">\n <path d=\"M 7.2 184.104163 \nL 78.266038 184.104163 \nL 78.266038 113.038125 \nL 7.2 113.038125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#p9d41a1d78b)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"image129c97e3ef\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"7.2\" y=\"-112.824163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_48\">\n <path d=\"M 7.2 184.104163 \nL 7.2 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_49\">\n <path d=\"M 78.266038 184.104163 \nL 78.266038 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_50\">\n <path d=\"M 7.2 184.104163 \nL 78.266038 184.104163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_51\">\n <path d=\"M 7.2 113.038125 \nL 78.266038 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_10\">\n <!-- sandal -->\n <g transform=\"translate(22.975206 107.038125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-73\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"52.099609\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"113.378906\"/>\n <use xlink:href=\"#DejaVuSans-64\" x=\"176.757812\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"240.234375\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"301.513672\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_11\">\n <g id=\"patch_52\">\n <path d=\"M 92.479245 184.104163 \nL 163.545283 184.104163 \nL 163.545283 113.038125 \nL 92.479245 113.038125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#p587e6e231a)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"imagea28d873467\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"92.479245\" y=\"-112.824163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_53\">\n <path d=\"M 92.479245 184.104163 \nL 92.479245 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_54\">\n <path d=\"M 163.545283 184.104163 \nL 163.545283 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_55\">\n <path d=\"M 92.479245 184.104163 \nL 163.545283 184.104163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_56\">\n <path d=\"M 92.479245 113.038125 \nL 163.545283 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_11\">\n <!-- t-shirt -->\n <g transform=\"translate(110.081639 107.038125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-2d\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"75.292969\"/>\n <use xlink:href=\"#DejaVuSans-68\" x=\"127.392578\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"190.771484\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"218.554688\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"259.667969\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_12\">\n <g id=\"patch_57\">\n <path d=\"M 177.758491 184.104163 \nL 248.824528 184.104163 \nL 248.824528 113.038125 \nL 177.758491 113.038125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#pf66aa62939)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"imageb960242cd4\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"177.758491\" y=\"-112.824163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_58\">\n <path d=\"M 177.758491 184.104163 \nL 177.758491 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_59\">\n <path d=\"M 248.824528 184.104163 \nL 248.824528 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_60\">\n <path d=\"M 177.758491 184.104163 \nL 248.824528 184.104163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_61\">\n <path d=\"M 177.758491 113.038125 \nL 248.824528 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_12\">\n <!-- ankle boot -->\n <g transform=\"translate(181.568384 107.038125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-61\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"61.279297\"/>\n <use xlink:href=\"#DejaVuSans-6b\" x=\"124.658203\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"182.568359\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"210.351562\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"271.875\"/>\n <use xlink:href=\"#DejaVuSans-62\" x=\"303.662109\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"367.138672\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"428.320312\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"489.501953\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_13\">\n <g id=\"patch_62\">\n <path d=\"M 263.037736 184.104163 \nL 334.103774 184.104163 \nL 334.103774 113.038125 \nL 263.037736 113.038125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#pcb318826bd)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"image9f66245cc7\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"263.037736\" y=\"-112.824163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_63\">\n <path d=\"M 263.037736 184.104163 \nL 263.037736 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_64\">\n <path d=\"M 334.103774 184.104163 \nL 334.103774 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_65\">\n <path d=\"M 263.037736 184.104163 \nL 334.103774 184.104163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_66\">\n <path d=\"M 263.037736 113.038125 \nL 334.103774 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_13\">\n <!-- sandal -->\n <g transform=\"translate(278.812942 107.038125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-73\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"52.099609\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"113.378906\"/>\n <use xlink:href=\"#DejaVuSans-64\" x=\"176.757812\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"240.234375\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"301.513672\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_14\">\n <g id=\"patch_67\">\n <path d=\"M 348.316981 184.104163 \nL 419.383019 184.104163 \nL 419.383019 113.038125 \nL 348.316981 113.038125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#pb55d18f9bb)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"image777aef05e0\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"348.316981\" y=\"-112.824163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_68\">\n <path d=\"M 348.316981 184.104163 \nL 348.316981 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_69\">\n <path d=\"M 419.383019 184.104163 \nL 419.383019 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_70\">\n <path d=\"M 348.316981 184.104163 \nL 419.383019 184.104163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_71\">\n <path d=\"M 348.316981 113.038125 \nL 419.383019 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_14\">\n <!-- sandal -->\n <g transform=\"translate(364.092188 107.038125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-73\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"52.099609\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"113.378906\"/>\n <use xlink:href=\"#DejaVuSans-64\" x=\"176.757812\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"240.234375\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"301.513672\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_15\">\n <g id=\"patch_72\">\n <path d=\"M 433.596226 184.104163 \nL 504.662264 184.104163 \nL 504.662264 113.038125 \nL 433.596226 113.038125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#p6648d190e6)\">\n <image xlink:href=\"data:image/png;base64,\niVBORw0KGgoAAAANSUhEUgAAAGMAAABjCAYAAACPO76VAAAEs0lEQVR4nO2cTW9UVRjH770zt9N5odCXqbRFwJiWigYTEcWXFbJgxcJI/ABuxI2JWxNdEYLxA5i4dOEHMF3JxhgFXxZqjKQ2IaZkSIzQaafjdKb35bggOc95TrkTRKh/zf+3eu48955zh1/Pc849tyU8Hb5mAgJB9G/fABEoAwjKAIIygKAMICgDCMoAgjKAoAwgKAMIygCCMoCgDCAoAwjKAIIygKAMICgDCMoAgjKAoAwgKAMIygCCMoCgDCAoAwjKAIIygKAMICgDCMoAoux/UJqalIOJfd7ZJYnTTKXCJLWxcc8LgiD0zlUY+fMQU63o63r9wv6CaMjPURTq4zC8+3lezpS8Np0+THVEpUws3zFM88LmTUn3nVfknzxurenuiu+S7DaUAURZlaUgCLJbt+XAjR8QYUWXoiCT8hPVajo1GMh1XqkJG/XiTtJUHZq+tJM7bd5J/vO/ovs7LbjfwkxOqBxHBhCUAQRlAFH2a/gf51+wcfsZXXvnHr23OWS9V1XHjVGp06dmflW5bib9j8e6/Zl43cb74w2VGw2Tu8ZBEARH4o5up9yw8cDoc3u5HNeiWOWuJ5K7ke5Vud+Spo0To5fyLhupngdfbizb+J0L51WOIwMIygCi3Hr1sPrgg7c/tvGbS2+o3NpX+20cb3oNbckCr+Kt9cKufLDUnC68bjDhPSk77Yyv6CfwpOo+OevrjNdM0pAPMm9lnToVNfdv3CEb9a6bcspd4nWYy3Flckulfp6btfH0FV2WOTKAoAwgKAOIcMf/qhM5y7TnnlSpzmOyTOtPaI/bYxKnNd1k3HXru76BZEzOrd3UtXfzhNRb09a7pvVVaWj+7IrKHaitq+MvPjkRFOGuPEveTsm2s5ot97zr6nLf/nwSb8j3GPHm1s5x2YlevNRVOY4MICgDCMoAYsebviB31vNXf1KpsatOHOniX3LeCprZpsp1H5fiu+XNNckeiTcW9fbL+NdSjNvH9HNGvyk1++m9LZVb+VM/y/Rmi58fIudxoTevt0qCUK5LR/TbvGzgvvX0nnPmnO9R0W0enZJni/ymnog4MoCgDCDC09E5PYZDx4/xXrQ/gLdiPqUn5m3cuqirZimS/tstvWsar0uZqLR1mYg39X2aM20bdzp6RznvS58jv+v+K2vSbuRVsM6ClM36Ab1+7d6St5CfvvKRyn3ZW7Dx5af2qBxHBhCUAQRlAFHeMQ+YIb9wNoxhvyg2ZK7JrslWxszren87O3nUxp2z+ucmPyjbCvnCtspV63rb+vY3svVv9ul58OBlOR797Erhffo84sTpqeMqd+bD7218qKzv5a3rz9q4GSyrHEcGEJQBxM5d24feo/827/66j44t2nj1fb0b0F/VS8aXTv5i428/1zvRh96799J0P9x490V1PP2DrJErS9+pHEcGEJQBBGUAsftzxm7gzUvdc8/beGxZ/zJc/uO1wusexvbPMDgygKAMIP6fZeo/CkcGEJQBBGUAQRlAUAYQlAEEZQBBGUBQBhCUAQRlAEEZQFAGEJQBBGUAQRlAUAYQlAEEZQBBGUBQBhCUAQRlAEEZQFAGEJQBBGUAQRlAUAYQlAEEZQDxF4s3GsdfThmkAAAAAElFTkSuQmCC\" id=\"image285957b3b1\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"433.596226\" y=\"-112.824163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_73\">\n <path d=\"M 433.596226 184.104163 \nL 433.596226 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_74\">\n <path d=\"M 504.662264 184.104163 \nL 504.662264 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_75\">\n <path d=\"M 433.596226 184.104163 \nL 504.662264 184.104163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_76\">\n <path d=\"M 433.596226 113.038125 \nL 504.662264 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_15\">\n <!-- sneaker -->\n <g transform=\"translate(445.417058 107.038125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-73\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"52.099609\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"115.478516\"/>\n <use xlink:href=\"#DejaVuSans-61\" x=\"177.001953\"/>\n <use xlink:href=\"#DejaVuSans-6b\" x=\"238.28125\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"292.566406\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"354.089844\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_16\">\n <g id=\"patch_77\">\n <path d=\"M 518.875472 184.104163 \nL 589.941509 184.104163 \nL 589.941509 113.038125 \nL 518.875472 113.038125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#pcf7d10da3c)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"imagef670dcb412\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"518.875472\" y=\"-112.824163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_78\">\n <path d=\"M 518.875472 184.104163 \nL 518.875472 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_79\">\n <path d=\"M 589.941509 184.104163 \nL 589.941509 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_80\">\n <path d=\"M 518.875472 184.104163 \nL 589.941509 184.104163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_81\">\n <path d=\"M 518.875472 113.038125 \nL 589.941509 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_16\">\n <!-- ankle boot -->\n <g transform=\"translate(522.685366 107.038125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-61\"/>\n <use xlink:href=\"#DejaVuSans-6e\" x=\"61.279297\"/>\n <use xlink:href=\"#DejaVuSans-6b\" x=\"124.658203\"/>\n <use xlink:href=\"#DejaVuSans-6c\" x=\"182.568359\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"210.351562\"/>\n <use xlink:href=\"#DejaVuSans-20\" x=\"271.875\"/>\n <use xlink:href=\"#DejaVuSans-62\" x=\"303.662109\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"367.138672\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"428.320312\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"489.501953\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_17\">\n <g id=\"patch_82\">\n <path d=\"M 604.154717 184.104163 \nL 675.220755 184.104163 \nL 675.220755 113.038125 \nL 604.154717 113.038125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#pbaee79d96d)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"image9127fc7605\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"604.154717\" y=\"-112.824163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_83\">\n <path d=\"M 604.154717 184.104163 \nL 604.154717 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_84\">\n <path d=\"M 675.220755 184.104163 \nL 675.220755 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_85\">\n <path d=\"M 604.154717 184.104163 \nL 675.220755 184.104163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_86\">\n <path d=\"M 604.154717 113.038125 \nL 675.220755 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_17\">\n <!-- trouser -->\n <g transform=\"translate(618.246173 107.038125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-6f\" x=\"78.072266\"/>\n <use xlink:href=\"#DejaVuSans-75\" x=\"139.253906\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"202.632812\"/>\n <use xlink:href=\"#DejaVuSans-65\" x=\"254.732422\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"316.255859\"/>\n </g>\n </g>\n </g>\n <g id=\"axes_18\">\n <g id=\"patch_87\">\n <path d=\"M 689.433962 184.104163 \nL 760.5 184.104163 \nL 760.5 113.038125 \nL 689.433962 113.038125 \nz\n\" style=\"fill: #ffffff\"/>\n </g>\n <g clip-path=\"url(#pb952ff13fe)\">\n <image xlink:href=\"data:image/png;base64,\n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\" id=\"image0448619b00\" transform=\"scale(1 -1) translate(0 -71.28)\" x=\"689.433962\" y=\"-112.824163\" width=\"71.28\" height=\"71.28\"/>\n </g>\n <g id=\"patch_88\">\n <path d=\"M 689.433962 184.104163 \nL 689.433962 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_89\">\n <path d=\"M 760.5 184.104163 \nL 760.5 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_90\">\n <path d=\"M 689.433962 184.104163 \nL 760.5 184.104163 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"patch_91\">\n <path d=\"M 689.433962 113.038125 \nL 760.5 113.038125 \n\" style=\"fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square\"/>\n </g>\n <g id=\"text_18\">\n <!-- t-shirt -->\n <g transform=\"translate(707.036356 107.038125) scale(0.12 -0.12)\">\n <use xlink:href=\"#DejaVuSans-74\"/>\n <use xlink:href=\"#DejaVuSans-2d\" x=\"39.208984\"/>\n <use xlink:href=\"#DejaVuSans-73\" x=\"75.292969\"/>\n <use xlink:href=\"#DejaVuSans-68\" x=\"127.392578\"/>\n <use xlink:href=\"#DejaVuSans-69\" x=\"190.771484\"/>\n <use xlink:href=\"#DejaVuSans-72\" x=\"218.554688\"/>\n <use xlink:href=\"#DejaVuSans-74\" x=\"259.667969\"/>\n </g>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"p27b7da0425\">\n <rect x=\"7.2\" y=\"22.318125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"pbf456264b7\">\n <rect x=\"92.479245\" y=\"22.318125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"p07f1494ff4\">\n <rect x=\"177.758491\" y=\"22.318125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"pa4a63b3e9b\">\n <rect x=\"263.037736\" y=\"22.318125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"p3ec2359db4\">\n <rect x=\"348.316981\" y=\"22.318125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"pa48e070148\">\n <rect x=\"433.596226\" y=\"22.318125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"p3599443f63\">\n <rect x=\"518.875472\" y=\"22.318125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"p3c41962ef5\">\n <rect x=\"604.154717\" y=\"22.318125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"p38af20fe07\">\n <rect x=\"689.433962\" y=\"22.318125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"p9d41a1d78b\">\n <rect x=\"7.2\" y=\"113.038125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"p587e6e231a\">\n <rect x=\"92.479245\" y=\"113.038125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"pf66aa62939\">\n <rect x=\"177.758491\" y=\"113.038125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"pcb318826bd\">\n <rect x=\"263.037736\" y=\"113.038125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"pb55d18f9bb\">\n <rect x=\"348.316981\" y=\"113.038125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"p6648d190e6\">\n <rect x=\"433.596226\" y=\"113.038125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"pcf7d10da3c\">\n <rect x=\"518.875472\" y=\"113.038125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"pbaee79d96d\">\n <rect x=\"604.154717\" y=\"113.038125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n <clipPath id=\"pb952ff13fe\">\n <rect x=\"689.433962\" y=\"113.038125\" width=\"71.066038\" height=\"71.066038\"/>\n </clipPath>\n </defs>\n</svg>\n"
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 79
},
{
"metadata": {},
"cell_type": "raw",
"source": [
"读取小批量\n",
"为了使我们在读取训练集和测试集时更容易,我们使用内置的数据迭代器,而不是从零开始创建。 回顾一下在每次迭代中数据加载器每次都会读取一小批量数据大小为batch_size。 通过内置数据迭代器,我们可以随机打乱了所有样本,从而无偏见地读取小批量。"
],
"id": "a55d50ef614248ce"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:44.833747Z",
"start_time": "2024-05-23T13:55:44.666932Z"
}
},
"cell_type": "code",
"source": [
"batch_size = 256\n",
"train_iter = tf.data.Dataset.from_tensor_slices(\n",
" mnist_train).batch(batch_size).shuffle(len(mnist_train[0]))"
],
"id": "6e7eaf509e5620ae",
"outputs": [],
"execution_count": 80
},
{
"metadata": {},
"cell_type": "markdown",
"source": "我们看一下读取训练数据所需的时间。",
"id": "153d0ad0514e4c3"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:46.690118Z",
"start_time": "2024-05-23T13:55:45.834145Z"
}
},
"cell_type": "code",
"source": [
"timer = d2l.Timer()\n",
"for X, y in train_iter:\n",
" continue\n",
"f'{timer.stop():.2f} sec'"
],
"id": "8449183c346bd7fd",
"outputs": [
{
"data": {
"text/plain": [
"'0.85 sec'"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 81
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"整合所有组件\n",
"现在我们定义load_data_fashion_mnist函数用于获取和读取Fashion-MNIST数据集。 这个函数返回训练集和验证集的数据迭代器。 此外这个函数还接受一个可选参数resize用来将图像大小调整为另一种形状。"
],
"id": "f4548b392f4e0b10"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:48.027866Z",
"start_time": "2024-05-23T13:55:48.017949Z"
}
},
"cell_type": "code",
"source": [
"def load_data_fashion_mnist(batch_size, resize=None): #@save\n",
" \"\"\"下载Fashion-MNIST数据集然后将其加载到内存中\"\"\"\n",
" mnist_train, mnist_test = tf.keras.datasets.fashion_mnist.load_data()\n",
" # 将所有数字除以255使所有像素值介于0和1之间在最后添加一个批处理维度\n",
" # 并将标签转换为int32。\n",
" process = lambda X, y: (tf.expand_dims(X, axis=3) / 255,\n",
" tf.cast(y, dtype='int32'))\n",
" resize_fn = lambda X, y: (\n",
" tf.image.resize_with_pad(X, resize, resize) if resize else X, y)\n",
" return (\n",
" tf.data.Dataset.from_tensor_slices(process(*mnist_train)).batch(\n",
" batch_size).shuffle(len(mnist_train[0])).map(resize_fn),\n",
" tf.data.Dataset.from_tensor_slices(process(*mnist_test)).batch(\n",
" batch_size).map(resize_fn))"
],
"id": "66f0bc77212a9421",
"outputs": [],
"execution_count": 82
},
{
"metadata": {},
"cell_type": "markdown",
"source": "下面我们通过指定resize参数来测试load_data_fashion_mnist函数的图像大小调整功能。",
"id": "20cd2d13d33077d4"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:52.415863Z",
"start_time": "2024-05-23T13:55:49.893184Z"
}
},
"cell_type": "code",
"source": [
"train_iter, test_iter = load_data_fashion_mnist(256, resize=28)\n",
"for X, y in train_iter:\n",
" print(X.shape, X.dtype, y.shape, y.dtype)\n",
" break"
],
"id": "9eb474b9cd02b604",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(256, 28, 28, 1) <dtype: 'float32'> (256,) <dtype: 'int32'>\n"
]
}
],
"execution_count": 83
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"初始化模型参数\n",
"和之前线性回归的例子一样,这里的每个样本都将用固定长度的向量表示。 原始数据集中的每个样本都是28*28\n",
"的图像。 本节将展平每个图像把它们看作长度为784的向量。 在后面的章节中,我们将讨论能够利用图像空间结构的特征, 但现在我们暂时只把每个像素位置看作一个特征。\n",
"\n",
"回想一下在softmax回归中我们的输出与类别一样多。 因为我们的数据集有10个类别所以网络输出维度为10。 因此,权重将构成一个\n",
"784*10的矩阵 偏置将构成一个\n",
"1*10的行向量。 与线性回归一样我们将使用正态分布初始化我们的权重W偏置初始化为0。"
],
"id": "88be3897e31b3f86"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:54.766578Z",
"start_time": "2024-05-23T13:55:54.751775Z"
}
},
"cell_type": "code",
"source": [
"num_inputs = 784\n",
"num_outputs = 10\n",
"\n",
"W = tf.Variable(tf.random.normal(shape=(num_inputs, num_outputs),\n",
" mean=0, stddev=0.01))\n",
"b = tf.Variable(tf.zeros(num_outputs))"
],
"id": "30076248e5c261c5",
"outputs": [],
"execution_count": 84
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"定义softmax操作\n",
"在实现softmax回归模型之前我们简要回顾一下sum运算符如何沿着张量中的特定维度工作。 如 2.3.6节和 2.3.6.1节所述, 给定一个矩阵X我们可以对所有元素求和默认情况下。 也可以只求同一个轴上的元素即同一列轴0或同一行轴1。 如果X是一个形状为(2, 3)的张量,我们对列进行求和, 则结果将是一个具有形状(3,)的向量。 当调用sum运算符时我们可以指定保持在原始张量的轴数而不折叠求和的维度。 这将产生一个具有形状(1, 3)的二维张量。"
],
"id": "24404467fc764d51"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:56.277161Z",
"start_time": "2024-05-23T13:55:56.267009Z"
}
},
"cell_type": "code",
"source": [
"X = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])\n",
"tf.reduce_sum(X, 0, keepdims=True), tf.reduce_sum(X, 1, keepdims=True)"
],
"id": "8996e17eac4cd1aa",
"outputs": [
{
"data": {
"text/plain": [
"(<tf.Tensor: shape=(1, 3), dtype=float32, numpy=array([[5., 7., 9.]], dtype=float32)>,\n",
" <tf.Tensor: shape=(2, 1), dtype=float32, numpy=\n",
" array([[ 6.],\n",
" [15.]], dtype=float32)>)"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 85
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"回想一下实现softmax由三个步骤组成\n",
"\n",
"对每个项求幂使用exp\n",
"\n",
"对每一行求和(小批量中每个样本是一行),得到每个样本的规范化常数;\n",
"\n",
"将每一行除以其规范化常数确保结果的和为1。\n",
"分母或规范化常数,有时也称为配分函数(其对数称为对数-配分函数)。 该名称来自统计物理学中一个模拟粒子群分布的方程"
],
"id": "d6df09b9c449bf35"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:55:58.885965Z",
"start_time": "2024-05-23T13:55:58.880615Z"
}
},
"cell_type": "code",
"source": [
"def softmax(X):\n",
" X_exp = tf.exp(X)\n",
" partition = tf.reduce_sum(X_exp, 1, keepdims=True)\n",
" return X_exp / partition # 这里应用了广播机制"
],
"id": "2feba1ee37842658",
"outputs": [],
"execution_count": 86
},
{
"metadata": {},
"cell_type": "raw",
"source": "正如上述代码,对于任何随机输入,我们将每个元素变成一个非负数。 此外依据概率原理每行总和为1。",
"id": "eca590ff7b061202"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:56:00.848361Z",
"start_time": "2024-05-23T13:56:00.835263Z"
}
},
"cell_type": "code",
"source": [
"X = tf.random.normal((2, 5), 0, 1)\n",
"X_prob = softmax(X)\n",
"X_prob, tf.reduce_sum(X_prob, 1)"
],
"id": "1abc865b77fc69ef",
"outputs": [
{
"data": {
"text/plain": [
"(<tf.Tensor: shape=(2, 5), dtype=float32, numpy=\n",
" array([[0.08787813, 0.18106402, 0.27193552, 0.3478207 , 0.11130168],\n",
" [0.44081137, 0.18976508, 0.16773126, 0.10921898, 0.09247335]],\n",
" dtype=float32)>,\n",
" <tf.Tensor: shape=(2,), dtype=float32, numpy=array([1., 1.], dtype=float32)>)"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 87
},
{
"metadata": {},
"cell_type": "raw",
"source": "注意,虽然这在数学上看起来是正确的,但我们在代码实现中有点草率。 矩阵中的非常大或非常小的元素可能造成数值上溢或下溢,但我们没有采取措施来防止这点。",
"id": "e89ab1dd4ac2b0f0"
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"定义模型\n",
"定义softmax操作后我们可以实现softmax回归模型。 下面的代码定义了输入如何通过网络映射到输出。 注意将数据传递到模型之前我们使用reshape函数将每张原始图像展平为向量。"
],
"id": "39285267234028ba"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:56:03.856065Z",
"start_time": "2024-05-23T13:56:03.850533Z"
}
},
"cell_type": "code",
"source": [
"def net(X):\n",
" return softmax(tf.matmul(tf.reshape(X, (-1, W.shape[0])), W) + b)"
],
"id": "4297616ce7f0d9ec",
"outputs": [],
"execution_count": 88
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"接下来,我们实现 3.4节中引入的交叉熵损失函数。 这可能是深度学习中最常见的损失函数,因为目前分类问题的数量远远超过回归问题的数量。\n",
"\n",
"回顾一下,交叉熵采用真实标签的预测概率的负对数似然。 这里我们不使用Python的for循环迭代预测这往往是低效的 而是通过一个运算符选择所有元素。 下面我们创建一个数据样本y_hat其中包含2个样本在3个类别的预测概率 以及它们对应的标签y。 有了y我们知道在第一个样本中第一类是正确的预测 而在第二个样本中,第三类是正确的预测。 然后使用y作为y_hat中概率的索引 我们选择第一个样本中第一个类的概率和第二个样本中第三个类的概率。"
],
"id": "e74a7617b82fe7cd"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:56:07.408723Z",
"start_time": "2024-05-23T13:56:07.385287Z"
}
},
"cell_type": "code",
"source": [
"y_hat = tf.constant([[0.1, 0.3, 0.6], [0.3, 0.2, 0.5]])\n",
"y = tf.constant([0, 2])\n",
"tf.boolean_mask(y_hat, tf.one_hot(y, depth=y_hat.shape[-1]))"
],
"id": "b6a18397b5cb8b16",
"outputs": [
{
"data": {
"text/plain": [
"<tf.Tensor: shape=(2,), dtype=float32, numpy=array([0.1, 0.5], dtype=float32)>"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 89
},
{
"metadata": {},
"cell_type": "markdown",
"source": "现在我们只需一行代码就可以实现交叉熵损失函数。",
"id": "f0dc345648fa9239"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:56:09.228410Z",
"start_time": "2024-05-23T13:56:09.212464Z"
}
},
"cell_type": "code",
"source": [
"def cross_entropy(y_hat, y):\n",
" return -tf.math.log(tf.boolean_mask(\n",
" y_hat, tf.one_hot(y, depth=y_hat.shape[-1])))\n",
"\n",
"cross_entropy(y_hat, y)"
],
"id": "515fc3bb49eb7a6e",
"outputs": [
{
"data": {
"text/plain": [
"<tf.Tensor: shape=(2,), dtype=float32, numpy=array([2.3025851, 0.6931472], dtype=float32)>"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 90
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"分类精度\n",
"给定预测概率分布y_hat当我们必须输出硬预测hard prediction 我们通常选择预测概率最高的类。 许多应用都要求我们做出选择。如Gmail必须将电子邮件分类为“Primary主要邮件”、 “Social社交邮件”“Updates更新邮件”或“Forums论坛邮件”。 Gmail做分类时可能在内部估计概率但最终它必须在类中选择一个。\n",
"\n",
"当预测与标签分类y一致时即是正确的。 分类精度即正确预测数量与总预测数量之比。 虽然直接优化精度可能很困难(因为精度的计算不可导), 但精度通常是我们最关心的性能衡量标准,我们在训练分类器时几乎总会关注它。\n",
"\n",
"为了计算精度,我们执行以下操作。 首先如果y_hat是矩阵那么假定第二个维度存储每个类的预测分数。 我们使用argmax获得每行中最大元素的索引来获得预测类别。 然后我们将预测类别与真实y元素进行比较。 由于等式运算符“==”对数据类型很敏感, 因此我们将y_hat的数据类型转换为与y的数据类型一致。 结果是一个包含0和1的张量。 最后,我们求和会得到正确预测的数量。"
],
"id": "8591a222911a1d49"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:56:11.093755Z",
"start_time": "2024-05-23T13:56:11.086032Z"
}
},
"cell_type": "code",
"source": [
"def accuracy(y_hat, y): #@save\n",
" \"\"\"计算预测正确的数量\"\"\"\n",
" if len(y_hat.shape) > 1 and y_hat.shape[1] > 1:\n",
" y_hat = tf.argmax(y_hat, axis=1)\n",
" cmp = tf.cast(y_hat, y.dtype) == y\n",
" return float(tf.reduce_sum(tf.cast(cmp, y.dtype)))"
],
"id": "9a4d9c33b0f605e9",
"outputs": [],
"execution_count": 91
},
{
"metadata": {},
"cell_type": "markdown",
"source": "我们将继续使用之前定义的变量y_hat和y分别作为预测的概率分布和标签。 可以看到第一个样本的预测类别是2该行的最大元素为0.6索引为2这与实际标签0不一致。 第二个样本的预测类别是2该行的最大元素为0.5索引为2这与实际标签2一致。 因此这两个样本的分类精度率为0.5。",
"id": "e1b3e1a7eac06018"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:56:12.750879Z",
"start_time": "2024-05-23T13:56:12.738448Z"
}
},
"cell_type": "code",
"source": "accuracy(y_hat, y) / len(y)",
"id": "a345cbf14b5a2e2e",
"outputs": [
{
"data": {
"text/plain": [
"0.5"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 92
},
{
"metadata": {},
"cell_type": "markdown",
"source": "同样对于任意数据迭代器data_iter可访问的数据集 我们可以评估在任意模型net的精度。",
"id": "cbf4d36f92baba8"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:56:14.529734Z",
"start_time": "2024-05-23T13:56:14.524295Z"
}
},
"cell_type": "code",
"source": [
"def evaluate_accuracy(net, data_iter): #@save\n",
" \"\"\"计算在指定数据集上模型的精度\"\"\"\n",
" metric = Accumulator(2) # 正确预测数、预测总数\n",
" for X, y in data_iter:\n",
" metric.add(accuracy(net(X), y), d2l.size(y))\n",
" return metric[0] / metric[1]"
],
"id": "16498ba0b0cd9b7d",
"outputs": [],
"execution_count": 93
},
{
"metadata": {},
"cell_type": "markdown",
"source": "这里定义一个实用程序类Accumulator用于对多个变量进行累加。 在上面的evaluate_accuracy函数中 我们在Accumulator实例中创建了2个变量 分别用于存储正确预测的数量和预测的总数量。 当我们遍历数据集时,两者都将随着时间的推移而累加。",
"id": "a9cbccb99a341622"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:56:15.962946Z",
"start_time": "2024-05-23T13:56:15.955628Z"
}
},
"cell_type": "code",
"source": [
"class Accumulator: #@save\n",
" \"\"\"在n个变量上累加\"\"\"\n",
" def __init__(self, n):\n",
" self.data = [0.0] * n\n",
"\n",
" def add(self, *args):\n",
" self.data = [a + float(b) for a, b in zip(self.data, args)]\n",
"\n",
" def reset(self):\n",
" self.data = [0.0] * len(self.data)\n",
"\n",
" def __getitem__(self, idx):\n",
" return self.data[idx]"
],
"id": "3262f7c8ccf1a36a",
"outputs": [],
"execution_count": 94
},
{
"metadata": {},
"cell_type": "markdown",
"source": "由于我们使用随机权重初始化net模型 因此该模型的精度应接近于随机猜测。 例如在有10个类别情况下的精度为0.1。",
"id": "a27b1d7ccbe16630"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:56:18.214919Z",
"start_time": "2024-05-23T13:56:17.970672Z"
}
},
"cell_type": "code",
"source": "evaluate_accuracy(net, test_iter)",
"id": "1ee7f5cab9450434",
"outputs": [
{
"data": {
"text/plain": [
"0.0766"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 95
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"训练\n",
"在我们看过 3.2节中的线性回归实现, softmax回归的训练过程代码应该看起来非常眼熟。 在这里,我们重构训练过程的实现以使其可重复使用。 首先,我们定义一个函数来训练一个迭代周期。 请注意updater是更新模型参数的常用函数它接受批量大小作为参数。 它可以是d2l.sgd函数也可以是框架的内置优化函数。"
],
"id": "35eab5640406d171"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:56:20.124699Z",
"start_time": "2024-05-23T13:56:20.112917Z"
}
},
"cell_type": "code",
"source": [
"def train_epoch_ch3(net, train_iter, loss, updater): #@save\n",
" \"\"\"训练模型一个迭代周期定义见第3章\"\"\"\n",
" # 训练损失总和、训练准确度总和、样本数\n",
" metric = Accumulator(3)\n",
" for X, y in train_iter:\n",
" # 计算梯度并更新参数\n",
" with tf.GradientTape() as tape:\n",
" y_hat = net(X)\n",
" # Keras内置的损失接受的是标签预测这不同于用户在本书中的实现。\n",
" # 本书的实现接受(预测,标签),例如我们上面实现的“交叉熵”\n",
" if isinstance(loss, tf.keras.losses.Loss):\n",
" l = loss(y, y_hat)\n",
" else:\n",
" l = loss(y_hat, y)\n",
" if isinstance(updater, tf.keras.optimizers.Optimizer):\n",
" params = net.trainable_variables\n",
" grads = tape.gradient(l, params)\n",
" updater.apply_gradients(zip(grads, params))\n",
" else:\n",
" updater(X.shape[0], tape.gradient(l, updater.params))\n",
" # Keras的loss默认返回一个批量的平均损失\n",
" l_sum = l * float(tf.size(y)) if isinstance(\n",
" loss, tf.keras.losses.Loss) else tf.reduce_sum(l)\n",
" metric.add(l_sum, accuracy(y_hat, y), tf.size(y))\n",
" # 返回训练损失和训练精度\n",
" return metric[0] / metric[2], metric[1] / metric[2]"
],
"id": "fba5d39e709f5567",
"outputs": [],
"execution_count": 96
},
{
"metadata": {},
"cell_type": "markdown",
"source": "在展示训练函数的实现之前我们定义一个在动画中绘制数据的实用程序类Animator 它能够简化本书其余部分的代码。",
"id": "e971a63d39f5fc4f"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:56:21.994572Z",
"start_time": "2024-05-23T13:56:21.979102Z"
}
},
"cell_type": "code",
"source": [
"class Animator: #@save\n",
" \"\"\"在动画中绘制数据\"\"\"\n",
" def __init__(self, xlabel=None, ylabel=None, legend=None, xlim=None,\n",
" ylim=None, xscale='linear', yscale='linear',\n",
" fmts=('-', 'm--', 'g-.', 'r:'), nrows=1, ncols=1,\n",
" figsize=(3.5, 2.5)):\n",
" # 增量地绘制多条线\n",
" if legend is None:\n",
" legend = []\n",
" d2l.use_svg_display()\n",
" self.fig, self.axes = d2l.plt.subplots(nrows, ncols, figsize=figsize)\n",
" if nrows * ncols == 1:\n",
" self.axes = [self.axes, ]\n",
" # 使用lambda函数捕获参数\n",
" self.config_axes = lambda: d2l.set_axes(\n",
" self.axes[0], xlabel, ylabel, xlim, ylim, xscale, yscale, legend)\n",
" self.X, self.Y, self.fmts = None, None, fmts\n",
"\n",
" def add(self, x, y):\n",
" # 向图表中添加多个数据点\n",
" if not hasattr(y, \"__len__\"):\n",
" y = [y]\n",
" n = len(y)\n",
" if not hasattr(x, \"__len__\"):\n",
" x = [x] * n\n",
" if not self.X:\n",
" self.X = [[] for _ in range(n)]\n",
" if not self.Y:\n",
" self.Y = [[] for _ in range(n)]\n",
" for i, (a, b) in enumerate(zip(x, y)):\n",
" if a is not None and b is not None:\n",
" self.X[i].append(a)\n",
" self.Y[i].append(b)\n",
" self.axes[0].cla()\n",
" for x, y, fmt in zip(self.X, self.Y, self.fmts):\n",
" self.axes[0].plot(x, y, fmt)\n",
" self.config_axes()\n",
" display.display(self.fig)\n",
" display.clear_output(wait=True)"
],
"id": "b860c7019aa787f5",
"outputs": [],
"execution_count": 97
},
{
"metadata": {},
"cell_type": "markdown",
"source": "接下来我们实现一个训练函数, 它会在train_iter访问到的训练数据集上训练一个模型net。 该训练函数将会运行多个迭代周期由num_epochs指定。 在每个迭代周期结束时利用test_iter访问到的测试数据集对模型进行评估。 我们将利用Animator类来可视化训练进度。\n",
"id": "74368ee5f4a0c274"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:56:23.626251Z",
"start_time": "2024-05-23T13:56:23.615965Z"
}
},
"cell_type": "code",
"source": [
"def train_ch3(net, train_iter, test_iter, loss, num_epochs, updater): #@save\n",
" \"\"\"训练模型定义见第3章\"\"\"\n",
" animator = Animator(xlabel='epoch', xlim=[1, num_epochs], ylim=[0.3, 0.9],\n",
" legend=['train loss', 'train acc', 'test acc'])\n",
" for epoch in range(num_epochs):\n",
" train_metrics = train_epoch_ch3(net, train_iter, loss, updater)\n",
" test_acc = evaluate_accuracy(net, test_iter)\n",
" animator.add(epoch + 1, train_metrics + (test_acc,))\n",
" train_loss, train_acc = train_metrics\n",
" assert train_loss < 0.5, train_loss\n",
" assert train_acc <= 1 and train_acc > 0.7, train_acc\n",
" assert test_acc <= 1 and test_acc > 0.7, test_acc"
],
"id": "824036eccf6943c2",
"outputs": [],
"execution_count": 98
},
{
"metadata": {},
"cell_type": "markdown",
"source": "作为一个从零开始的实现,我们使用 3.2节中定义的 小批量随机梯度下降来优化模型的损失函数设置学习率为0.1。",
"id": "78b1baf42d9dad20"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-05-23T13:56:25.196135Z",
"start_time": "2024-05-23T13:56:25.188277Z"
}
},
"cell_type": "code",
"source": [
"class Updater(): #@save\n",
" \"\"\"用小批量随机梯度下降法更新参数\"\"\"\n",
" def __init__(self, params, lr):\n",
" self.params = params\n",
" self.lr = lr\n",
"\n",
" def __call__(self, batch_size, grads):\n",
" d2l.sgd(self.params, grads, self.lr, batch_size)\n",
"\n",
"updater = Updater([W, b], lr=0.1)"
],
"id": "c353ba4d9117d412",
"outputs": [],
"execution_count": 99
},
{
"metadata": {},
"cell_type": "markdown",
"source": "现在我们训练模型10个迭代周期。 请注意迭代周期num_epochs和学习率lr都是可调节的超参数。 通过更改它们的值,我们可以提高模型的分类精度。",
"id": "e09156cf6f1f9ad4"
},
{
"metadata": {},
"cell_type": "code",
"source": [
"num_epochs = 10\n",
"train_ch3(net, train_iter, test_iter, cross_entropy, num_epochs, updater)"
],
"id": "d62c9cdb2b662990",
"execution_count": 100,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": [
"预测\n",
"现在训练已经完成,我们的模型已经准备好对图像进行分类预测。 给定一系列图像,我们将比较它们的实际标签(文本输出的第一行)和模型预测(文本输出的第二行)。"
],
"id": "1bf141339d14be4e"
},
{
"metadata": {},
"cell_type": "code",
"outputs": [],
"execution_count": null,
"source": [
"def predict_ch3(net, test_iter, n=6): #@save\n",
" \"\"\"预测标签定义见第3章\"\"\"\n",
" for X, y in test_iter:\n",
" break\n",
" trues = d2l.get_fashion_mnist_labels(y)\n",
" preds = d2l.get_fashion_mnist_labels(tf.argmax(net(X), axis=1))\n",
" titles = [true +'\\n' + pred for true, pred in zip(trues, preds)]\n",
" d2l.show_images(\n",
" tf.reshape(X[0:n], (n, 28, 28)), 1, n, titles=titles[0:n])\n",
"\n",
"predict_ch3(net, test_iter)"
],
"id": "82e8b2104d47c1ea"
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}