{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "Pytorch-MINIST.ipynb", "provenance": [], "collapsed_sections": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "832cc63e35634fe2b362bcf65ea64dce": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_view_name": "HBoxView", "_dom_classes": [], "_model_name": "HBoxModel", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", "layout": "IPY_MODEL_d507881591934557acac929b4cc2df94", "_model_module": "@jupyter-widgets/controls", "children": [ "IPY_MODEL_eae4af4ec0fc4544bd1c38afde8c0211", "IPY_MODEL_5ef86e55ec1e4e128f02c21ccada38b5", "IPY_MODEL_070dc00367364db3a5e3d1a568390a68" ] } }, "d507881591934557acac929b4cc2df94": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "eae4af4ec0fc4544bd1c38afde8c0211": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_view_name": "HTMLView", "style": "IPY_MODEL_d7d8518da9044c72b2d9c30184a6e27e", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": "", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_23cb977d7e4741cc83f1c2b699ee19bc" } }, "5ef86e55ec1e4e128f02c21ccada38b5": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_6087a22ef8ea48ceb9bfe4d07b1df0a9", "_dom_classes": [], "description": "", "_model_name": "FloatProgressModel", "bar_style": "success", "max": 9912422, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": 9912422, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_09fe6bfaa8304721896c338071848447" } }, "070dc00367364db3a5e3d1a568390a68": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_view_name": "HTMLView", "style": "IPY_MODEL_cef0f813641e40438de941902b0f25a4", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": " 9913344/? [00:00<00:00, 24063520.01it/s]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_05af142625d34f779041b6972fe5b3ff" } }, "d7d8518da9044c72b2d9c30184a6e27e": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "DescriptionStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "_model_module": "@jupyter-widgets/controls" } }, "23cb977d7e4741cc83f1c2b699ee19bc": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "6087a22ef8ea48ceb9bfe4d07b1df0a9": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "ProgressStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "bar_color": null, "_model_module": "@jupyter-widgets/controls" } }, "09fe6bfaa8304721896c338071848447": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "cef0f813641e40438de941902b0f25a4": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "DescriptionStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "_model_module": "@jupyter-widgets/controls" } }, "05af142625d34f779041b6972fe5b3ff": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "efc7eb663d51444e83a72108ddc699e2": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_view_name": "HBoxView", "_dom_classes": [], "_model_name": "HBoxModel", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", "layout": "IPY_MODEL_38d801cd76374e48aa30d71caea223c2", "_model_module": "@jupyter-widgets/controls", "children": [ "IPY_MODEL_1c872b2a6ebe45d68e2467efeacfb2f0", "IPY_MODEL_ddb8a643d7e4430a82c2566530cb97d7", "IPY_MODEL_7aecbf026e464eb3bbf46a2a375c9e8e" ] } }, "38d801cd76374e48aa30d71caea223c2": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "1c872b2a6ebe45d68e2467efeacfb2f0": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_view_name": "HTMLView", "style": "IPY_MODEL_dff5217a88e7448395d5e98baeb0fff1", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": "", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_4da51f39b55a42f1b423001b4189e899" } }, "ddb8a643d7e4430a82c2566530cb97d7": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_f5659d069d854f61b10c4a388320b32e", "_dom_classes": [], "description": "", "_model_name": "FloatProgressModel", "bar_style": "success", "max": 28881, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": 28881, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_1d6610cdc99d422e9b3a43e583e27678" } }, "7aecbf026e464eb3bbf46a2a375c9e8e": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_view_name": "HTMLView", "style": "IPY_MODEL_7ace77557bf340598b54b56ad02bfe83", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": " 29696/? [00:00<00:00, 718192.97it/s]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_0fc12f26d9b048b082057119342c2e77" } }, "dff5217a88e7448395d5e98baeb0fff1": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "DescriptionStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "_model_module": "@jupyter-widgets/controls" } }, "4da51f39b55a42f1b423001b4189e899": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "f5659d069d854f61b10c4a388320b32e": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "ProgressStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "bar_color": null, "_model_module": "@jupyter-widgets/controls" } }, "1d6610cdc99d422e9b3a43e583e27678": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "7ace77557bf340598b54b56ad02bfe83": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "DescriptionStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "_model_module": "@jupyter-widgets/controls" } }, "0fc12f26d9b048b082057119342c2e77": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "265112584c144aec9626bfa872248d6c": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_view_name": "HBoxView", "_dom_classes": [], "_model_name": "HBoxModel", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", "layout": "IPY_MODEL_95574dea2c1f4639887148ede9ecfc52", "_model_module": "@jupyter-widgets/controls", "children": [ "IPY_MODEL_470395a732964a058bd61782d30bf876", "IPY_MODEL_947a723eb797474abb1dc6d9394f4dc0", "IPY_MODEL_6f199183ef7647e4b1083f04e2f5ea55" ] } }, "95574dea2c1f4639887148ede9ecfc52": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "470395a732964a058bd61782d30bf876": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_view_name": "HTMLView", "style": "IPY_MODEL_c1d8d83f2f2842499544361d436e09fa", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": "", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_e266b868eb034c5597069d7621c48b4d" } }, "947a723eb797474abb1dc6d9394f4dc0": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_60138993075d44d19a3b31301cdd2876", "_dom_classes": [], "description": "", "_model_name": "FloatProgressModel", "bar_style": "success", "max": 1648877, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": 1648877, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_dc10401ac4e74213a68c2aff6f57c5f4" } }, "6f199183ef7647e4b1083f04e2f5ea55": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_view_name": "HTMLView", "style": "IPY_MODEL_c46cf75f667e45dcbc224ae2b6f4bfe3", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": " 1649664/? [00:00<00:00, 7022074.18it/s]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_76a1999f50884ad5a853d97e0961f6af" } }, "c1d8d83f2f2842499544361d436e09fa": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "DescriptionStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "_model_module": "@jupyter-widgets/controls" } }, "e266b868eb034c5597069d7621c48b4d": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "60138993075d44d19a3b31301cdd2876": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "ProgressStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "bar_color": null, "_model_module": "@jupyter-widgets/controls" } }, "dc10401ac4e74213a68c2aff6f57c5f4": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "c46cf75f667e45dcbc224ae2b6f4bfe3": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "DescriptionStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "_model_module": "@jupyter-widgets/controls" } }, "76a1999f50884ad5a853d97e0961f6af": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "d761370d050240f29ba9c97c25f9ddf8": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_view_name": "HBoxView", "_dom_classes": [], "_model_name": "HBoxModel", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", "layout": "IPY_MODEL_bd5fa5d1de244d2aaae3359aaf6dd966", "_model_module": "@jupyter-widgets/controls", "children": [ "IPY_MODEL_14f9707c1aa84585a1f4135bdf8866f7", "IPY_MODEL_0e65d1ce035741e6843c828b391358be", "IPY_MODEL_195f244548e64be787f839c5f77eb151" ] } }, "bd5fa5d1de244d2aaae3359aaf6dd966": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "14f9707c1aa84585a1f4135bdf8866f7": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_view_name": "HTMLView", "style": "IPY_MODEL_1923fbb5e45544f58531e8fff6aae1c9", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": "", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_0eb775d4fe864cb0aab28e326a94b203" } }, "0e65d1ce035741e6843c828b391358be": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_view_name": "ProgressView", "style": "IPY_MODEL_3adde4512f1448d1b19daaaf5061708d", "_dom_classes": [], "description": "", "_model_name": "FloatProgressModel", "bar_style": "success", "max": 4542, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": 4542, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_8ee0e790f017412f8f18bf0f6aa14f1e" } }, "195f244548e64be787f839c5f77eb151": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_view_name": "HTMLView", "style": "IPY_MODEL_85a929174cad4a8593c9e9857a699cde", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "value": " 5120/? [00:00<00:00, 121793.29it/s]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", "layout": "IPY_MODEL_567579d422224f938819865dc021d314" } }, "1923fbb5e45544f58531e8fff6aae1c9": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "DescriptionStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "_model_module": "@jupyter-widgets/controls" } }, "0eb775d4fe864cb0aab28e326a94b203": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "3adde4512f1448d1b19daaaf5061708d": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "ProgressStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "bar_color": null, "_model_module": "@jupyter-widgets/controls" } }, "8ee0e790f017412f8f18bf0f6aa14f1e": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } }, "85a929174cad4a8593c9e9857a699cde": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "DescriptionStyleModel", "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, "_view_module_version": "1.2.0", "_model_module": "@jupyter-widgets/controls" } }, "567579d422224f938819865dc021d314": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, "right": null, "justify_content": null, "_view_module": "@jupyter-widgets/base", "overflow": null, "_model_module_version": "1.2.0", "_view_count": null, "flex_flow": null, "width": null, "min_width": null, "border": null, "align_items": null, "bottom": null, "_model_module": "@jupyter-widgets/base", "top": null, "grid_column": null, "overflow_y": null, "overflow_x": null, "grid_auto_flow": null, "grid_area": null, "grid_template_columns": null, "flex": null, "_model_name": "LayoutModel", "justify_items": null, "grid_row": null, "max_height": null, "align_content": null, "visibility": null, "align_self": null, "height": null, "min_height": null, "padding": null, "grid_auto_rows": null, "grid_gap": null, "max_width": null, "order": null, "_view_module_version": "1.2.0", "grid_template_areas": null, "object_position": null, "object_fit": null, "grid_auto_columns": null, "margin": null, "display": null, "left": null } } } }, "accelerator": "GPU" }, "cells": [ { "cell_type": "code", "metadata": { "id": "8WdaFpotsyjU" }, "source": [ "# 引入库\n", "import torch\n", "import torchvision\n", "from torch import nn, optim\n", "from torch.autograd import Variable\n", "from torch.utils.data import DataLoader\n", "from torchvision import datasets, transforms\n", "import matplotlib.pyplot as plt\n", "plt.style.use('classic')\n", "%matplotlib inline" ], "execution_count": 1, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Wit9upWLs8QJ" }, "source": [ "# 超参数\n", "epochs = 10\n", "batch_size = 64\n", "learning_rate = 1e-3" ], "execution_count": 2, "outputs": [] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 475, "referenced_widgets": [ "832cc63e35634fe2b362bcf65ea64dce", "d507881591934557acac929b4cc2df94", "eae4af4ec0fc4544bd1c38afde8c0211", "5ef86e55ec1e4e128f02c21ccada38b5", "070dc00367364db3a5e3d1a568390a68", "d7d8518da9044c72b2d9c30184a6e27e", "23cb977d7e4741cc83f1c2b699ee19bc", "6087a22ef8ea48ceb9bfe4d07b1df0a9", "09fe6bfaa8304721896c338071848447", "cef0f813641e40438de941902b0f25a4", "05af142625d34f779041b6972fe5b3ff", "efc7eb663d51444e83a72108ddc699e2", "38d801cd76374e48aa30d71caea223c2", "1c872b2a6ebe45d68e2467efeacfb2f0", "ddb8a643d7e4430a82c2566530cb97d7", "7aecbf026e464eb3bbf46a2a375c9e8e", "dff5217a88e7448395d5e98baeb0fff1", "4da51f39b55a42f1b423001b4189e899", "f5659d069d854f61b10c4a388320b32e", "1d6610cdc99d422e9b3a43e583e27678", "7ace77557bf340598b54b56ad02bfe83", "0fc12f26d9b048b082057119342c2e77", "265112584c144aec9626bfa872248d6c", "95574dea2c1f4639887148ede9ecfc52", "470395a732964a058bd61782d30bf876", "947a723eb797474abb1dc6d9394f4dc0", "6f199183ef7647e4b1083f04e2f5ea55", "c1d8d83f2f2842499544361d436e09fa", "e266b868eb034c5597069d7621c48b4d", "60138993075d44d19a3b31301cdd2876", "dc10401ac4e74213a68c2aff6f57c5f4", "c46cf75f667e45dcbc224ae2b6f4bfe3", "76a1999f50884ad5a853d97e0961f6af", "d761370d050240f29ba9c97c25f9ddf8", "bd5fa5d1de244d2aaae3359aaf6dd966", "14f9707c1aa84585a1f4135bdf8866f7", "0e65d1ce035741e6843c828b391358be", "195f244548e64be787f839c5f77eb151", "1923fbb5e45544f58531e8fff6aae1c9", "0eb775d4fe864cb0aab28e326a94b203", "3adde4512f1448d1b19daaaf5061708d", "8ee0e790f017412f8f18bf0f6aa14f1e", "85a929174cad4a8593c9e9857a699cde", "567579d422224f938819865dc021d314" ] }, "id": "o9ru1UTks_WK", "outputId": "c3bc4d88-a329-475e-9f64-e1f2b0a832d4" }, "source": [ "# 数据准备\n", "data = transforms.Compose([transforms.ToTensor(),transforms.Normalize([0.5],[0.5])])\n", "\n", "ds_train = datasets.MNIST(\"./data\", train=True, transform=data, download=True)\n", "ds_test = datasets.MNIST(\"./data\", train=False, transform=data)\n", "\n", "train_loader = DataLoader(ds_train, batch_size=batch_size, shuffle=True)\n", "test_loader = DataLoader(ds_test, batch_size=batch_size, shuffle=False)\n", "\n", "for X, y in test_loader:\n", " print(\"Shape of X [N, C, H, W]: \", X.shape)\n", " print(\"Shape of y: \", y.shape, y.dtype)\n", " break" ], "execution_count": 3, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz\n", "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to ./data/MNIST/raw/train-images-idx3-ubyte.gz\n" ] }, { "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "832cc63e35634fe2b362bcf65ea64dce", "version_minor": 0, "version_major": 2 }, "text/plain": [ " 0%| | 0/9912422 [00:00" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "am1QUtthtR_D", "outputId": "c42f77d8-914f-4f61-c4ce-a882e2f8b992" }, "source": [ "# 设置训练使用的设备类型 GPU or CPU.\n", "device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n", "print(f\"Using {device} device\")\n", "\n", "\n", "# 构建CNN模型\n", "# 建立3个卷积层网络、2个池化层、1个全连接层\n", "# 第一层网络中,包含卷积层和池化层。将1*28*28的图片卷积成32*26*26,并且池化成32*13*13\n", "# 第二层网络中,包含卷积层和池化层。将32*13*13的图片卷积成64*11*11,并且池化成64*5*5\n", "# 第三层网络中,为卷积层,将64*5*5的图片转换成64*3*3\n", "# 第四次网络为全连接网络\n", "\n", "class Alex_Net(nn.Module):\n", " def __init__(self):\n", " super(Alex_Net,self).__init__()\n", " self.flatten = nn.Flatten()\n", " self.layer1 = nn.Sequential(\n", " nn.Conv2d(1, 32, kernel_size=3),\n", " nn.ReLU(inplace=True),\n", " nn.MaxPool2d(kernel_size=2, stride=2))\n", " self.layer2 = nn.Sequential(\n", " nn.Conv2d(32, 64, kernel_size=3),\n", " nn.ReLU(inplace=True),\n", " nn.MaxPool2d(kernel_size=2, stride=2))\n", " self.layer3 = nn.Sequential(\n", " nn.Conv2d(64, 64, kernel_size=3),\n", " nn.ReLU(inplace=True))\n", " \n", " self.dense = nn.Sequential(\n", " nn.Linear(576, 64),\n", " nn.ReLU(inplace=True),\n", " nn.Linear(64, 10),\n", " nn.Softmax())\n", " \n", " def forward(self, x):\n", " x = self.layer1(x)\n", " x = self.layer2(x)\n", " x = self.layer3(x) \n", " # x = x.view(x.size(0), -1) # Flatten 展开\n", " x = self.flatten(x) # Flatten 展开\n", " x = self.dense(x)\n", " return x\n", "\n", "model = Alex_Net().to(device) # 创建模型\n", "print(model) # 输出模型结构" ], "execution_count": 6, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Using cuda device\n", "Alex_Net(\n", " (flatten): Flatten(start_dim=1, end_dim=-1)\n", " (layer1): Sequential(\n", " (0): Conv2d(1, 32, kernel_size=(3, 3), stride=(1, 1))\n", " (1): ReLU(inplace=True)\n", " (2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " )\n", " (layer2): Sequential(\n", " (0): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1))\n", " (1): ReLU(inplace=True)\n", " (2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " )\n", " (layer3): Sequential(\n", " (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1))\n", " (1): ReLU(inplace=True)\n", " )\n", " (dense): Sequential(\n", " (0): Linear(in_features=576, out_features=64, bias=True)\n", " (1): ReLU(inplace=True)\n", " (2): Linear(in_features=64, out_features=10, bias=True)\n", " (3): Softmax(dim=None)\n", " )\n", ")\n" ] } ] }, { "cell_type": "code", "metadata": { "id": "XpOMXeI61Vov" }, "source": [ "def train(dataloader, model, loss_fn, optimizer, history):\n", " size = len(dataloader.dataset)\n", " num_batches = len(dataloader)\n", " model.train()\n", " train_loss, correct = 0, 0\n", " for batch, (X, y) in enumerate(dataloader):\n", " X, y = X.to(device), y.to(device)\n", "\n", " # Compute prediction error (前向传播)\n", " pred = model(X)\n", " loss = loss_fn(pred, y)\n", "\n", " # Backpropagation (反向传播)\n", " optimizer.zero_grad()\n", " loss.backward()\n", " optimizer.step()\n", "\n", " # Calculate metrics (计算指标)\n", " train_loss += loss.item()\n", " correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n", "\n", " # 每隔100批次输出当前进度\n", " if batch % 100 == 0:\n", " loss, current = loss.item(), batch * len(X)\n", " print(f\"loss: {loss:>7f} [{current:>5d}/{size:>5d}]\")\n", "\n", " train_loss /= num_batches\n", " correct /= size\n", " history[\"train_loss\"] = history.get(\"train_loss\", []) + [train_loss]\n", " history[\"train_accuracy\"] = history.get(\"train_accuracy\", []) + [100*correct]\n", " print(f\"train_loss: {train_loss:>7f}, train_accuracy: {(100*correct):>0.3f}%,\", end=\" \")" ], "execution_count": 7, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "2rRmAr4X2eQ3" }, "source": [ "def test(dataloader, model, loss_fn, history):\n", " size = len(dataloader.dataset)\n", " num_batches = len(dataloader)\n", " model.eval()\n", " test_loss, correct = 0, 0\n", " with torch.no_grad():\n", " for X, y in dataloader:\n", " X, y = X.to(device), y.to(device)\n", " pred = model(X)\n", " test_loss += loss_fn(pred, y).item()\n", " correct += (pred.argmax(1) == y).type(torch.float).sum().item()\n", " test_loss /= num_batches\n", " correct /= size\n", " history[\"test_loss\"] = history.get(\"test_loss\", []) + [test_loss]\n", " history[\"test_accuracy\"] = history.get(\"test_accuracy\", []) + [100*correct]\n", " print(f\"test_loss: {test_loss:>8f}, test_accuracy: {(100*correct):>0.3f}% \\n\")" ], "execution_count": 8, "outputs": [] }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "7PjCogRG2rsD", "outputId": "19f11e4b-2254-43ba-b715-7ae0365f58e6" }, "source": [ "history = {}\n", "loss_fn = nn.CrossEntropyLoss()\n", "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)\n", "\n", "for t in range(epochs):\n", " print(f\"Epoch {t+1}\\n-------------------------------\")\n", " train(train_loader, model, loss_fn, optimizer, history)\n", " test(test_loader, model, loss_fn, history)\n", "print(\"Done!\")" ], "execution_count": 9, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1\n", "-------------------------------\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.7/dist-packages/torch/nn/modules/container.py:141: UserWarning: Implicit dimension choice for softmax has been deprecated. Change the call to include dim=X as an argument.\n", " input = module(input)\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "loss: 2.303711 [ 0/60000]\n", "loss: 1.641603 [ 6400/60000]\n", "loss: 1.648372 [12800/60000]\n", "loss: 1.661905 [19200/60000]\n", "loss: 1.575618 [25600/60000]\n", "loss: 1.545944 [32000/60000]\n", "loss: 1.496341 [38400/60000]\n", "loss: 1.522942 [44800/60000]\n", "loss: 1.500847 [51200/60000]\n", "loss: 1.519886 [57600/60000]\n", "train_loss: 1.586360, train_accuracy: 87.828%, test_loss: 1.486638, test_accuracy: 97.680% \n", "\n", "Epoch 2\n", "-------------------------------\n", "loss: 1.475539 [ 0/60000]\n", "loss: 1.499398 [ 6400/60000]\n", "loss: 1.477083 [12800/60000]\n", "loss: 1.496663 [19200/60000]\n", "loss: 1.491859 [25600/60000]\n", "loss: 1.469345 [32000/60000]\n", "loss: 1.463840 [38400/60000]\n", "loss: 1.476382 [44800/60000]\n", "loss: 1.467058 [51200/60000]\n", "loss: 1.462114 [57600/60000]\n", "train_loss: 1.485451, train_accuracy: 97.643%, test_loss: 1.481370, test_accuracy: 98.010% \n", "\n", "Epoch 3\n", "-------------------------------\n", "loss: 1.490652 [ 0/60000]\n", "loss: 1.479692 [ 6400/60000]\n", "loss: 1.470976 [12800/60000]\n", "loss: 1.483524 [19200/60000]\n", "loss: 1.492113 [25600/60000]\n", "loss: 1.480444 [32000/60000]\n", "loss: 1.461317 [38400/60000]\n", "loss: 1.476777 [44800/60000]\n", "loss: 1.478613 [51200/60000]\n", "loss: 1.481051 [57600/60000]\n", "train_loss: 1.478898, train_accuracy: 98.263%, test_loss: 1.475296, test_accuracy: 98.640% \n", "\n", "Epoch 4\n", "-------------------------------\n", "loss: 1.461209 [ 0/60000]\n", "loss: 1.494112 [ 6400/60000]\n", "loss: 1.500946 [12800/60000]\n", "loss: 1.476828 [19200/60000]\n", "loss: 1.476798 [25600/60000]\n", "loss: 1.498463 [32000/60000]\n", "loss: 1.461420 [38400/60000]\n", "loss: 1.461156 [44800/60000]\n", "loss: 1.463067 [51200/60000]\n", "loss: 1.515499 [57600/60000]\n", "train_loss: 1.477756, train_accuracy: 98.372%, test_loss: 1.473734, test_accuracy: 98.790% \n", "\n", "Epoch 5\n", "-------------------------------\n", "loss: 1.461238 [ 0/60000]\n", "loss: 1.464553 [ 6400/60000]\n", "loss: 1.461183 [12800/60000]\n", "loss: 1.490100 [19200/60000]\n", "loss: 1.469966 [25600/60000]\n", "loss: 1.477312 [32000/60000]\n", "loss: 1.462937 [38400/60000]\n", "loss: 1.492742 [44800/60000]\n", "loss: 1.479960 [51200/60000]\n", "loss: 1.478601 [57600/60000]\n", "train_loss: 1.474205, train_accuracy: 98.703%, test_loss: 1.476573, test_accuracy: 98.490% \n", "\n", "Epoch 6\n", "-------------------------------\n", "loss: 1.461649 [ 0/60000]\n", "loss: 1.476002 [ 6400/60000]\n", "loss: 1.475810 [12800/60000]\n", "loss: 1.461617 [19200/60000]\n", "loss: 1.483325 [25600/60000]\n", "loss: 1.492465 [32000/60000]\n", "loss: 1.476802 [38400/60000]\n", "loss: 1.461424 [44800/60000]\n", "loss: 1.461708 [51200/60000]\n", "loss: 1.463885 [57600/60000]\n", "train_loss: 1.474972, train_accuracy: 98.613%, test_loss: 1.474455, test_accuracy: 98.650% \n", "\n", "Epoch 7\n", "-------------------------------\n", "loss: 1.476776 [ 0/60000]\n", "loss: 1.497010 [ 6400/60000]\n", "loss: 1.461151 [12800/60000]\n", "loss: 1.476776 [19200/60000]\n", "loss: 1.491679 [25600/60000]\n", "loss: 1.461248 [32000/60000]\n", "loss: 1.461151 [38400/60000]\n", "loss: 1.461166 [44800/60000]\n", "loss: 1.461153 [51200/60000]\n", "loss: 1.461272 [57600/60000]\n", "train_loss: 1.474590, train_accuracy: 98.658%, test_loss: 1.474805, test_accuracy: 98.640% \n", "\n", "Epoch 8\n", "-------------------------------\n", "loss: 1.481500 [ 0/60000]\n", "loss: 1.492375 [ 6400/60000]\n", "loss: 1.461151 [12800/60000]\n", "loss: 1.461151 [19200/60000]\n", "loss: 1.461208 [25600/60000]\n", "loss: 1.461362 [32000/60000]\n", "loss: 1.492561 [38400/60000]\n", "loss: 1.478089 [44800/60000]\n", "loss: 1.549797 [51200/60000]\n", "loss: 1.476773 [57600/60000]\n", "train_loss: 1.472298, train_accuracy: 98.887%, test_loss: 1.471692, test_accuracy: 98.920% \n", "\n", "Epoch 9\n", "-------------------------------\n", "loss: 1.476776 [ 0/60000]\n", "loss: 1.461170 [ 6400/60000]\n", "loss: 1.466320 [12800/60000]\n", "loss: 1.471525 [19200/60000]\n", "loss: 1.476778 [25600/60000]\n", "loss: 1.461151 [32000/60000]\n", "loss: 1.475267 [38400/60000]\n", "loss: 1.461151 [44800/60000]\n", "loss: 1.491982 [51200/60000]\n", "loss: 1.476776 [57600/60000]\n", "train_loss: 1.472331, train_accuracy: 98.897%, test_loss: 1.474988, test_accuracy: 98.600% \n", "\n", "Epoch 10\n", "-------------------------------\n", "loss: 1.476805 [ 0/60000]\n", "loss: 1.461200 [ 6400/60000]\n", "loss: 1.464076 [12800/60000]\n", "loss: 1.476775 [19200/60000]\n", "loss: 1.461151 [25600/60000]\n", "loss: 1.461151 [32000/60000]\n", "loss: 1.492359 [38400/60000]\n", "loss: 1.461151 [44800/60000]\n", "loss: 1.462376 [51200/60000]\n", "loss: 1.483327 [57600/60000]\n", "train_loss: 1.472219, train_accuracy: 98.907%, test_loss: 1.476896, test_accuracy: 98.430% \n", "\n", "Done!\n" ] } ] }, { "cell_type": "code", "metadata": { "id": "SnpI-Aw3M6LR" }, "source": [ "def plot_metric(history, metric, loc=\"upper right\"):\n", " train_metrics = history['train_'+metric]\n", " test_metrics = history['test_'+metric]\n", " epochs = range(1, len(train_metrics) + 1)\n", "\n", " plt.plot(epochs, train_metrics, 'b--')\n", " plt.plot(epochs, test_metrics, 'r-')\n", " plt.title('Training and test '+ metric)\n", " plt.xlabel(\"Epochs\")\n", " plt.ylabel(metric)\n", " plt.grid(axis=\"y\")\n", " plt.grid(axis=\"x\")\n", " plt.legend([\"train_\"+metric, 'test_'+metric], loc=loc)\n", " plt.show()" ], "execution_count": 10, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Us0-PboGKwOM", "colab": { "base_uri": "https://localhost:8080/", "height": 298 }, "outputId": "d23675d6-8fbc-41bc-e8bd-1bccf0595414" }, "source": [ "plot_metric(history, \"loss\")" ], "execution_count": 11, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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McYYB0TdJNVulZSURB2hCcsUjIuZwM1clikYFzOlI9QL91qLiGh7+D2MMaa1iAjaxjq9263S0tKoIzRhmYJxMRO4mStRpqKiIkTEJkemoqKijL3fUZ9Wa4xpZ5YuXZr2WTgm8yTpTSjT2FZ7eGOtScoYd/hNHVHHML5k74c1SRljjAmNFYyQtJX25qhZpuBczOViJhMeKxjGGGMCsT4MY0xGtec+jGnTpjFgwABuuummtLdRUlLCwIEDue222zKYLLlM9mHYWVLGmA6jqKiIhx56iJNOOimt199///0ZTtS2WJNUSFxs27VMwbiYCdzM5WKmdNXV1UUdwXlWMIwxHcLUqVP56quvOPPMM8nJyeGOO+5ARHj44Yc54IADmDhxIgDnnXce/fr1o1evXkyYMIEFCxrGPS0pKeFnP/sZ4BXLgQMH8tvf/pY+ffpQUFDAo48+mnKuBx98kCFDhtC7d2/OOussVqxYAXgjcP/whz+kT58+9OzZkyOOOILy8nIAZs6cybBhw+jRowcDBgzgN7/5zd7+eYKJeojdDA3Tq8YYN7T0//GWW1Sh6XTLLcHXT7ZuSwoLC/X1119XVdUvv/xSAZ06darW1NTo1q1bVVX14Ycf1k2bNun27dv16quv1hEjRux+/cUXX6w33nijqqq+/fbb2qlTJ73pppt0x44d+sorr2i3bt103bp1zWaI38abb76p+fn5Om/ePN2+fbteeeWVevzxx6uq6qxZs/Soo47S9evX665du3ThwoW6YsUKVVXt16+fzp49W1VV161bp/PmzUu6v2Tvh788pc9a68MwxrSqW2/1prDWT9Wtt95K9+7dd89fcsklezyXl5fHxo0b6dWrV5PXdu7cmZtvvpns7GwmT55MTk4On332Gccee2ygfU+fPp1LLrmEo446CoDbb7+dvLw8Kisr6dy5M5s3b2bx4sWMGTOGww47bI/9Lly4kBEjRpCXl0deXl66v35KrEkqJC627VqmYFzMBG7mcjFTqgYNari5Z319Pddffz0HHXQQPXv23D0O09dff53wtfn5+WRnN3zv3nfffampqQm87xUrVlBYWLh7Picnh/z8fJYvX87EiRO58sorueKKK+jTpw+XX345mzZtAuD5559n5syZFBYWcsIJJzB37txUfuW0WcEwxnQYicZVil/25JNP8uKLL/LGG2+wcePG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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "vxFzda-uOEIr", "colab": { "base_uri": "https://localhost:8080/", "height": 298 }, "outputId": "33a282c4-9281-4006-f228-66c8d0df0838" }, "source": [ "plot_metric(history, \"accuracy\", \"lower right\")" ], "execution_count": 12, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "j4-8v8hvO-_N", "colab": { "base_uri": "https://localhost:8080/", "height": 361 }, "outputId": "501ea778-1601-415a-dcbf-f4ac593b3733" }, "source": [ "images, labels = next(iter(test_loader))\n", "pred = model(images.to(device))\n", "\n", "print(\"label: \", int(labels[0]))\n", "print(\"pred label: \", pred.argmax(1)[0])\n", "plt.imshow(images[0].reshape(28,28))" ], "execution_count": 13, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "label: 7\n", "pred label: tensor(7, device='cuda:0')\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.7/dist-packages/torch/nn/modules/container.py:141: UserWarning: Implicit dimension choice for softmax has been deprecated. Change the call to include dim=X as an argument.\n", " input = module(input)\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 13 }, { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP4AAAD8CAYAAABXXhlaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO29X2xbWZ7f+TmmaEqkRNKkLMr646IsuSTLUpU0FtqV6p5NzU4ymQyCdPLS2F5s0MEOkDzsABsgD9NIHmaCvDQWmwQLLBAgg2lkZjc7+bPJZAbBIMnMpKt7egpd1XJbZblky5YsuiTLEi2xSImSKJPyzcM5597DK8ryH/3n+QAX95IiL68ofe/vnPP7JxzHwWKx1BfnjvsCLBbL0WOFb7HUIVb4FksdYoVvsdQhVvgWSx1ihW+x1CFvJXwhxC8LIaaFEDNCiO8e1EVZLJbDRbypH18IEQAeAH8ZWAB+CnzbcZwp3+tsoIDFckw4jiNqPd/wFuf8GjDjOM4jACHEvwa+CUztfulvGMcfAx+9xcceNh9jr+9t+JiTe30fc3KvDQ7++v7Rnj95m6F+JzBvPF5Qz1kslhOOXdyzWOqQtxnqPwG6jcdd6rkafGwcN77FRx4F6eO+gH1IH/cF7EP6uC/gJaSP+wL2If2W78+obX/eZnGvAbm494tIwf8U+J8dx/nC9zqneo5vsViOhn908It7juNUhBC/BvwXIAB83y96i8VyMnmboT6O4/wR8EcHdC0Wi+WIsIt7FksdYoVvsdQhVvgWSx1ihW+x1CFW+BZLHWKFb7HUIVb4FksdYoVvsdQhVvgWSx1ihW+x1CFW+BZLHWKFb7HUIVb4FksdYoVvsdQhVvgWSx1ihW+x1CFW+BZLHWKFb7HUIVb4FksdYoVvsdQhVvgWSx1ihW+x1CFW+BZLHWKFb7HUIVb4FksdYoVvsdQhVvgWSx1ihW+x1CFW+BZLHWKFb7HUIVb4Fksd0vA2bxZCZIB1YAeoOI4zdhAXZbFYDpe3Er7iFxzHWTmA81gsliPCDvUtljrkbYXvAP9VCHFLCPF3DuKCLBbL4fO2Q/1vOI7zRAjRBvyxEOK+4zg/2v2yj43jtNosFsvBklHb/ryV8B3HeaL2WSHE7wNfA2oI/6O3+RiLxfJKpKk2qj/c85VvPNQXQkSEEC36GPgl4O6bns9isRwdb2PxU8DvCyH0ef4/x3H+84FclcViOVTeWPiO4zwC3j/Aa7FYLEeEdedZLHWIFb7FUodY4VssdchBhOyeQYJq31DjuMF4TYNvb7637Dun//FeVIzX6uOKcY5Kjff4z+1/zat+tqVesMLfRRBoeoUtauyV2BuR32gFT3u1dPpSysCW2jbVft14rszuG4P5QWV23zAafK+11DtW+DVpAlqQok6ofQuQVHsBcWpvjXjC928l4yMqexyXgpAPQj4KReRGGVgDcnjir+yx18f6dVvGya3wLRIr/F004FnyFNCGFHwUmoFWtbUbe/O4ESnwirH3H9caDejjIrDi34KwlIRKAmn9tbg38QS/hSf4LfV7aNHrm4DFIrHC34Ue6ieQou+ChqAn7C5jS+tjh1jXMm2hZcJs8ZzzbBPy9tvn2akE2C6F2KkEeFEJQCUgP66i/gQVIfd5YAFYUps+jgNLQo4E3BuGgyd008KvU73uAN4dx94ALFb4e6AtflKK3i/2Pr2V6Oqcp4NFupmnm3ma2GKLpirhb4Wa2A6FeB6RjwF2CLBDwD2uqOM8F1gcuEQpk5D5Fu3IfTNyNLGCHD2UgJKAUhgII28Cei1ALzjm8EYH9k9t8bD/DbvQQ301x29FCr4PKfoBuSWGnpAOzNFDhl5mSSOPm1lnizCbhHnOeTYJs0kTzwm5zwFUCLBDg3sD0DeBFVqZj3Uz/343mfY0L2YiUvT6L6WnEkW8G0AReROo6AVHjTm3MOf6lnrHCn8XeqiflILTw/s0UvRD0H79Ef08oJ9p+pnmXabp5wFXswtQACJQjsB6rNG9CWzSxBZhtglVib3iWn15E1glyQx9tLJCS2qd2eZeio0X5aVVkMIv+rZm83EQOU0Bb+i/if1TW0zsf8MujMW9djzBjwAjZd55Z5ZBpqoE3880nXM5mEQuvkcgGIFEpASREkRy7s3geeM5dhoCVALVFr+i9qu0EifvbsnICrM3+njc2gvtQTnn9wu/ZBznkYuB+RSspKAyCKwCy3hegbPOy+IYXuYRqfheX/G97+xghb8LZTGbkZZeif7cBxsMpybpZ5peZuljxt13zufgITCHa/FpVPuQ2jdDMATB0AtoeAEN6h+pAQiofQN0JJaIR/IkWSXFMt3M00OG+XemmXsnTZ4LbG00sVkM86IYlkN8/43A9AjkgZWk3PJUuxTPIqbHxH9ctSi6jrxLr+GtjaxRvUi61w3h9GOFv4sG3Ll9GiX8MsOpScYYZ5Ap0mTUNkfiYUmK3hR+CHnjCKmtEe8GoAQOeILXHxuAxhhcvbxA6vIyHYFFFulgmTae0sEiHeSJsxkJ8zxyns1UmG3OqymE3K/TQn4jTjHfAiuNu28CxUP/Ao+fvVyoFdSNUXlHVqLye8EBsshRkRa/fwMr/DNNEP8w/8o7DxhmkhuMM8wk3czTUXhGcA4p9kdqPwdsUC34hhqPlSevSvSo52PAIkTnykQ7HtPf9pjlRIxVkqzQSp645y1Q3gO9eLjNeYq08FUkTj4SJ995wZs0bMdZz7fIUcJZpiKqRe/fr1DtJl1AukkXUsgF3WW80cC6ceIy8n/jbIjfCn8Xyv+tVvMbB3L0M80wd7jJZwxu3KNxHvhSbfPAovF4AynwANVC18+ZFh923wQiyHihhNyLBLQnC7QnCpB8JNcKQrDVHGQ7oF2G592Fw02alNil6FdJkifOV6E4+VSc56nQ4X11J4AdAoYr9bx7Q9T7fCFOaSbhlaebUftGIBOGShdyLaSJ6jiIs7U2YoW/i6D8J1BD/Z5Yhn6mGWWCn8veg3Gk0BeRo0PjeG0R1raVFz0AwQZoaFD7AAj/MF9j/hVCSKsf2XsfbIRgqAyhsjeNaDTem4CN5DnyIWntvyLOqjFaOMtUCFTdBJ/7RkTZWIrMjTRzfWlKdxMyMEq7SyvAQhAqKbw/ig6D1n88a/HPKE2eGy/t0M087zLNMJPw58BPkIJfVfsclLOwUJAPtV1o2AF2ILhdnc9nUuvLb0KG4zSFoKlRLghWCVvvaz3XgCv8SNsLIskcnYmcHEG0wVpSjhLOMjp2wouhCLNFk3u8yCUe0E8ytsr01/t51nzZE30RbzpQSlIdAu3/651urPB3EZRWoBViXcukydDPA9rvFmTR0p8gF/BysFaA5W05MHyZs+xVv2QzAZjt3TcNHY+nB6E6T7AB72bREgGh0wsSyHQDFX0cTapRwlmmEek+1aOkCDgx2IycYzMUZp5uUmSJkyfMJnfer7BUueJ5Q/Ti5xIqN2ITOd9vqvVppxYr/Foo781OJcBOKCCHx9rKRpCdArehpQLlinqMFOMm3jE1jk383mXfx1cl4JrLTP4qAO7xNrRsQyoHqRgEVdSxXi8ggRSGPolJwPd4x/f4tdOL34K9/iv1NfqvDbzr038jY2okIhBpfkEkWqT1yj1IeCHT24TYGgpTyLdL4ZvRzQtB5BeXw/u2z8Zc3wp/F1vS7bUExcxFZq73McUgvVdnufpXFuT/QQFYBbEGyQIkV3FHAU7FmMubi3mm607fLCrVx04FKjvyZrJVUse8PMTEpIJRBqQibwRsGJ9borZnwXwMnrBM3/cOhyv+ly14musi5rXpvflcA57wc8axiq0QO9A3NsN6oIV11BZqZmKohRfFiPd5evi/pFOzs5wluZyd3+TAKMvh3gIwA7PXe5likEsskvwfV0gkSq7I9Q3APc6BqODNt2u59LSAtvFcTNtyExUIlqRgw/rn5n5bvr68vfvm4E+8rajXBTfw3Fk6sKjWDUlfI97n7LpBbR/IF1zNXiOPWtenqXVt+lgLX3/3ZhCVqpUQjZXpG5hhnWZP/KkWHg69JwOi9GfoSMiSPwfi9GOFv4uyutMDGViY7WOyd5E4eVpYp29kVnrGNwo05pDC1zeCVeQ/oDktaPQdgxThBp6o9fE28p9NP95QW8k43pA3hmBR3Rw2YHND3gTWjCFw2Sj80VACsa2u03Q1mjeoWsI3bjaUOHir/zLR73WDwrg2LfgS1Zb/ZYugJSAGndEc6x2zrNPCpgp82uoNs1C66v2+eeTwfyHBbvfe6cYKfxcqdHMpKn28dwVT7YM0RbYIsMNTOqTwI2rrViEyhSLBrDqFisvfag6yGfASdDYJE2BHpezI9ebw9ibhjRcILfACUuB6v4a8GawZzxeqj8MFCK5BpWBEme/IbWtbuhIpeO7FphCIvYQBNUcaTkmeq3JAwm/w/ecF1WPX7em/KekbAVTfmNQ16lGQPlew1k2tAVf4xKA38pj1WIuKeGyWK/8DYXLFTk/0S8CCwFr8M0+FKuG3Q7H5IhPfGGEnFGCRDuUZz9PKqpdME1vhQiwP4FoQaU2aKBpWBaCFdcJsyoFmaJ1waIuWhDvopGVnnZZCGaGnEmt4gtdTi1W8YWyDtEUtFVjf8NYF3DUBNR2o7EDDNkQ3oCkAUZU/4J5HW8wi7oijvA1rRdjakZdxUAa/wZg2mHbU9Vj43ZnbVAtf3YzWN+QNSVcnrOB5OtyFTyOmImwIPxiF3rEZ92+1RZj1QDPrfS2UV6JS9K2okYI+69ng7PwmB0YZyEG+S0Z0xYEGKFTa+WSkhUwqTVIJvpUVKXoVUHsBKXxDwuSJVx0H2HF/qqcP/sfxQJ54Qm09eVpzRYQp+Cze1KEBd7jbpIb8ZWPeb25atC1AdEe6I6MBiG7LbEJX+BtQ3pCCX9upDmA9KGdglevS97gJeU1N2/IG1dRojFKQ17ZVksFSZmqNvr5dNZJ3ZFxFcBv6HkLSCIhKNJfoHZhxx2DrtJBPXuBR13UZy6FrKS7Zof4Zp4KrsJmkNzzMw4uFCAvpqyy0XyXYvkY8KcWvhR8nTwM7brScGzq7Eye/EufFilw1Pte6Qbw1LwWuXmlE1ZNk1T1vnDzJxAqtiVWSGzkatej10BXcghxiTS7mbe14oSf+HDSVgsQ6cq16a0dOEVoqMhaAilwzWN+Q95h19W3oUp8HIXxTPn7h69iEdbVv2ZE3tGhJ3ghAXpv5O5nH5vXVkunaDnx0H4LK6hOBd6LP2OqYZYsweeIsk2IxfUmG9rYiA7rsUP+so23lsqxok1H/PnqVdwloh3JrlGftUZ61dtPcvuKm0gJuUkxhJb47Q64BXrRGyMUj5Fo7obVErDVPPOQJ37uZrBLnK1rVcTKyQmvPKh2XF4l+WYbLyPyADmTYcAdEcxA11gDWCtIyavGC4daPKUsfxR3+glwzCBcgtQabBchtVNf4fVv2tfYYUxHtijNiKMKr0FaAbE4GTpleDXNkU4tlIFeQsQ7mOkpTx6Yb3xdim1Djc0p6RNWgr/LsyOXs/CYHhq5eqwaRxaQUu/6mtIunFSnkuKDYepFi60UWWzsAeJGPeGmwepFIH4MbGSiHkY0UWtspxNuZj798JNDCuszTDyzT1pMl1bNM29eXSSyWvJwB/Q9dkJcfLcitSz+nw3pjuGUFqx4j36e9FeEChPUawypv79LbKyVZP6ddcLU2XWnoKYgvIfUlpBZheV5mRatJWs1YB/2cnvP706W3qtZlwmwWw14Ib0Wf7SijmA4XK/ya6EGyytJaUamspm93hV019V/EVQBI3nideazDQZuN9zV7+xdxNRKId0K8THNrnuaIuWJQrBoNuMcdK6Q6su50o6VQImiItyruwIjnJ4ZbOVwn9QTYoWV7ncjqi+pYBX2+g/Dl+0VfS/hGyC0xcCIy7DZSeAH3kEq/D9yDVCOUH3ojEh3s1FDj2MWIrXAiqG/X+6bLxSavpmEF/7tPPVb4u9B3dh2f3QAkZdEG7dttpkqwVcewuyKOuWG8Z68tDjQHKcYvUmy+yJL7nDct0CKv8iyoBcbm2DoXYtLV6C4a7qwTXZU2cC0Z5KuAsQZhFPsKsENLaJ14R15ueuSxk5fv33jLr9dn8R31uBKAnQZ43hhkPeB5QbRXRFvieFue4bY7XLm8JG9aIfnn6ipAJut5HvxCr5r767gAVTBlM3JulyeGYtCoZvyWv/MJZF/hCyG+D/w1IOs4zpB6LgH8G2SpigzwLcdxvjq8yzxKzIysXPVzxYT8h9B+5eYae9ijCi7eP5D5nsaXnGvXcSOFeDuF1nYex4FWh8bWr2iJFYnzlU/CnujjqOlDm/wT5bng5unnibsFPvLEAdybygW10Kjf39q2wnmev/U3vFehUR07b0bUma7QdVpIsUyWNvI9t/i50D0v9mERElk5h9fC36uHUIP++6mh/mYoXPWZW4Sr6xlW/Gc4/byKxf+XwP8N/K7x3HeBP3Uc53tCiO+qx79+8Jd3XGgnEXhLRtqX1gSVMBSb5GauHZsBMC5ldi07lRqUX7gJENXv928N7L5BuNMLQSmeoBRP8Cx+2X3+XLu3VqBdjtpboCv56hz9VZKyVNdSqyxJBdAupxnJiK77s+q+P+ymIb0Zewlelxt/zvndrtCdFtbzLZTzLSTSi+QDcbYJEeio8P7oQ7m28RCid6VnolY3wSDeDcG1+AEgghtg5U6qtluqb9au8M+O+PcVvuM4PxJCpH1PfxP4SB3/DvAxZ0b4eka4jvevoof9OiTEDBEx9iWzU+5elVzZ/T7z/SV/zl2TcayE2Uj1NMOcasThRXuEXLv0GjxS7b0a23O0xlapEGB1tZXyUtTr1mNuDUB7kGL7RYrtF3msWoTp9ze9pfChtuB3dgKq29B5SisXIC9qLpDmBjr5k//lLxEIyXiI1ECW9gcFmIBERLr+/FTV2UQt7hk30yrR0ywX9naN1OwcHyDlOM5TdbyEzPo+Q5h96Go5nfA9538e9i/N/LKyHC/zdDfIpJElf8de3QREeP38jK3UnmChPeHlIZh15/SxXoOI4/UTUPtSe4KFroQ3nXlT/MUv/VsJX4Vg3/EQFBra+eQ7H9KGrJfQ/u5n0AHhWLXwzbo55hqimz2pVvR1kQ53YS/fUj3Mr9Oh/ktxHMcRQjgvf9XHxnFabSedsm9/UvKw92vjHYWlTtlkU7sNzZuAKXy9lRzgCXK5Jgj5Trkt1LiJvK3wYX/h+70hblnwTVgIwwKsFJKsx6SFNvMMTJHXCuBJgvQUKFdmKQGrJFmmjUU6eLrRIYtvLhmf7a7qn3Srn1Hb/ryp8JeFEJccx3kqhLiEDCJ9CR+94cdYduO3YyY6I19NTfLh6h+ZlWZ1AkoJvPAePdJR79cxDOb7D8Li6725+a9R7xvwauKVwm4Pw9bYqruYqV2W5Y3qAB7/5AygE2TA02WgG+YjXapYeg+z9FK8f1HmaCyobQV2txs/qaSpNqo/3POVbyr8PwS+A3xP7f/gDc9jeWNMxeg/o74pGIuO+XC1d6GCz4rqmDzdVKKCFzAbhGJUCkC/Xy9gvu2l+3+FvQyqFr6+4aSBLlxvQwvrbgTeVsmTZ9DYNxmn6owgha/EP083X9JNhjQLs30yNmAGaTi11a9qtHE2eBV33u8hTXarEGIB+A2k4P+tEOJXgcfAtw7zIi1+tGU3pyHumjWeG7KMHM+2yGG7jhws6p9p0ZsWX69rGOEvpYT3/oMWvt6b97Ba3gy9KYufNHIZXOFve9+CPpV/KTbchiv8pbYYi3Qwr4TPfQF3kaLX6x/uiGi/YODTxaus6n97jx/94gFfi+W1qGV9/M9pIavFv6IZk2umuJg5bvrn4Hkitrz3F982Q81cDvIH11ag0iS9G2acg+nC7FIeBiX6Czt5GVRUlFe9iXTp6SF+C9WVi2lT22UM0few8DgtRX8f3zBfhy2+vTfjJGEj904tpmhMO4fxvJ7v6wYRetBbq0WU2SpKn3+rxvsPKjXVf5Myk4a75A1Gz+2b8RYp05CKZd0EppZC2S1Son+DMN6EpwmVeqwTfpTFL1+CRS4xTzfzdMP9oCf8qiG+WT+5job6lpPIy6y9Fuxe8Qb6tfp1e5Xy1EP+Jt/7D0v4+rmk+owu736mvRNqmJ9i2Y0uFDofYc0L19VnbkDeBKLNquJwDOl47oDF2EVX9POr3VLwenPTfXTxA3M0dDawwj/V+F2O4AtVMY79gt3rPSYve/9hsYXXECBYbfG7IJheUwlKcnOTkIqexTfDpJpCvjLjaqifJcUiHSxyifL9qLT2d0E2QDRLj2xSvfB5NrDCP3PsVa3/TSzW277/VTFvKsYipbbyaWAIGHIYTE7RzzRpMnTsLMpw3VXcob4+WxRIhSCqF/P0/iqUruJZey57i3mlMjKeodYUyBxLnH6s8C3HxF7lOJS1bwf6gBFgDBo/yDEYm2KMW4wwwSBTRB+WZdPSLJTXvMlJVJ5Biv4K0IP02/cAH8BkZIhp+pmnm2ePL9Vw25ljB3M7O1jhW44B/5qDuQ6h6gOlgQFgRIp+LHaLEW4r4d/m6uKCzMufQzYsLXrLmS1AWwJp4XuAa8BVuX88cJEpBpnmXTL0yApL7gq+KXwzsersDPE1VviWY6JWolIToDrYplHCL/FebJIxxvkanzLKBAPZxzCBFP6XQBZyO548o4BI4gn/KjACj3suMsEoUwwySx+Z5bQXqLMC3lzeFL0/1+9sYIVvOQbM4b32PGjvQdRLEBqAK52zDDPJCBN8yCe8c/+ZV4HnIfCl7FasHW4tqApiMaTwryAtfc9FJhlmghFl8ft5cT/ykgi9WlmVZwcrfMsRYw7v9eaG2AAJ118fHFijX7UoH2Ocd8afwS3gEXJur/YLBSlZd6gfkaehA+iG3EAj9xhkglFuK+E/++KydN1lkEN9ylRbfH+cxNnCCt9yDASNzRS9OlbCTyfnXOFfn38E/w0YR7rWl6H8VIr+CV6RzQZUhJ4e6l+BWWTj0wlGmGCUx9MDcqqghb+EPOGumPz9UqtPL1b4lmPCHN5r0bfIEN1WIA3dzPOuEj4/Bv4UnHFV83/byzLQmw5bEobFf9bdzAy9TNPPbUZ5/PmA57OfUVvRwRP+GvWAFb7lGNDFQ3QL6oR3nAb6INa3RA8Zupnn4nzRndPfy3kDcjPDQOclBsGr0huTufZZUjImfzntZd7pJJw8VGcn1gdW+JYjpgG5BKej8zqBpLT07cAYMALpUIZLsjSGFy6/sdu7rtErBy0gI/2U+M3i5Lv6HbiVj8/mAt7LsMK3HDGG206LXq/idwFjEBxaI80cl5knxbKc0xdUay92r7XrSQN6r7vuRKgq3Flb9HDWMu9eBSt8yxGjY+tUoE4XMkIvrfZj0JeccYf5bYWcFP6qbOVVK0fO33dPi74clRV0tfir6ve5wnfYXQro7GOFbzlitMVPufn19CGDdYageeQZ76pY/EssElQhuTr7Tttmv0SrSmwp4W81B72h/k6LZ+2rKhD5U3vqAyt8yxGjLb7ntqMPGIJzIxsMRqboY5a0svgs4lr8dbyOv1CjHTYy91634doMhFUXnmbyK/HdFt8V/tmLxd8PK3zLEaOi6fViXhol/BKDqSmuMUUvM6SZIzGnmoGqxT29gm8K3Syo2QA06d57zbhtt6oW9kzh41CdfVc/WOFbjhhVHsOs3a9Cc/uZpp8H9POAnp2MjMNXsfibBc9Xb9bUM8/ahAreUUN9Pb8v+uf3rvDNPPv6svpW+JZDYq+02ySQ8ipBD8DF61+6EXrD3KGXGZlyO4fb+ttc2NPx+An/PgZiBLgGjpFzv0iHl4ijxe9ae7OseP1ghW85BMyIPH+t2z5p6dViXnDEi8cfYYJhJnln7hk8wLX2rHrxdNoRqOtzpHTxzDZkWMBN4Jfg08T7TDDKNP2ybLaulb8CVBy80lp2jm+xHADm+rpZ41Yf98k5vVrQ609OM8iUa+3feaiy7+7jWvxyzpNnEDlmSAOpHmTarS62oQpt/KznGp9y083E477wYvJd0ZvRemc3734vrPAth4AWvRmWqx7Hheu+Sww9oZcZBplikCmuPFySSThzatO59gWvhWkTyrirMloMI8tyXYPSEExE3udTbvIpN7nNKM9uXfbi8hfAHUK4dfXOXrOMV8EK33LAmKm2UaRMdaXLYNXcvi8wQz8PpMUv3INPkVlzi2r7EtYWvfQZPb9Pgls/jyHgA3gykOC2yr6bYITbjPJo+np1Fh6bSPX7I/3tHN9iOQCCyOG9is6jDRqEm3VHHyQGnpAmQz/TvMs0wVtIaz+BW9V6dRWWd7w+P9riJ2LAJbzKOgMX+YybfMKH3GaUad5l6fMr8nzjeBafjDyxW2GnVm29+sAK33LAmPN7lYzTYHTdTQN9kA7M0css7zItF/NuAz+BzbtyBV8Xt9ai1zH6QVS5bFVWa204yASjfMKH/IBf4PPHN7zmGObGKjJzf5naFXasxbdY3hJzqB/0uuCopfhg3xrdzNPHDH3MSit/C1bH4bMdOSA3232YS29N4JXVehemAoOMc4NP+JDPb30gO7Jn8HLtZ0CK/p76ge4reHaLbLwKVviWA8btX4NbONMQPWnoSC7SzTwdLNKeLbjz+Zmd2t3dTT9BCtxOtxs955gjLSvsbAzCT5BD+wWMklpreJa+vnLuX4YVvuUQ0NZeVFt75cbrYNFteul2wtmuTrN1Q3CpDsntiyBr5F+GxVAHWVIs00Zx4aLX7NItsOHgrdzX11B+P6zwLQeMlmhLdc+7tNya08/oYJE2lkmy6hbYoORJU9fGNyvxuREB3YDalmlTpTo6qqvqLKFCcs323/W1eLcfVviWA8aomquH+caiXndknjay1RZ/g10WX4f86HDcaAiiMWSwzmXYuHyOp3SwSAfLOynP2i+gsu50l18zSMeiObffC4QQ3xdCZIUQd43nflMI8UQIMaG2Xzncy7ScLlQ9HF+X20TfE3du30aW1lxRrrsp8VeMd+vQ3CTQmYBoB265bD3M100vc5kOb15fKiNPqut16dSe+orM2499hQ/8S+CXazz/zxzHGVHbH5nmYU0AAB6hSURBVB3sZVlOL2oZrhFP+O1wLr1Bd0CmzaRYppUV2eJa9bZ3Sl6RDb2QF0W2wnK74ijR04MSvZzjsyCMxbwFvMU8PdTX4T8Wzb5DfcdxfiSESB/+pVjODkFZ8NIQfltqWdlnubWRdWvpsQFb27vn+NEQiBhep9s2pO/+clCdpYPFHWN+X9kEHiMt/Ca7O95a8WtexeLvxa8JIe6oqcCFA7siyylHzfF1T/t2oKtEB4uqKfU8HTz1hvm6xXVpd/HMqCqR7fa116v5gQ41v1fD/AzK2mfwHmSpnuPbYb7Jmy7u/XPgHyP9Jf8Y+CfA/7r3yz82jtNqs5xN1EA9jmvxE+2rdPDU7UifYhmh8uxdi78j361FnwwhBd+NXNC7CvRAeQhm6GWOtFzNXxDeSr4uzlfV/grqp3x2htqRELt5I+E7jrOsj4UQvwX8p5e/46M3+RjLqSFoHKsVfcPipwLLpPCG+mblXO3KKxvvTgDRJNLCX8HNvnOuwURsyO12O1dIy//zFZT7zt/zDurL0qepNqo/3POVbzTUF0JcMh7+TVQ0tKXe0KE1UJ2Vh2HxS7SR5RI6Wu8pwadI0RsW35zfJ8Gb16u+9qURGE8MuTn2M/RSmkl4vvsKeC67ehT967GvxRdC/B7SZLcKIRaA3wA+EkKMIIf6GeDvHuI1Wk4ke5XWClat6CfaV2llhRRZOliU7bB0ZZ0aPvwmVLdbPafvkZZ+MjLkptveY5DZZV9VHTapDtKp71j8/XiVVf1v13j6tw/hWiynDlP0+lgt7KlV/WRghTYl+u6deSl6XTJbeducUrUPPxzD63Z7FaYT7zDFILcZ5RY3uFMY5sVExNftVvvrwYp+f2zknuUNCPqOfQWvDVfeBfIkWaGNZaKPyp7wl5HD/aLsfqtTbpvAq9/RDWtXgszQ67a5vr06SnkiWl1VJw/eop4V/atghW95Q8xUGtPiN8ihfjPQWiLJqjvMZx6vcq4e6q9V+/DdtFs11J8LpHlAP5MMM746RvnHUWnp72OU09LhudZX/6pY4VsOEBVsqyx+c3yduLL4HRtL8Ahvfq+G+uUNb3YORpvrJDgdskT2DH1MMShF/2M8r9UMkNe97dexon91rPAtr4kekO+19bhepUsRHVj7lEZdR28RaaALSDdexdc/N4BMur8Ei4mEWxv/8ZO0V02nKvXWWCywq/ivjBW+5TXR/e119Vy9JeVzQ6ge9yWjB96Xcpivg3Y2cDXaFFJlODfkGZOX8RJxVCz+Ipcg0+hl3+nGGGxi027fDCt8y2ti1sLpVFvYC8/9ABiDq53Tbg+87sKSt6i3CuzgCl80QrgRwhFoq+AG7TiXvUScRYzsO90RhzLV+fbW2r8OVviW10R3u20DOqExLIf2utjGB9A4lqOfB/QxSw8ZgsaCnpMFoWN9AkDIOxYNuEU2FhMJsqrQRnY55YXgu5bebIqhE3Ks+F8VK3zLaxJEDcqhIezWyHd73H8DBmNT9KMs/nbGa365CNmcDNAJR5CiDyEXA1WjSzcRBy/f/kUm4g3z3Sr7uvaubo5hh/mvgxW+5Q1oAdrk0F4LfkhuV/q/YJB79DNNH7NE5l5IF948rKrmGGxAsAGCEaTrT91HiCETcbr9+fZIi5/XgaI6zXYTm333ZljhW14TNdRvEN7wfgAYga7rDxnmDoNM8S4P6C08ls0vVTusJztS+A1Ai1rNJ4SXequq5y7GLnr59su10m51Ms5WjWPLq2CFb3lNjLRbXUtvANqvP1KNLycZRA71g/eBh8AjcBalZNeQBn6rJOvq0YgUfgpX+E/9w/wMSviPkdV1bDz+22KFb9kDMxrPPO4EuqqG+LGRJQaZYoQJ3lPCb58ryICdeSAr5/ba094ARJvx4vFVMg5X4dlAM3Okvb722me/AnI+rxtmW94GK3xLDfxBOWbQznvSyg8BIxAcW2M4NMkoE4yqtpVXswvS0ivRY8TiB1F+exWLTw/yBjIMa9eCTDLs5tsvPe42VvLBzuMPDit8iw+z1KXZ6lodN6TchTxGYDApe9uPMCFFP78gu1U9RK7kqyq6W3hls1M67dbIt3821Owm4txT+fbMBI0IPTOw1/K2WOFbfOhiGrohtY7MSwFBaZ31Yl7/Q9nimjsMc4erDxdkH7wvqepvX17zLH4LKu1W59tflY0v3ew7RplikKXZHp/vfh1r8Q8OK3xLDbTFTyDn9Em5CKfdd0MQHFpjkCm13eP97EPZ334SL/tObWtFX/adkXZLD8wE+pjiGrcZYZJhppf74a7wFdqwJbIPEit8iw89E9fCT8oAG9UUQ1v8/qTsa68tPuPIppV3cfvhOQXIFSC3I4f6+qwkkQOIy/CkI8Gsm28/yudPRmCisTrf3u2MYy3+QWGFb/FhDvVT0tJrf70SfvPQM3qZoZ8HDDJFYrwkrf2fw+ZD6arb2tld0V4H+7ptri/LtNtp+pliUIr+x4018u1tdN5BY4VvqYHR2153utXdbgegNzJLH7P0M81A9jHcAsZhbkKO9KG6Ro/pFGzSZbPbINfdyBxpt8IOP26Uo4aMsZXKeGG61uIfFFb4FoVROksv5hkBOtpnf/Hml26ATi8zboAOj6SBzlDtCAzjLeo1oXrgqWCdp3QwTzcZeliaviKt/F3kSr5bUstsimE5KKzw6xZ/lVz9nBJ9c1Ba+BG1jcnovDFuMcwk15jiSnbJq6izJu2x6QzUqwQtQDSggnZ6vE23uF7kUnXarevC08k4Nt/+oLHCr0tM0fsj9KJAp7eQpwprXLn+BcPcYYxbjHKbQaaktZ9Duuw2qpteatGngEQMggnk3P4K0ANLbTE3Oi+7baTdupZ+E6/4vk3COWis8OuWWsUylcVvEG4/e4bgnev3GeU2X+NTRplgmEkSd0syUEdZ/Fyhdptrt9ttG27TS67gin6RDgqZdp/o1/BEb1p9K/6Dwgq/LjHF3uQ7jnoLen1eHP4NbnGTzxjduU10sizn4josd1nKVM/C9Zw+ETFaXBvdbjd6zlUJv6rXpbuQ5xe9HeYfJFb4dYsWv56V64DahCyjpYb6vaEZhplklNt8WPiM4C2k4PWi3pewlvWcbcbtQ0bo6U63ur/9FZgPSdHP081i4ZIn+mKZ6nz7NePYWvuDxAq/7vA72vQWxpVsK5CGWN+S66u/wS2CP0S67nT9vC+h/BQWtqV9rhhni4bwCmyYCTk9uJVzF7lEKZMwmrzqA5tvf9hY4dclQaqtvRa9GvaroX46lKEXafEvjhfhR0g/u5p+r67C8o7MkNdDfe22a9J59rrARgdwBR63XTSE31G9qEcGm29/NFjh1x26PHaC6hLZqjy2ct3JgpnTsmjmzoz0sd8D5mCzALkNbyZuLurpMwb18F7n2l+D3FAjD+hnhj4ypGXabQYVluvgzesth40Vft2h19vTakt6c/ouZHnsv+ZwM/YZI0zQzzTRh2V39X6z4PW60357NxQX6b5LJ3Dn8wwBo7A0EGOSYW4zwhTXmKFPpt1WZd9Zq35UWOHXHbom/lVojFZXyB0APnD4C70/4Cafyvp521Oybp6qiZ8zRA/VfoEgMpdPGCm3XJOin2CEOwxzizGmGOTZF5flKKIq+84u4B0VVvh1g9G/nhRu1xsjMi82ssRIaIKbfMpN5bOPTL5wi2qUc7Xl2WTsUyG8If5V2Lh2jikGXdHfZoSHs+9VZ9/ZtNsjZ1/hCyG6gd9F/rc4wL9wHOf/EkIkgH+DHC9mgG85jvPV4V2q5c0xV/KVxU8jLfwY8BFc7f+cUVVFZ5TbDDNJ591clb9+uSBn4XtV4wsCUe23Vyv4M6FepnmXSd5jnDEeTV+XxTom8IL7Kw620MbR8ioWvwL8fcdxfiaEaAFuCSH+GPjbwJ86jvM9IcR3ge8Cv354l2p5M4K+x2oJTofkfgDX+n/Gh3zCh3wi5/Xb09LST+AJf1Gut6/jDe+199+tyBfAi9O9DM96mnmgUm4nGebR59elV2AGX9qtCva3Fv/I2Ff4juM8BZ6q43UhxD3kVO6bwEfqZb8DfIwV/gmjVnJsk8yxTwND0P7+I25wi5/nz/hL/Im08jo456G3zWW9mLoou8cQ0ZDskEMSuAR0Q4a02+Ja5trjpd26Lrw1bNrt0fNac3whRBoYRZZdSKmbAsh8qtSBXpnlkGiqiswbZIoxxvl5fkTnf8tJYeoAnXlwvoRMThrnZTxpaisfRFr6lggIw2+/cfkcGdLM0ssD+uEnjdI0/AQ5py+hzqg3u6p/lLyy8IUQzcC/B/6e4zhrQgj3Z47jOEIIZ+93f2wcp9VmOTz82XfmcVQ2w+iCWHqJbuZJk+HK4pIsnzWOWyuvnIWFghzi66x48FJtE0BnBMJuGh4wDFyTc/s5ZfEXZvu8qjoLUN30UvvuTV+B5c3IqG1/Xkn4QoggUvT/ynGc/6CeXhZCXHIc56kQ4hLy32UPPnqli7EcJOYM3JyJp6TFb4V4KE8rqyRZqSqOqUtirxW9Ehhl46xReRb6EiB0P3u9kv8BLI3EmOQ9HtBPhjRkRI1Ot2YCjo3FPxjSVBvVH+75ynP7nUpI0/7bwD3Hcf6p8aM/BL6jjr8D/MFrXqXl0NAR87p2nhmhl3CFn2SFOFL8ZJEj7ixuOG5uZ7csG/AsvdC++mFk4M9fhLW/GGScG0wxyDT9PH6S9hbxlsATvb6lbKqz22H+UfIqFv/rwN8CJoUQE+q5fwB8D/i3QohfRTY1+9bhXKLl9fDH4etYfB1FH/QsPnmSrJDUwl+Uw/u1ohS9lqhZ/8atja8Tb67iRuc9G2h2HYKTDDNNP9xvNFbvy1Sf1Ty7tfhHyaus6v8YEHv8+BcP9nIsB4PpcNOiV91w4ijhl7hAXlr8XNG19gsFzxbXKoHRgFy4J4kXnTcKTwYSqoGWjAaYZJhnn1+W7sAMRq69rqizye46vNbqHxU2cu9Mouf1puhVUk4rEIdYa94d5otV3Pn9E6rlaG46Nr9Ft8BSwn820MxtRrjFGOMqJPfx9ICMA9D++hWQwl81zlY2jq3FP0qs8M8c5vzeP8+PuhY/HsqTZJU4eVf0C1kvKbZC7Uz4JowCG6r3nY7M+5Sb3GaEpc+veNF591ELzfrukvOd3Q7zjwMr/DOLv95tVP61jfm9nuOb1v6JcYZaWfFBgAhyWb9b5tffU33vPt25Se7HnXJ4r0tl3wfyurLOArudP3Z4fxxY4Z96/CG52tmm+tiTki2w2tX2ATBSoo8ZupmnY2PJdeHp2bfh8d/lEBwAOa8fAK7BA5W1P00/ufFOGQcwgxeHvwTVc3sr9JOAFf6p5GXlsduQvtxrXm38NN7+I/hG559xg1sMMkWjbmdd8Grm6RIdVXXxkcUzw0NIP88H8EXbFddtN7vR683nMxh++zK2Su7Jwwr/1OIP0NEBtCmgD1qDXh97tTUO5RiNTfDz/BljjDO4cc9NwCHnuevMMcOuyLwR4OvwZCjBHYaV8N+lePdideLNElAE2wnnZGKFfyoxF/BMf70SfmPY7WHPB8CYw5Ve2dV2FJlvf4NxGidwhb9WkNLUqwKdqMg8HZGno/PGYO0bQSYZZpL3mGKQh0/6vfm8XsEvglzQ0wk41l13krDCP3UE2R2kE8UTv9EFZwz4Ron3OycYY5wbjMuGGNuTRMZV2q0S/uq2VyXXjcxTq/bmVhqD8cAYt1WQztTOoNfW2l3B14E6ZlMMO9Q/SVjhn0pMi69Fr2fiYa/Ixgi83znh5tp/yJ9z5eGSLJp5Hzfl1lmU8qyKzEvgBegMA0OwNhzkdmCUcW64QTq58U4vb/8+yHG+Dsldozo813JSsMI/tZg9aX1++jQwAF3XHzLMJDf5lF/gB3T+MCdX3eeRC3pzMu12JicX9s2hvnbX6ZBcmXgz7Abq3GaEx18MyPNp4bOAHOvXisyzK/onCSv8U0mtob5ag3dz7R3eZZpRbnOTT6Xo/x1SpGoEvpz1suFX8SLzEhGqAnTWhuWcfpwxbnGDOwzzcPp9mVuvhb9UBiapbogBNkDnZGKFf+ow4/B1f6oUEJb+elUxt713jj5m6WWW/txjaZHvQvmubHBpdqczPewNQFMI2QxD9bGfD3STIc0070rX3XLfbtcdC3i3EctJxwr/1GHk1UuHGzQLL0BnBBiCHjIyQIdFhCqNzaonejMT3rTJQUA0AiFkhF4MviLOCq1kSbFMihcLEa+HfRFVTccO5U8TVvinDt2+IoEr+jTeNgIXr39JmozqRbvoFdioIXozXcYlgBR9FNaSQVZpJUsbi3Tw7EmbFP2K2vL6TXY4f5qwwj91aIvv62OvG2OMOfQxQ1pZ/LZCzgvQWfOG9Xr5zfSu6zk+jWprhvVAC3ll8Zdpg0yjF5WnLX5Vlp3lNGCFfypRFe+MPvYMAEPwTu80vczSwxzdzBNU/evNYb45xK+ZFGtY/DxxVkmSpY2lJx1eVJ62+nnwzmo5LVjhnzr04p7wVvD7gCFIjDyhn2nP4m/PS7fdUyDrpcq8LO22AaS1DyEtPi1qjp+EhUYv8UaLvmp+b+f4pwUr/FOHGurHqbL4zQPP6A/IdfdeZkmTITL3QvrstcXHq15vDu93ybUBn8WXC3tuLXxt9W0SzqnFCv/UoRb3tPDTQF+Z3sgsg0zJttbMkC4syKYYi3Jby3oBtJpaMg2CtPaNUI5Ii58nzkoh6bnutOiLUF03z3JasMI/sZipt+bjFJCUlj4N9EHXOxn6mOFdphlkil5mCc4hrb1a2Fvdfs3udCF43niObUJs0kSpGJZC1wt6Rf1CWzrrNGKFfyIxs+78WXh9VQt6jUM53mWaa0zxHpMMMsXFh0Uv3XYZKFibbKnGCv/EoUNxdTlsMxEnCvR4SThD0BebpZ8H9POAa0zR/rAgk3DmkAt7Wdneer3WR1nqFiv8E4kp+AS7quQqa58YeEIvM/SrIf47c89k3Pwccn6vhJ8r2KU3SzVW+CcOM+VWd79JImPyjYCdPkgHdDz+DP3b017CzCJu48tNtahnm1BbTKzwTyRmxl0SWVUHae3TQJ+09j1klMV/QGTihVfSWlWy3szCkw0vWs9afIvGCv/EYabbquy7RjyffRrog+7APL3M0scsV7MLnugnYTMHuQ2vF621+BY/VvgnEtPiGxF6SvjB9Bpp5kgzRy8zMuV2EhiHO9ndSTg2oNbixwr/xGG2tG7xAnUMi9+RXCRFlg6eyrr4KkhnIeuVwdBDezPt1j/U9//x9afqAJ7t0Hmec54dGqAS8E7inshRezuWOG1Y4Z9IdOqtcDvfuMLvwu1w28I6jQWgAGzsTrwx5Vj2nb1WZf4gcnJBDIjAFmE2CfOc81AKyrj8KvG/7FMsJxkr/BOHUS67Ga+7rRJ+sGuNFFnifCX73q0BG7jCN0W/V2c6U+j+EKGUrr4TwRX9JmEp+l3Cx3hgRX+aOLffC4QQ3UKIHwghpoQQXwgh/nf1/G8KIZ4IISbU9iuHf7n1gpJkDeGnksskWaWVVeJ85Vp7tneLvZboG6o/wV+xj2gMKfwYbNJkWHx1MvMGYMV+ankVi18B/r7jOD8TQrQAt4QQf6x+9s8cx/k/D+/y6hHD/rq97FHCL9HGMq1qqB8nL4VfAIqexYeXl7s0q/aZxbmbwBW9OdSvafEBa+lPL/sK33Gcp8iMbhzHWRdC3EMWe7McGurPoi2+Wty72JklRZY2ssTJcyFX8iz+RnU8vil6P2bTLV9xbin6KMrih9miiW1t8ausvXl2K/7Txr5DfRMhRBoYBT5VT/2aEOKOEOL7QogLB3xtdYoahKvSV9rqn+vaIMWya/FbWUHoPFs11Pev5L9sNd8v+kQA2nR0cDM4ETnU3ybEc0I15veO7+w2POg08crCF0I0A/8e+HuO46wB/xzoRdZ1fQr8k0O5wrok6IleCT+ZWlXFM5/SRpakrqyhhvqbvsW9vRJl/RX53YyAGIgYMlAwCuuxIOu0uPP83UN9Pcy3dfNPI6+0qi+ECCJF/68cx/kPAI7jLBs//y3gP+19ho+N47TaLLVR6+06ZF8Vvgy7EpTbebarxFip7B5w+zP5QS7guYW5A5DUaQBtSNGPAaMwHegnQw/zdHuVdfNqq8BuH4Id7h8/GbXtz77CF0II4LeBe47j/FPj+Utq/g/wN1FNlGrz0StdjOVgqNU8Wz+nmmjT1YFskXUZrxvuZWAMfto9xCd8yC1uMMl7cLdRNs9YQtXY26R2ZX5r+Y+XNNVG9Yd7vvJVLP7Xgb8FTAohJtRz/wD4thBiBDnZywB/9/Uv1HIYmMN4/9YJdPUge+Jdq94/6U4wxaDbKmucMZ7duixv6RlUxxxdmT9HdZV+y2niVVb1fwyIGj/6o4O/HMvbYib1tgBhvAW8JiCdAHqQHXBH5PZsqJkpBpnimtoPMsl7PPv0spfqOwOUHGRJH50BoLvg2vo+pw0buXcG0dY9jJzTuyv3Zs/7IWAMHg20M8Go2wV3ikEeP+6Fu0G33x53kcLnCV6SrznUt8P804YV/hnDXLFvUVsSuWofjCLn8VeAIXg8cJFPucln3OQTPuSzxx/CeFAO63VDTL2vrCKFv4yXEVDLgWg5DVjhn0H0UN8NxY1BUBfyURZ/Y/gckwxzizF+wC/w+ecfwH9EDu11+ewl1PD+idoWkBbfHxNoXXqnDSv8M4i5uJeIKEufpKrn/XSonwlG+ZSbfP7FB/D/A/8vkHGobqC9jizlsU51Hx4Ta+lPG1b4J44KsOnVrs8DK7BcaONprIN51aw6Tp4Lw3cRBWAbotvw138Cy9vQGYGwdtirIj5u2b4xeDKU4BY3mGCEiY0R+Alyy5SRQZlbe2xrR/pNWA4PK/wTRxlYl6JfQM6xm6HUmODOyDCVWIBNwnxFnOVEG8N/fZJ3hp/BCES/DtECbvSda+WTyBj8BDzs6OLP+Hn+nA+5zSjFiYtwX31WVS9dc95u5+9nDSv8E0cFaVk3YSEsQ3Yb5U9KpQQ/Gxoj33mBLG3M080sffT3TNPbM0vfLy4gCuDEVMhtoIV1Wtw2WOu0kCHNOGOMc4NHn1+Xc3odnMMqr9BL13IGsMI/cSiLzzLke6QodR58Hlhq5NHAdeb7uplJ9pFmjm5G6GaenkSG84nnbKngXhlrLzPs9PEiHUzuDJMb7/R89PfVuV2/fK06Plb8Zwkr/BOHmuOTBcKwlJKiLyKtshr+l7uiPEpf51HXdRq7cqRiWTpY5DzPVSqt7Hm3RZhtQmxtNLFdClFeiEqh30f65++jfPR6xd4MwTX3lrOEFf6Jw7D4AGxCPgn5qPSnt+7eSq0JHrcneNw6IP+i/mo55pbHC7/VnW9ZRrrrzM63e5XxsJwFrPBPHHqOD1KEOdzYu2ITFKOQUcG4Dcj0XXNrwJuW+3PoKxidbstIwevq+/q4VjkPsFb/bGGFf+LQFn8L6ZHXlt/MsVP7SgPkg3Krqp1rnktjWvC9CnDbmPt64RiEn+Fk5+NnOP7rM8XpJ8PxX9/LyHByry/Dyb02OMrre63SWwdD5ug/8rXIHPcF7EPmuC9gHzLHfQEvIXPcF7APmSP7pGMQvsViOW6s8C2WOkQ4jrP/q97mA4Q43A+wWCx74jhOrSI6hy98i8Vy8rBDfYulDrHCt1jqkCMTvhDil4UQ00KIGSHEd4/qc18VIURGCDGpGoCOn4Dr+b4QIiuEuGs8lxBC/LEQ4qHaH1v3oj2u78Q0Un1Js9cT8R0edzPaI5njCyECwAPgLyMjxH8KfNtxnKlD//BXRAiRAcYcx1k57msBEEL8D8jg2t91HGdIPfd/ADnHcb6nbp4XHMf59RN0fb8JFE9CI1UhxCXgktnsFfgbwN/mBHyHL7m+b3EE3+FRWfyvATOO4zxyHOc58K+Bbx7RZ59KHMf5ETJ43uSbwO+o499B/qMcC3tc34nBcZynjuP8TB2vA7rZ64n4Dl9yfUfCUQm/E5g3Hi9w8jruOsB/FULcEkL8neO+mD1IGd2LlpDFtU4aJ66Rqq/Z64n7Do+jGa1d3PP4huM4Pwf8VeB/U0PZE4sj52gnzRd74hqp1mj26nISvsPjakZ7VMJ/guzOpulSz50YHMd5ovZZ4PeR05OTxrKaG+o5YvaYr6cKx3GWHcfZcRznBfBbHPN3WKvZKyfoO9yrGe1RfIdHJfyfAleFED1CiPPA/wT84RF99r4IISJqgQUhRAT4JV7aBPTY+EPgO+r4O8AfHOO17EILSrFPI9VDv5aazV45Id/hy5rRGi87vO/QcZwj2YBfQa7szwL/8Kg+9xWv7Qrwudq+OAnXB/wecqhXRq6J/CqyXu6fAg+BPwESJ+z6/h9gEriDFNilY7y+byCH8XeQlQUn1P/gifgOX3J9R/Id2pBdi6UOsYt7FksdYoVvsdQhVvgWSx1ihW+x1CFW+BZLHWKFb7HUIVb4FksdYoVvsdQh/x3H01J88CIlPAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" } } ] } ] }