From 5cf54b694b38983fe45b6af0e5b53e34abf9ec25 Mon Sep 17 00:00:00 2001 From: Annie Guo Date: Thu, 17 Aug 2023 03:53:52 -0400 Subject: [PATCH 1/4] added files --- README.md | 12 + accuracy.png | Bin 0 -> 27181 bytes loss.png | Bin 0 -> 26633 bytes main.py | 143 ++++++++++- my-notebook.ipynb | 631 ++++++++++++++++++++++++++++++++++++++++++++++ output.txt | 151 +++++++++++ 6 files changed, 925 insertions(+), 12 deletions(-) create mode 100644 accuracy.png create mode 100644 loss.png create mode 100644 my-notebook.ipynb create mode 100644 output.txt diff --git a/README.md b/README.md index fca0c994..4a549820 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,15 @@ Repo for submitting Autonomy bootcamps. For more details see [Autonomy Bootcamp on Confluence](https://uwarg-docs.atlassian.net/wiki/spaces/BOOT/pages/1544290340/Autonomy+Bootcamp). + +Checklist: +- Python script +- Graph of training loss +- Graph of validation loss +- Comments for each step +- Train the data using a CNN +- Use Tensorflow CIFAR-10 dataset +- Accuracy above 0.7 +- Terminal output in a textfile +- Run everything through python3.8 + diff --git a/accuracy.png b/accuracy.png new file mode 100644 index 0000000000000000000000000000000000000000..b1fede4d8d1a17962f205f8d58297c215567921b GIT binary patch literal 27181 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 z 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 literal 0 HcmV?d00001 diff --git a/loss.png b/loss.png new file mode 100644 index 0000000000000000000000000000000000000000..bb17fce0398c444d6592f02deb90768288b2a9e1 GIT binary patch literal 26633 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" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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5JJLNHfuXM2aNUsbNmzQwoULPa7s9HR2duq1114b989RnsrJtvO2224b/u9LLrlEra2tWrhwoXbv3q1Zs2ad6WWetjlz5mj79u3q6+vTv/3bv2n58uXauHHjGV3DWf8nuMbGRkUikQ+8AqOnp0ctLS2eVjX26urqdN5552nXrl2+lzIm3jt2H7fjKkkzZ85UY2PjuDy2d955p5599ln94he/GPGxKS0tLcrn8+rt7R1RP16P58m280QWLFggSePueMbjcc2ePVvz589XV1eX5s2bp+9973tn9Fie9QMoHo9r/vz5Wr9+/fDXyuWy1q9fr46ODo8rG1uDg4PavXu3WltbfS9lTMyYMUMtLS0jjmt/f79efvnlCX1cpXc/9ffo0aPj6tgGQaA777xT69at00svvaQZM2aM+P78+fMVi8VGHM+dO3dq79694+p4nmo7T2T79u2SNK6O54mUy2XlcrkzeyxH9SUNY+SJJ54IEolEsGbNmuCNN94IbrvttqCuri7o7u72vbRR8zd/8zfBhg0bgj179gT/+Z//GSxatChobGwMDh065Htpp21gYCB45ZVXgldeeSWQFHznO98JXnnlleDtt98OgiAIHnzwwaCuri54+umngx07dgTXXXddMGPGjCCTyXheuc2HbefAwEDwla98Jdi8eXOwZ8+e4MUXXww++clPBueee26QzWZ9L93ZHXfcEaRSqWDDhg3BwYMHh29DQ0PDNbfffnswbdq04KWXXgq2bt0adHR0BB0dHR5XbXeq7dy1a1fwwAMPBFu3bg327NkTPP3008HMmTODK6+80vPKbb7+9a8HGzduDPbs2RPs2LEj+PrXvx6EQqHgP/7jP4IgOHPHclwMoCAIgh/84AfBtGnTgng8Hlx22WXBli1bfC9pVN14441Ba2trEI/HgylTpgQ33nhjsGvXLt/L+kh+8YtfBJI+cFu+fHkQBO++FPub3/xm0NzcHCQSiWDhwoXBzp07/S76NHzYdg4NDQXXXHNNMHny5CAWiwXTp08Pbr311nH3y9OJtk9S8Nhjjw3XZDKZ4K/+6q+CSZMmBZWVlcHnP//54ODBg/4WfRpOtZ179+4NrrzyyqC+vj5IJBLB7Nmzg7/9278N+vr6/C7c6C//8i+D6dOnB/F4PJg8eXKwcOHC4eETBGfuWPJxDAAAL87654AAABMTAwgA4AUDCADgBQMIAOAFAwgA4AUDCADgBQMIAOAFAwgA4AUDCADgBQMIAOAFAwgA4AUDCADgxf8H/IlN+ZvxeyIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print(\"Numpy array representation of the first training image:\")\n", + "print(images_train[0])\n", + "print()\n", + "\n", + "print(\"Visual representation of the first training image:\")\n", + "plt.imshow(images_train[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "e7b68723", + "metadata": {}, + "outputs": [], + "source": [ + "# Quick code snippet for data exploration\n", + "\n", + "# Turn numpy array of labels into a one dimensional array.\n", + "labels_train = labels_train.reshape(-1,)\n", + "labels_test = labels_test.reshape(-1,)\n", + "\n", + "classes = [\"airplane\",\"automobile\",\"bird\",\"cat\",\"deer\",\"dog\",\"frog\",\"horse\",\"ship\",\"truck\"]\n", + "\n", + "# x is a numpy array of training images\n", + "# y is the corresponding numpy array of training labels\n", + "# index specifies which training image to plot\n", + "def plot_sample(x, y, index):\n", + " plt.imshow(x[index])\n", + " plt.xlabel(classes[y[index]])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "1775b1dc", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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BACck87oOaDU/39Sqq5u9IcxffOb31R9fb0uueQSrVu37jWfkMpms+rv7x91AQCc+077VXClUkn33HOP3vSmN+mSS37/qZTvfOc7NWvWLLW0tGjnzp368Ic/rF27dunRRx89YZ/29nZ98pOfPN1lAAAmqdMeQKtXr9ZLL72kZ599dtT377rrrpF/X3rppWpubtb111+vzs5OzZ376pdZrlu3TmvXrh35ur+/X62trae7LADAJHFaA2jNmjV64okn9Mwzz2jGjBmvWbt48WJJ0p49e044gOLxuOLx+OksAwAwiZkGUBAEeu9736uNGzdq8+bNmj179in/z44dOyRJzc3Np7VAAMC5yTSAVq9erYceekiPP/64qqur1d39yjvLk8mkysvL1dnZqYceekh//ud/rqlTp2rnzp269957dc0112jBAtu7fwEA5zbTANqwYYOkV95s+oceeOAB3X777YrFYnrqqaf0xS9+Uel0Wq2trVq5cqU++tGPjtmCAQDnBvOf4F5La2urOjo6zmhBx+VKGYVKeafa2gb355CaZtSduugPVE2pda6NV9eYek+pd+/d2flrU+/qcrccPUkqDA+aeh81ZNhJUr0hnyoSsT0fOCXpfjz/9Io3mnq/uONF59peQ06WJFXV294n98ZFi5xrG5unmXrX1VY611ZVVJh6NzS6/+k9lyuaes+fd+qnAI6be/75pt67dtlub6Ws+20iyLnlpB1XV+OepViTrDX1Lit77fv0UYJy59KIY1+y4AAAXjCAAABeMIAAAF4wgAAAXjCAAABeMIAAAF4wgAAAXjCAAABeMIAAAF4wgAAAXpz25wGNt0suvETl5Qmn2kjEvW+ypt60jrKwWxyQJMUStnleU17rXNtUe5mpdyhwjzU52nfU1Ht2JGqqj8bcIzxKIds+rCx3j4YJhdzjiSSpod49QmjmrPNMvS+/4nJTfWW5e0TR5QsvNvVurHePM8oXhk29BwfcY54SFbbjU93ofltubHA/lpJUKM0z1Tc3NzrXplKHTb3nzz3PubaUd7+/kqRC1nB8Iu6xPcVwwamOR0AAAC8YQAAALxhAAAAvGEAAAC8YQAAALxhAAAAvGEAAAC8YQAAALxhAAAAvGEAAAC8YQAAALyZsFtyCi69UVWWlU20QlAydbTO3Kua+i7LDaVPvirh7plrN1GpT72zefZ9U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CwYQAMALBhAAwAsGEADACwYQAMALBhAwxpYsWaJ77rnH9zKACY8BBADwggEETDK5XM73EoAxwQACzkA6ndZtt92mqqoqNTc361/+5V9GXZ/NZvWBD3xA06dPV2VlpRYvXqzNmzePqnn22Wd19dVXq7y8XK2trXrf+96ndDo9cv15552nT3/607rttttUU1Mz6gPRgMmMAQScgQ9+8IPq6OjQ448/rh/+8IfavHmznn/++ZHr16xZoy1btujhhx/Wzp079ba3vU3Lly/X7t27JUmdnZ1avny5Vq5cqZ07d+rb3/62nn32Wa1Zs2bUz/nnf/5nLVy4UC+88II+9rGPndVtBMYLadjAaRocHNTUqVP1n//5n3rb294mSTp69KhmzJihu+66S2vXrtWcOXO0d+9etbS0jPy/pUuX6sorr9Q//uM/6q/+6q8UiUT0r//6ryPXP/vss7r22muVTqeVSCR03nnn6bLLLtPGjRvP+jYC46nM9wKAyaqzs1O5XG7kI5klqa6uTvPnz5ckvfjiiyoWizr//PNH/b9sNqupU6dKkn7xi19o586d+uY3vzlyfRAEKpVK6urq0oUXXihJeuMb3zjemwOcdQwgYJwMDg4qEolo+/btikQio66rqqoaqfnrv/5rve9973vV/585c+bIvysrK8d3sYAHDCDgNM2dO1fRaFTPPffcyLA4duyY/vd//1fXXnutLrvsMhWLRfX29urqq68+YY/LL79cv/rVrzRv3ryzuXRgQuBFCMBpqqqq0h133KEPfvCDevrpp/XSSy/p9ttvVzj8ys3q/PPP17ve9S7ddtttevTRR9XV1aWf/exnam9v13/9139Jkj784Q/rpz/9qdasWaMdO3Zo9+7devzxx1/1IgTgXMQjIOAMfO5zn9Pg4KBuvPFGVVdX6/3vf79SqdTI9Q888IA+85nP6P3vf79+97vfqb6+XldddZX+4i/+QpK0YMECdXR06O///u919dVXKwgCzZ07V7feequvTQLOGl4FBwDwgj/BAQC8YAABALxgAAEAvGAAAQC8YAABALxgAAEAvGAAAQC8YAABALxgAAEAvGAAAQC8YAABALz4fw7cKnZr3sysAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Now we can easily plot some images\n", + "plot_sample(images_train, labels_train, 175)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "557965b7", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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EqonFzL1/t1e931fVmSLYerKup/LacNxRRQPAGBQYwABALxgAAEAvGAAAQC8YAABALxgAAEAvGAAAQC8YAABALxgAAEAvGAAAQC8YAABALwYtFlwBw63KBJxy0w6+p57lllBT49pHaOL3POpRo/Mm3pLEefKnowt3yudb3WuTR1zz5qSpMIS99wrSaoocD/M2o05WSUl7plqjYfeM/UuK3PvncnY8vHyOdtxWFlZ6VwbT7gfV5JUXORe391lW3ckkXAvThjC3SRlgrRzbTRmu0+aDtuy4NLF7mvJh23HeBBzP3+aDPmFkhSPuV+DhEOGdTvGLnIFBADwot8H0Ne//nWFQqE+t/PPP7+/vw0AYIgbkF/BfeITn9DLL7/8+28SHbS/6QMAeDIgkyEajaqqqmogWgMAhokBeQ5o586dqqmp0cSJE/X5z39e+/bt+9DadDqttra2PjcAwPDX7wNoxowZWrNmjdavX69Vq1Zpz549uvzyy9XefuJXqq1YsULJZLL3Vltb299LAgAMQv0+gObPn6/rrrtOU6dO1dy5c/XjH/9YLS0t+sEPfnDC+uXLl6u1tbX3tn///v5eEgBgEBrwVweUl5frvPPO065du0749UQioYTlbwUAAMPCgP8dUEdHh3bv3q3q6uqB/lYAgCGk3wfQl770JTU0NOidd97Rf//3f+uaa65RJBLRZz/72f7+VgCAIazffwV34MABffazn1Vzc7NGjx6tyy67TJs3b9bo0aNtC4sVKhJxm4+pdvfYmXSXLaoils0617a0uq9DkmIRx7wKST15Y8xP1j0aJBLYeseMcUapwD1ipanFPVZJkvam3Z8zLC4rNfUOh91/Puvu7jb1ThTETPUhQwxKyDUH5f90dHQ51x5rsR3jkaj7vu9K2c7NIO9+n48uKzP1DoWMj1eGGKG0MVarucX9lcE5uZ/3klRe6n4cdna675983u0Y7PcB9NRTT/V3SwDAMEQWHADACwYQAMALBhAAwAsGEADACwYQAMALBhAAwAsGEADACwYQAMALBhAAwAsGEADAiwF/O4ZTNXrESEWjEafasCFXK9dqe8fVfJd79lV7h613cVGBc23IMRfvfbG4+64NG7PggoytvsAxF0qS4nLPPJOktrR7PlVPuy0jLZ1yz9WqNGYdptO2zK6jR48613Z2dph6T5o03rm2uKjI1Lu52f2cKEsWmnq3dWSca/ccOWDqXVlZYapPpdzXkumxZcG5ZmJKUihkO8ajEfdzubjI7fFYknL5QNLJMyO5AgIAeMEAAgB4wQACAHjBAAIAeMEAAgB4wQACAHjBAAIAeMEAAgB4wQACAHjBAAIAeDFoo3gKlVfMMZZlwrnnOPetLC02rWPf7h3OtUUFthiZqGn82+I7Qob6nvTJIzP+UDadNdXno3Hn2mjUPVZJkgri7nFGkYT7OiSpctQo51pLbM+pKC52P27Ly8tNvVMp9zijaMz2kBEKuZ8TuZwt4skSUVNYbIv5sdwnktSZcj8nIjHbcVhS5L7vw3n3uBxJyna7rzuTcX9Mcd2VXAEBALxgAAEAvGAAAQC8YAABALxgAAEAvGAAAQC8YAABALxgAAEAvGAAAQC8YAABALxgAAEAvBi0WXCTa0Yr4Zg7VVhc5Ny3amytaR3hmHs2WXfrIVPvzrZmw0JsOXORiPuuzWZtOWa5uO3nlpFnVTvX5nsSpt4Hmtvceysw9e7q7HauDQJb77FjzzLV9/S45/WVlLifD5KUTnc41+7auc/UOxp1Pw47OjtNvWMR9/s8ZNz3oZDtGLecndmsLdcxGnPPyCsuMl5TZNyz41Jd7vl4rucDV0AAAC8YQAAALxhAAAAvGEAAAC8YQAAALxhAAAAvGEAAAC8YQAAALxhAAAAvGEAAAC8YQAAALwZvFtz4GhUm4k61u99tdO7bdOSYaR0FJSPcayPueV2SFPRknGvb2tpNvUNh910bGGolqeJsW57eJ/98jnNtW85tn7/v7V3vONcGOfdMLUkqLHLPVLNk70lSTU2NqT7V7Z7DtW/fO6becUO23/Tpf2rqHYsWOtd2drWaejceOuBc29Nhy5lra7etJSf38zNiPN+krHNlPGrLmausSjrXjqkqda7N9uT1u1+8e9I6roAAAF6YB9Crr76qBQsWqKamRqFQSM8880yfrwdBoHvuuUfV1dUqLCzUnDlztHPnzv5aLwBgmDAPoM7OTk2bNk0rV6484dcffPBBffvb39Zjjz2m119/XcXFxZo7d65SKfdfIQAAhj/zc0Dz58/X/PnzT/i1IAj0yCOP6Ktf/aoWLlwoSfrud7+rMWPG6JlnntENN9zwgf+TTqeVTv/+/Wja2tzf3wUAMHT163NAe/bsUWNjo+bM+f2TzslkUjNmzNCmTZtO+H9WrFihZDLZe6uttT3BDQAYmvp1ADU2Hn812pgxY/p8fsyYMb1f+2PLly9Xa2tr723//v39uSQAwCDl/WXYiURCiYTtbZgBAENfv14BVVVVSZKampr6fL6pqan3awAASP08gCZMmKCqqipt2LCh93NtbW16/fXXVVdX15/fCgAwxJl/BdfR0aFdu3b1frxnzx5t27ZNFRUVGjdunO644w794z/+o84991xNmDBBX/va11RTU6Orr766P9cNABjizANoy5Yt+vSnP9378bJlyyRJixcv1po1a/TlL39ZnZ2duuWWW9TS0qLLLrtM69evV0FBgen7hONxReJusSzRIvfeu3btMK1jXGW1e+0o99geSSqoLnauzcVsvTs73aNESpOBqfeEiy4x1Y+svcC5NtJpi0yZGLjH68RCptaqGum+74NozNQ7b1xLNuUe29RjiO2RpFA84lw7fvzZpt6JuPvzu4Fsx2HmD/5842TaW21RVu/s3XXyoj/w7l73P7bPtR419U61u699X2OzqXfzYffeVWPd46OyPTlJJ4/iMQ+gWbNmKQg+/EAJhUK6//77df/991tbAwA+RsiCAwB4wQACAHjBAAIAeMEAAgB4wQACAHjBAAIAeMEAAgB4wQACAHjBAAIAeMEAAgB44f39gD5MPsgqF7gFZo0oLXLumx1RZlpHMu5+F7V3u+d1SVI27p5hd960Gbbe2W7n2tIS2/sxjageb6pPp93vl86WY6be+bT7diZK3LP3JCnb5Z5LF0rYsg6jxe7HrCRFDFmKZ599tql32HCMFxbZ1t3V1eVc29PTY+qdLCt3ro3HbOsuTZaY6iuShc61+97aZurdknU/f6qq3fMLJelYp/v587v9TScv+j+5nFtGI1dAAAAvGEAAAC8YQAAALxhAAAAvGEAAAC8YQAAALxhAAAAvGEAAAC8YQAAALxhAAAAvBm0UTzjIKhy41ZZE3PuW155lWkckHHeufel/t5t6t6Tdaz8z/lxT7+pa97icZJl7jIgkpdOGhUs68NtfO9c2Hdxn6h0vcI8RGmGIs5Gkg4d+51wbMUbUTLjgE6b6SMx9OxNR23aGom6RV8fXYTjZJAWB40ksqb2j3dQ7n3eLe5GkaMT4UBeynRMTzznfvbgrZeqdMMQInX9Wjal3W8o95mfd/3vJudYxiYcrIACAHwwgAIAX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/e1v67HHHtPrr7+u4uJizZ07V6lU6gyv9PScbDslad68eX327ZNPPnkGV3j6GhoaVF9fr82bN+ull15SNpvVVVddpc7Ozt6aO++8U88995yefvppNTQ06ODBg7r22ms9rtrOZTslacmSJX3254MPPuhpxadm7NixeuCBB7R161Zt2bJFV1xxhRYuXKhf/epXks7gvgyGgEsuuSSor6/v/TiXywU1NTXBihUrPK6qf917773BtGnTfC9jwEgK1q1b1/txPp8Pqqqqgoceeqj3cy0tLUEikQiefPJJDyvsH3+8nUEQBIsXLw4WLlzoZT0D5fDhw4GkoKGhIQiC4/suFosFTz/9dG/N22+/HUgKNm3a5GuZp+2PtzMIguDP//zPgy9+8Yv+FjVARowYEfz7v//7Gd2Xg/4KKJPJaOvWrZozZ07v58LhsObMmaNNmzZ5XFn/27lzp2pqajRx4kR9/vOf1759+3wvacDs2bNHjY2NffZrMpnUjBkzht1+laSNGzeqsrJSkydP1q233qrm5mbfSzotra2tkqSKigpJ0tatW5XNZvvsz/PPP1/jxo0b0vvzj7fzfd/73vc0atQoTZkyRcuXL1dXV5eP5fWLXC6np556Sp2dnaqrqzuj+3LQhZH+sSNHjiiXy2nMmDF9Pj9mzBj95je/8bSq/jdjxgytWbNGkydP1qFDh3Tffffp8ssv11tvvaXS0lLfy+t3jY2NknTC/fr+14aLefPm6dprr9WECRO0e/du/d3f/Z3mz5+vTZs2KRJxfz+jwSKfz+uOO+7QpZdeqilTpkg6vj/j8bjKy8v71A7l/Xmi7ZSkz33ucxo/frxqamq0fft2feUrX9GOHTv0ox/9yONq7X75y1+qrq5OqVRKJSUlWrdunS688EJt27btjO3LQT+APi7mz5/f+++pU6dqxowZGj9+vH7wgx/o5ptv9rgynK4bbrih998XXXSRpk6dqkmTJmnjxo2aPXu2x5Wdmvr6er311ltD/jnKk/mw7bzlllt6/33RRRepurpas2fP1u7duzVp0qQzvcxTNnnyZG3btk2tra364Q9/qMWLF6uhoeGMrmHQ/wpu1KhRikQiH3gFRlNTk6qqqjytauCVl5frvPPO065du3wvZUC8v+8+bvtVkiZOnKhRo0YNyX1722236fnnn9dPf/rTPm+bUlVVpUwmo5aWlj71Q3V/fth2nsiMGTMkacjtz3g8rnPOOUfTp0/XihUrNG3aNH3rW986o/ty0A+geDyu6dOna8OGDb2fy+fz2rBhg+rq6jyubGB1dHRo9+7dqq6u9r2UATFhwgRVVVX12a9tbW16/fXXh/V+lY6/629zc/OQ2rdBEOi2227TunXr9Morr2jChAl9vj59+nTFYrE++3PHjh3at2/fkNqfJ9vOE9m2bZskDan9eSL5fF7pdPrM7st+fUnDAHnqqaeCRCIRrFmzJvj1r38d3HLLLUF5eXnQ2Njoe2n95m//9m+DjRs3Bnv27Alee+21YM6cOcGoUaOCw4cP+17aKWtvbw/efPPN4M033wwkBQ8//HDw5ptvBnv37g2CIAgeeOCBoLy8PHj22WeD7du3BwsXLgwmTJgQdHd3e165zUdtZ3t7e/ClL30p2LRpU7Bnz57g5ZdfDv70T/80OPfcc4NUKuV76c5uvfXWIJlMBhs3bgwOHTrUe+vq6uqtWbp0aTBu3LjglVdeCbZs2RLU1dUFdXV1Hldtd7Lt3LVrV3D//fcHW7ZsCfbs2RM8++yzwcSJE4OZM2d6XrnN3XffHTQ0NAR79uwJtm/fHtx9991BKBQKfvKTnwRBcOb25ZAYQEEQBN/5zneCcePGBfF4PLjkkkuCzZs3+15Sv7r++uuD6urqIB6PB2eddVZw/fXXB7t27fK9rNPy05/+NJD0gdvixYuDIDj+Uuyvfe1rwZgxY4JEIhHMnj072LFjh99Fn4KP2s6urq7gqquuCkaPHh3EYrFg/PjxwZIlS4bcD08n2j5JwerVq3truru7g7/5m78JRowYERQVFQXXXHNNcOjQIX+LPgUn2859+/YFM2fODCoqKoJEIhGcc845wV133RW0trb6XbjRX//1Xwfjx48P4vF4MHr06GD27Nm9wycIzty+5O0YAABeDPrngAAAwxMDCADgBQMIAOAFAwgA4AUDCADgBQMIAOAFAwgA4AUDCADgBQMIGECzZs3SHXfc4XsZwKDEAAIAeMEAAgB4wQAC+klnZ6duvPFGlZSUqLq6Wv/yL//S5+vHjh3TjTfeqBEjRqioqEjz58/Xzp07+9T827/9m2pra1VUVKRrrrlGDz/88AfemRIYLhhAQD+566671NDQoGeffVY/+clPtHHjRr3xxhu9X7/pppu0ZcsW/dd//Zc2bdqkIAj0mc98RtlsVpL02muvaenSpfriF7+obdu26corr9Q3vvENX5sDDDjSsIF+0NHRoZEjR+o///M/dd1110mSjh49qrFjx+qWW25RfX29zjvvPL322mv6sz/7M0lSc3Ozamtr9cQTT+i6667TDTfcoI6ODj3//PO9ff/qr/5Kzz///AfenRIYDrgCAvrB7t27lclket+eWZIqKio0efJkSdLbb7+taDTa5+sjR47U5MmT9fbbb0s6/q6Tl1xySZ++f/wxMJwwgAAAXjCAgH4wadIkxWIxvf76672fO3bsmH77299Kki644AL19PT0+Xpzc7N27NihCy+8UJI0efJk/eIXv+jT948/BoaTqO8FAMNBSUmJbr75Zt11110aOXKkKisr9fd///cKh4//jHfuuedq4cKFWrJkif71X/9VpaWluvvuu3XWWWdp4cKFkqTbb79dM2fO1MMPP6wFCxbolVde0QsvvKBQKORz04ABwxUQ0E8eeughXX755VqwYIHmzJmjyy67TNOnT+/9+urVqzV9+nT9xV/8herq6hQEgX784x8rFotJki699FI99thjevjhhzVt2jStX79ed955pwoKCnxtEjCgeBUcMIgtWbJEv/nNb/Szn/3M91KAfsev4IBB5J//+Z915ZVXqri4WC+88IKeeOIJPfroo76XBQwIroCAQeQv//IvtXHjRrW3t2vixIm6/fbbtXTpUt/LAgYEAwgA4AUvQgAAeMEAAgB4wQACAHjBAAIAeMEAAgB4wQACAHjBAAIAeMEAAgB48f8BwNa3shZKW+0AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_sample(images_test, labels_test, 12)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "a94a5e72", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_sample(images_test, labels_test, 28)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "d896bd32", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalized numpy array of the first image in training set\n", + "[[[0.23137255 0.24313725 0.24705882]\n", + " [0.16862745 0.18039216 0.17647059]\n", + " [0.19607843 0.18823529 0.16862745]\n", + " ...\n", + " [0.61960784 0.51764706 0.42352941]\n", + " [0.59607843 0.49019608 0.4 ]\n", + " [0.58039216 0.48627451 0.40392157]]\n", + "\n", + " [[0.0627451 0.07843137 0.07843137]\n", + " [0. 0. 0. ]\n", + " [0.07058824 0.03137255 0. ]\n", + " ...\n", + " [0.48235294 0.34509804 0.21568627]\n", + " [0.46666667 0.3254902 0.19607843]\n", + " [0.47843137 0.34117647 0.22352941]]\n", + "\n", + " [[0.09803922 0.09411765 0.08235294]\n", + " [0.0627451 0.02745098 0. ]\n", + " [0.19215686 0.10588235 0.03137255]\n", + " ...\n", + " [0.4627451 0.32941176 0.19607843]\n", + " [0.47058824 0.32941176 0.19607843]\n", + " [0.42745098 0.28627451 0.16470588]]\n", + "\n", + " ...\n", + "\n", + " [[0.81568627 0.66666667 0.37647059]\n", + " [0.78823529 0.6 0.13333333]\n", + " [0.77647059 0.63137255 0.10196078]\n", + " ...\n", + " [0.62745098 0.52156863 0.2745098 ]\n", + " [0.21960784 0.12156863 0.02745098]\n", + " [0.20784314 0.13333333 0.07843137]]\n", + "\n", + " [[0.70588235 0.54509804 0.37647059]\n", + " [0.67843137 0.48235294 0.16470588]\n", + " [0.72941176 0.56470588 0.11764706]\n", + " ...\n", + " [0.72156863 0.58039216 0.36862745]\n", + " [0.38039216 0.24313725 0.13333333]\n", + " [0.3254902 0.20784314 0.13333333]]\n", + "\n", + " [[0.69411765 0.56470588 0.45490196]\n", + " [0.65882353 0.50588235 0.36862745]\n", + " [0.70196078 0.55686275 0.34117647]\n", + " ...\n", + " [0.84705882 0.72156863 0.54901961]\n", + " [0.59215686 0.4627451 0.32941176]\n", + " [0.48235294 0.36078431 0.28235294]]]\n" + ] + } + ], + "source": [ + "# Normalize the data by dividing each pixel value in the images by 255\n", + "# obtaining a number ranging from 0 to 1\n", + "\n", + "# Example:\n", + "print(\"Normalized numpy array of the first image in training set\")\n", + "print(images_train[0] / 255)\n", + "\n", + "images_train = images_train / 255\n", + "images_test = images_test / 255" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d901b3f2", + "metadata": {}, + "outputs": [], + "source": [ + "# Building a Convolutional Neural Network\n", + "cnn = models.Sequential([\n", + " # CNN\n", + " layers.Conv2D(filters=32, kernel_size=(3, 3), activation='relu', input_shape=(32, 32, 3)),\n", + " layers.MaxPooling2D((2, 2)),\n", + " \n", + " layers.Conv2D(filters=64, kernel_size=(3, 3), activation='relu'),\n", + " layers.MaxPooling2D((2, 2)),\n", + " \n", + " # Dense Layer\n", + " layers.Flatten(),\n", + " layers.Dense(64, activation='relu'),\n", + " layers.Dense(10, activation='softmax')\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "eaf58953", + "metadata": {}, + "outputs": [], + "source": [ + "# Compile the model\n", + "cnn.compile(optimizer='adam',\n", + " loss='sparse_categorical_crossentropy',\n", + " metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "075a008c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/8\n", + "1563/1563 [==============================] - 11s 7ms/step - loss: 1.4798 - accuracy: 0.4666 - val_loss: 1.1862 - val_accuracy: 0.5801\n", + "Epoch 2/8\n", + "1563/1563 [==============================] - 10s 6ms/step - loss: 1.1120 - accuracy: 0.6114 - val_loss: 1.0751 - val_accuracy: 0.6328\n", + "Epoch 3/8\n", + "1563/1563 [==============================] - 10s 6ms/step - loss: 0.9803 - accuracy: 0.6614 - val_loss: 0.9805 - val_accuracy: 0.6622\n", + "Epoch 4/8\n", + "1563/1563 [==============================] - 10s 6ms/step - loss: 0.8941 - accuracy: 0.6905 - val_loss: 0.9274 - val_accuracy: 0.6862\n", + "Epoch 5/8\n", + "1563/1563 [==============================] - 10s 6ms/step - loss: 0.8276 - accuracy: 0.7125 - val_loss: 0.9045 - val_accuracy: 0.6902\n", + "Epoch 6/8\n", + "1563/1563 [==============================] - 10s 6ms/step - loss: 0.7719 - accuracy: 0.7326 - val_loss: 0.9064 - val_accuracy: 0.6914\n", + "Epoch 7/8\n", + "1563/1563 [==============================] - 10s 6ms/step - loss: 0.7241 - accuracy: 0.7488 - val_loss: 0.8675 - val_accuracy: 0.7082\n", + "Epoch 8/8\n", + "1563/1563 [==============================] - 10s 6ms/step - loss: 0.6857 - accuracy: 0.7612 - val_loss: 0.8900 - val_accuracy: 0.7066\n" + ] + } + ], + "source": [ + "# Train the model\n", + "history = cnn.fit(images_train, labels_train, validation_data=(images_test, labels_test), epochs=8)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "fa3042e8", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHHCAYAAABXx+fLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABpmklEQVR4nO3dd3hUZd7G8e/MpIckBNJD6F2qlIiigqKAioCIgChFlBVRUdbVZV0F1AXLrsvr6oq6NFeaoKAuCkJoIiC9Su8EkhAgFUiZOe8fQwZiKAkmOUnm/lzXXGTOnPKbBDI3z3mKxTAMAxERERE3YjW7ABEREZHSpgAkIiIibkcBSERERNyOApCIiIi4HQUgERERcTsKQCIiIuJ2FIBERETE7SgAiYiIiNtRABIRERG3owAkItdlsVgYM2ZMkY87fPgwFouFqVOnFntNcuNu9OcpUpEoAImUE1OnTsVisWCxWFi1alWB1w3DICYmBovFwgMPPGBChcXj+++/x2KxEBUVhcPhMLucciMvbOY9bDYb1atXp2fPnmzZsqVYrvHrr78yZswYDh8+XCznEzGTApBIOePj48OMGTMKbF+xYgXHjx/H29vbhKqKz/Tp06lZsyYnT55k6dKlZpdT7vTr14///ve/TJ48mUcffZSlS5dyyy23FEsI+vXXXxk7dqwCkFQICkAi5cx9993HnDlzyM3Nzbd9xowZtGrVioiICJMq+/0yMzP55ptvGDlyJC1btmT69Olml3RVmZmZZpdwRTfffDOPPfYYAwcO5O233+aLL74gKyuLjz/+2OzSRMoUBSCRcqZfv36cPn2axYsXu7ZlZ2czd+5cHn300Ssek5mZyR//+EdiYmLw9vamQYMG/P3vf8cwjHz7ZWVl8eKLLxIaGkpAQAAPPvggx48fv+I54+PjeeKJJwgPD8fb25ubbrqJyZMn/673Nm/ePM6fP0/v3r3p27cvX3/9NRcuXCiw34ULFxgzZgz169fHx8eHyMhIHnroIQ4cOODax+Fw8H//9380bdoUHx8fQkND6dKlCxs2bACu3T/pt31kxowZg8Vi4ddff+XRRx8lODiY9u3bA7Bt2zYGDRpE7dq18fHxISIigieeeILTp09f8Xs2ZMgQoqKi8Pb2platWgwbNozs7GwOHjyIxWLhn//8Z4HjVq9ejcViYebMmUX9lnLXXXcBcOjQoWvut3nzZrp27UpgYCCVKlXi7rvvZu3ata7Xp06dSu/evQHo2LGj61bb8uXLi1yTSFngYXYBIlI0NWvWpF27dsycOZOuXbsC8MMPP5Camkrfvn354IMP8u1vGAYPPvggy5YtY8iQIbRo0YJFixbxpz/9ifj4+HwfuE8++SRffPEFjz76KLfeeitLly7l/vvvL1BDYmIit9xyCxaLhWeffZbQ0FB++OEHhgwZQlpaGi+88MINvbfp06fTsWNHIiIi6Nu3L3/+85/57rvvXB+8AHa7nQceeIC4uDj69u3LiBEjSE9PZ/HixezYsYM6deoAMGTIEKZOnUrXrl158sknyc3N5aeffmLt2rW0bt36hurr3bs39erVY9y4ca7wuHjxYg4ePMjgwYOJiIhg586dfPrpp+zcuZO1a9disVgAOHHiBG3btiUlJYWhQ4fSsGFD4uPjmTt3LufOnaN27drcdtttTJ8+nRdffLHA9yUgIIDu3bsXuea8UFi1atWr7rNz505uv/12AgMDefnll/H09OSTTz6hQ4cOrFixgtjYWO644w6ef/55PvjgA/7yl7/QqFEjANefIuWOISLlwpQpUwzAWL9+vfHhhx8aAQEBxrlz5wzDMIzevXsbHTt2NAzDMGrUqGHcf//9ruPmz59vAMZbb72V73wPP/ywYbFYjP379xuGYRhbtmwxAOOZZ57Jt9+jjz5qAMbo0aNd24YMGWJERkYaycnJ+fbt27evERQU5Krr0KFDBmBMmTLluu8vMTHR8PDwMD777DPXtltvvdXo3r17vv0mT55sAMb7779f4BwOh8MwDMNYunSpARjPP//8Vfe5Vm2/fb+jR482AKNfv34F9s17r5ebOXOmARgrV650bRswYIBhtVqN9evXX7WmTz75xACMXbt2uV7Lzs42QkJCjIEDBxY47nJ572fs2LHGqVOnjISEBGP58uVGy5YtDcD46quvrvr+evToYXh5eRkHDhxwbTtx4oQREBBg3HHHHa5tc+bMMQBj2bJl16xFpDzQLTCRcuiRRx7h/Pnz/O9//yM9PZ3//e9/V7399f3332Oz2Xj++efzbf/jH/+IYRj88MMPrv2AAvv9tjXHMAy++uorunXrhmEYJCcnux6dO3cmNTWVTZs2Ffk9zZo1C6vVSq9evVzb+vXrxw8//MDZs2dd27766itCQkJ47rnnCpwjr7Xlq6++wmKxMHr06KvucyOefvrpAtt8fX1dX1+4cIHk5GRuueUWANf3weFwMH/+fLp163bF1qe8mh555BF8fHzy9X1atGgRycnJPPbYY4WqcfTo0YSGhhIREUGHDh04cOAA77zzDg899NAV97fb7fz444/06NGD2rVru7ZHRkby6KOPsmrVKtLS0gp1bZHyRLfARMqh0NBQOnXqxIwZMzh37hx2u52HH374ivseOXKEqKgoAgIC8m3Pu3Vx5MgR159Wq9V1CylPgwYN8j0/deoUKSkpfPrpp3z66adXvGZSUlKR39MXX3xB27ZtOX36tKv/TMuWLcnOzmbOnDkMHToUcN7SadCgAR4eV//1deDAAaKioqhSpUqR67iWWrVqFdh25swZxo4dy6xZswq879TUVMD5PUtLS6NJkybXPH/lypXp1q0bM2bM4M033wSct7+io6NdfXmuZ+jQofTu3Rur1UrlypW56aabrjky8NSpU5w7d67Azxmcf0ccDgfHjh3jpptuKtT1RcoLBSCRcurRRx/lqaeeIiEhga5du1K5cuVSuW7e3Dx5I42upFmzZkU65759+1i/fj0A9erVK/D69OnTXQGouFytJchut1/1mMtbe/I88sgjrF69mj/96U+0aNGCSpUq4XA46NKlyw3NYzRgwADmzJnD6tWradq0Kd9++y3PPPMMVmvhGuzr1atHp06dinxdEXejACRSTvXs2ZM//OEPrF27ltmzZ191vxo1arBkyRLS09PztQLt3r3b9Xrenw6Hw9XCkmfPnj35zpc3QsxutxfbB+306dPx9PTkv//9LzabLd9rq1at4oMPPuDo0aNUr16dOnXq8Msvv5CTk4Onp+cVz1enTh0WLVrEmTNnrtoKFBwcDEBKSkq+7XktYoVx9uxZ4uLiGDt2LK+//rpr+759+/LtFxoaSmBgIDt27LjuObt06UJoaCjTp08nNjaWc+fO8fjjjxe6pqIKDQ3Fz8+vwM8ZnH9HrFYrMTExwO+7fShS1qgPkEg5ValSJT7++GPGjBlDt27drrrffffdh91u58MPP8y3/Z///CcWi8U1kizvz9+OIpswYUK+5zabjV69evHVV19d8QP91KlTRX4v06dP5/bbb6dPnz48/PDD+R5/+tOfAFxDwHv16kVycnKB9wO4Rmb16tULwzAYO3bsVfcJDAwkJCSElStX5nv93//+d6Hrzgtrxm+mE/jt98xqtdKjRw++++471zD8K9UE4OHhQb9+/fjyyy+ZOnUqTZs2LXKLWlHYbDbuvfdevvnmm3wTHCYmJjJjxgzat29PYGAgAP7+/kDB0ChSHqkFSKQcu9otqMt169aNjh078uqrr3L48GGaN2/Ojz/+yDfffMMLL7zg6vPTokUL+vXrx7///W9SU1O59dZbiYuLY//+/QXO+fbbb7Ns2TJiY2N56qmnaNy4MWfOnGHTpk0sWbKEM2fOFPo9/PLLL+zfv59nn332iq9HR0dz8803M336dF555RUGDBjA559/zsiRI1m3bh233347mZmZLFmyhGeeeYbu3bvTsWNHHn/8cT744AP27dvnuh31008/0bFjR9e1nnzySd5++22efPJJWrduzcqVK9m7d2+haw8MDOSOO+7g3XffJScnh+joaH788ccrzrkzbtw4fvzxR+68806GDh1Ko0aNOHnyJHPmzGHVqlX5bmEOGDCADz74gGXLlvHOO+8Uup4b9dZbb7F48WLat2/PM888g4eHB5988glZWVm8++67rv1atGiBzWbjnXfeITU1FW9vb+666y7CwsJKvEaRYmfeADQRKYrLh8Ffy2+HwRuGYaSnpxsvvviiERUVZXh6ehr16tUz3nvvPdfw6zznz583nn/+eaNq1aqGv7+/0a1bN+PYsWMFhk0bhnPY+vDhw42YmBjD09PTiIiIMO6++27j008/de1TmGHwzz33nAHkG4L9W2PGjDEAY+vWrYZhOIeev/rqq0atWrVc13744YfznSM3N9d47733jIYNGxpeXl5GaGio0bVrV2Pjxo2ufc6dO2cMGTLECAoKMgICAoxHHnnESEpKuuow+FOnThWo7fjx40bPnj2NypUrG0FBQUbv3r2NEydOXPF7duTIEWPAgAFGaGio4e3tbdSuXdsYPny4kZWVVeC8N910k2G1Wo3jx49f9ftyubzv9XvvvXfdfa9U26ZNm4zOnTsblSpVMvz8/IyOHTsaq1evLnDsZ599ZtSuXduw2WwaEi/lmsUwftN2KyIipmvZsiVVqlQhLi7O7FJEKiT1ARIRKWM2bNjAli1bGDBggNmliFRYagESESkjduzYwcaNG/nHP/5BcnIyBw8exMfHx+yyRCoktQCJiJQRc+fOZfDgweTk5DBz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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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uV5LRESqL4WbShLi54kFC7mFxRwvLN+OxQ899BDz58/n4MGDZ302ceJEOnbsSJs2bS7pnLVq1cLX17e8SixTREQEXl5elXItERFxfQo3lcTDzUqgj30BzfTcgnI996233kqtWrWYNGlSqe05OTlMmzaNfv36ce+99xIVFYWvry+tW7fmu+++K/OcZz6W2rVrF9deey3e3t60aNGC+fPnn3XMiy++SJMmTfD19aVBgwa8+uqrFBXZH8NNmjSJN998k02bNmGxWLBYLI56z3wstXnzZm644QZ8fHwIDQ3l0UcfJScnx/H5sGHD6NevH//85z+pXbs2oaGhDB8+3HEtERGp3rRc9YUYBhTllcupQj2KycrKIyPzOBE+JbhZL5AtPXzBYrnged3d3RkyZAiTJk3i5ZdfxnLimGnTplFSUsJ9993HtGnTePHFFwkMDOTnn3/m/vvvp2HDhsTFxV3w/DabjQEDBhAeHs7q1avJzMws1T/npICAACZNmkRkZCSbN2/mkUceISAggBdeeIGBAweyZcsW5syZw4IFCwAICgo66xy5ubn07NmTLl26sHbtWtLS0nj44YcZMWJEqfC2aNEiateuzaJFi9i9ezcDBw6kbdu2PPLIIxe8HxERcW0KNxdSlAfvRJbLqfyB1pdywN8OgaffRe364IMP8v7777N48WKuv/56wP5I6o477qBevXo8//zzjn2feuop5s6dy/fff39R4WbBggXs2LGDuXPnEhlp/1688847Z/WTeeWVVxx/jomJ4fnnn2fKlCm88MIL+Pj44O/vj7u7OxEREee91uTJk8nPz+frr7/Gz89+72PHjqVv37689957hIeHA1CjRg3Gjh2Lm5sbzZo1o0+fPixcuFDhRkRE9FjKVTRr1oyuXbvy5ZdfArB7926WLl3KQw89RElJCX//+99p3bo1ISEh+Pv7M3fuXA4cOHBR596+fTvR0dGOYAPQpUuXs/abOnUq3bp1IyIiAn9/f1555ZWLvsbp14qNjXUEG4Bu3bphs9nYuXOnY1vLli1xc3NzvK9duzZpaWmXdC0REXFNarm5EA9fewtKOSmx2diRkoPNMKhf0w9/rzJ+BB6X1qH3oYce4qmnnmLcuHFMnDiRhg0bct111/Hee+/x4YcfMmbMGFq3bo2fnx8jR46ksLD8Rm6tXLmSwYMH8+abb9KzZ0+C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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Graph for accuracy\n", + "plt.plot(history.history['accuracy'])\n", + "plt.plot(history.history['val_accuracy'])\n", + "plt.title('Model Accuracy Plot')\n", + "plt.ylabel('Accuracy')\n", + "plt.xlabel('Epoch')\n", + "plt.legend(['Train', 'Validation'], loc='upper left')\n", + "plt.show()\n", + "\n", + "# Graph for loss\n", + "plt.plot(history.history['loss'])\n", + "plt.plot(history.history['val_loss'])\n", + "plt.title('Model Loss Plot')\n", + "plt.ylabel('Loss')\n", + "plt.xlabel('Epoch')\n", + "plt.legend(['Train', 'Validation'], loc='upper left')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "74430ad0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy:\n", + "313/313 [==============================] - 1s 2ms/step - loss: 0.8900 - accuracy: 0.7066\n" + ] + }, + { + "data": { + "text/plain": [ + "[0.8900312781333923, 0.70660001039505]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Evaluate the model's accuracy on test set\n", + "print(\"Accuracy:\")\n", + "cnn.evaluate(images_test,labels_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "3f124a62", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "313/313 [==============================] - 1s 2ms/step\n", + "Probability Array:\n", + "[[7.9617519e-03 9.0055393e-05 9.4486173e-04 ... 1.6625634e-04\n", + " 8.6174384e-02 5.7605947e-03]\n", + " [1.0169607e-01 1.0795504e-01 4.1591964e-04 ... 1.9064474e-07\n", + " 7.8841889e-01 1.5102198e-03]\n", + " [2.2873239e-01 1.2059878e-01 8.9207612e-04 ... 2.4159673e-04\n", + " 6.4592582e-01 3.0860878e-03]\n", + " ...\n", + " [1.0751112e-04 2.2846809e-06 4.8287667e-02 ... 7.2148964e-02\n", + " 1.4690186e-05 1.2512889e-05]\n", + " [2.3069701e-01 5.4231435e-01 2.1159079e-02 ... 3.3880232e-04\n", + " 1.0538092e-03 6.9458052e-03]\n", + " [5.2842511e-06 4.3653336e-06 1.2734244e-04 ... 9.9851340e-01\n", + " 6.2807530e-08 2.6225247e-05]]\n" + ] + } + ], + "source": [ + "# Predict labels of training images\n", + "probabilities = cnn.predict(images_test)\n", + "\n", + "# The predict() function returns an array of probabilities \n", + "# indicating the likelihood of each label for the test image at that index\n", + "print(\"Probability Array:\")\n", + "print(probabilities)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "222b8b0d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Arg Max Example:\n", + "1\n" + ] + } + ], + "source": [ + "# The argmax function returns the index of the largest number in a list\n", + "print(\"Arg Max Example:\")\n", + "print(np.argmax([2, 7, 5]))\n", + "\n", + "predictions = [np.argmax(p) for p in probabilities]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "e448a448", + "metadata": {}, + "outputs": [], + "source": [ + "# Extra: A function that determines if a model correctly predicted the label\n", + "# for a specific image\n", + "\n", + "def correct(index):\n", + " if (predictions[index] == labels_test[index]):\n", + " print(\"Correct Prediction: \", classes[predictions[index]])\n", + " else:\n", + " print(\"Incorrect Prediction: \", classes[predictions[index]])\n", + " print(\"Actual: \", classes[labels_test[index]])" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "706ab631", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Correct Prediction: dog\n" + ] + } + ], + "source": [ + "correct(12)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "d7dffdf4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Correct Prediction: cat\n" + ] + } + ], + "source": [ + "correct(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "dbdf88df", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Incorrect Prediction: automobile\n", + "Actual: ship\n" + ] + } + ], + "source": [ + "correct(150)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "1299ac32", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Correct Prediction: truck\n" + ] + } + ], + "source": [ + "correct(28)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.17" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/output.txt b/output.txt new file mode 100644 index 00000000..698e896b --- /dev/null +++ b/output.txt @@ -0,0 +1,151 @@ +Training Image Details: (50000, 32, 32, 3) +Training Label Details: (50000, 1) +Test Image Details: (10000, 32, 32, 3) +Test Label Details: (10000, 1) + +Numpy array representation of the first training image: +[[[ 59 62 63] + [ 43 46 45] + [ 50 48 43] + ... + [158 132 108] + [152 125 102] + [148 124 103]] + + [[ 16 20 20] + [ 0 0 0] + [ 18 8 0] + ... + [123 88 55] + [119 83 50] + [122 87 57]] + + [[ 25 24 21] + [ 16 7 0] + [ 49 27 8] + ... + [118 84 50] + [120 84 50] + [109 73 42]] + + ... + + [[208 170 96] + [201 153 34] + [198 161 26] + ... + [160 133 70] + [ 56 31 7] + [ 53 34 20]] + + [[180 139 96] + [173 123 42] + [186 144 30] + ... + [184 148 94] + [ 97 62 34] + [ 83 53 34]] + + [[177 144 116] + [168 129 94] + [179 142 87] + ... + [216 184 140] + [151 118 84] + [123 92 72]]] + +Normalized numpy array of the first image in training set +[[[0.23137255 0.24313725 0.24705882] + [0.16862745 0.18039216 0.17647059] + [0.19607843 0.18823529 0.16862745] + ... + [0.61960784 0.51764706 0.42352941] + [0.59607843 0.49019608 0.4 ] + [0.58039216 0.48627451 0.40392157]] + + [[0.0627451 0.07843137 0.07843137] + [0. 0. 0. ] + [0.07058824 0.03137255 0. ] + ... + [0.48235294 0.34509804 0.21568627] + [0.46666667 0.3254902 0.19607843] + [0.47843137 0.34117647 0.22352941]] + + [[0.09803922 0.09411765 0.08235294] + [0.0627451 0.02745098 0. ] + [0.19215686 0.10588235 0.03137255] + ... + [0.4627451 0.32941176 0.19607843] + [0.47058824 0.32941176 0.19607843] + [0.42745098 0.28627451 0.16470588]] + + ... + + [[0.81568627 0.66666667 0.37647059] + [0.78823529 0.6 0.13333333] + [0.77647059 0.63137255 0.10196078] + ... + [0.62745098 0.52156863 0.2745098 ] + [0.21960784 0.12156863 0.02745098] + [0.20784314 0.13333333 0.07843137]] + + [[0.70588235 0.54509804 0.37647059] + [0.67843137 0.48235294 0.16470588] + [0.72941176 0.56470588 0.11764706] + ... + [0.72156863 0.58039216 0.36862745] + [0.38039216 0.24313725 0.13333333] + [0.3254902 0.20784314 0.13333333]] + + [[0.69411765 0.56470588 0.45490196] + [0.65882353 0.50588235 0.36862745] + [0.70196078 0.55686275 0.34117647] + ... + [0.84705882 0.72156863 0.54901961] + [0.59215686 0.4627451 0.32941176] + [0.48235294 0.36078431 0.28235294]]] + +Epoch 1/8 +1563/1563 [==============================] - 11s 7ms/step - loss: 1.4798 - accuracy: 0.4666 - val_loss: 1.1862 - val_accuracy: 0.5801 +Epoch 2/8 +1563/1563 [==============================] - 10s 6ms/step - loss: 1.1120 - accuracy: 0.6114 - val_loss: 1.0751 - val_accuracy: 0.6328 +Epoch 3/8 +1563/1563 [==============================] - 10s 6ms/step - loss: 0.9803 - accuracy: 0.6614 - val_loss: 0.9805 - val_accuracy: 0.6622 +Epoch 4/8 +1563/1563 [==============================] - 10s 6ms/step - loss: 0.8941 - accuracy: 0.6905 - val_loss: 0.9274 - val_accuracy: 0.6862 +Epoch 5/8 +1563/1563 [==============================] - 10s 6ms/step - loss: 0.8276 - accuracy: 0.7125 - val_loss: 0.9045 - val_accuracy: 0.6902 +Epoch 6/8 +1563/1563 [==============================] - 10s 6ms/step - loss: 0.7719 - accuracy: 0.7326 - val_loss: 0.9064 - val_accuracy: 0.6914 +Epoch 7/8 +1563/1563 [==============================] - 10s 6ms/step - loss: 0.7241 - accuracy: 0.7488 - val_loss: 0.8675 - val_accuracy: 0.7082 +Epoch 8/8 +1563/1563 [==============================] - 10s 6ms/step - loss: 0.6857 - accuracy: 0.7612 - val_loss: 0.8900 - val_accuracy: 0.7066 + +Accuracy: +313/313 [==============================] - 1s 2ms/step - loss: 0.8900 - accuracy: 0.7066 +[0.8900312781333923, 0.70660001039505] + +Probability Array: +[[7.9617519e-03 9.0055393e-05 9.4486173e-04 ... 1.6625634e-04 + 8.6174384e-02 5.7605947e-03] + [1.0169607e-01 1.0795504e-01 4.1591964e-04 ... 1.9064474e-07 + 7.8841889e-01 1.5102198e-03] + [2.2873239e-01 1.2059878e-01 8.9207612e-04 ... 2.4159673e-04 + 6.4592582e-01 3.0860878e-03] + ... + [1.0751112e-04 2.2846809e-06 4.8287667e-02 ... 7.2148964e-02 + 1.4690186e-05 1.2512889e-05] + [2.3069701e-01 5.4231435e-01 2.1159079e-02 ... 3.3880232e-04 + 1.0538092e-03 6.9458052e-03] + [5.2842511e-06 4.3653336e-06 1.2734244e-04 ... 9.9851340e-01 + 6.2807530e-08 2.6225247e-05]] + +Arg Max Example: +1 + +Correct Prediction: dog +Correct Prediction: cat +Incorrect Prediction: automobile +Actual: ship +Correct Prediction: truck From bb14bebdca3cca040ac3b13bf0be11e3d784dafe Mon Sep 17 00:00:00 2001 From: Annie <95723162+applepie7864@users.noreply.github.com> Date: Thu, 17 Aug 2023 03:59:13 -0400 Subject: [PATCH 2/4] Update README.md --- README.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/README.md b/README.md index 4a549820..267bbdd9 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,3 @@ Repo for submitting Autonomy bootcamps. For more details see [Autonomy Bootcamp on Confluence](https://uwarg-docs.atlassian.net/wiki/spaces/BOOT/pages/1544290340/Autonomy+Bootcamp). -Checklist: -- Python script -- Graph of training loss -- Graph of validation loss -- Comments for each step -- Train the data using a CNN -- Use Tensorflow CIFAR-10 dataset -- Accuracy above 0.7 -- Terminal output in a textfile -- Run everything through python3.8 - From ecbe26792c5990c857fc31e575b98927baec82f9 Mon Sep 17 00:00:00 2001 From: Annie <95723162+applepie7864@users.noreply.github.com> Date: Tue, 5 Dec 2023 19:21:37 -0500 Subject: [PATCH 3/4] . --- autonomy.cfg | 2362 -------------------------------------------------- 1 file changed, 2362 deletions(-) delete mode 100644 autonomy.cfg diff --git a/autonomy.cfg b/autonomy.cfg deleted file mode 100644 index afd2a950..00000000 --- a/autonomy.cfg +++ /dev/null @@ -1,2362 +0,0 @@ -# Doxyfile 1.8.9.1 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "UWARG Autonomy Bootcamp" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY ="build/doxygen" - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. -# Note: If this tag is empty the current directory is searched. - -INPUT = - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank the -# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii, -# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, -# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, -# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, -# *.qsf, *.as and *.js. - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE ="README.md" - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /