{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "accelerator": "GPU", "colab": { "name": "Impact_of_building_a_deeper_neural_network.ipynb", "provenance": [], "include_colab_link": true }, "hide_input": false, "kernelspec": { "display_name": "Python 3", "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.7.4" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "7e3e385d271e4f8ca736fe0da0be67c0": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_85ef40115e2446db918c8fb58d8298a5", "IPY_MODEL_a14ae0a36fb74cee9c702887b4e1bb72" ], "layout": "IPY_MODEL_5550477bbf9e4c55b5d509067f4c8b7f" } }, "5550477bbf9e4c55b5d509067f4c8b7f": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "85ef40115e2446db918c8fb58d8298a5": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "info", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d7835c3fcbc344d6929e9e276f5283e5", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_cd67e879a910462da5262779575d0f33", "value": 1 } }, "a14ae0a36fb74cee9c702887b4e1bb72": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ad775d32a59a4e52a1886a17b450e163", "placeholder": "​", "style": "IPY_MODEL_6986a69e9d1d4871bbd0c2bf8caf382f", "value": " 26427392/? [00:20<00:00, 6975829.22it/s]" } }, "cd67e879a910462da5262779575d0f33": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "initial" } }, "d7835c3fcbc344d6929e9e276f5283e5": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6986a69e9d1d4871bbd0c2bf8caf382f": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "ad775d32a59a4e52a1886a17b450e163": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2cbbd3dcb34146dc866525d958bacf0c": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_6d939043fe894743991520b97dd96da9", "IPY_MODEL_8b1f6ef2208b49a589cabedc4760969f" ], "layout": "IPY_MODEL_a412bc9ea39d4e1da0a50568f9ff7293" } }, "a412bc9ea39d4e1da0a50568f9ff7293": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6d939043fe894743991520b97dd96da9": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_97bbf22385ac423984249f6fb45ef9c8", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_d04a50b9b7154afb9b66453d12405dea", "value": 1 } }, "8b1f6ef2208b49a589cabedc4760969f": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_062f019e1a7d41f78ba39da29236f667", "placeholder": "​", "style": "IPY_MODEL_45d2be82486c4f4c855b6d3844387f6b", "value": " 32768/? [00:02<00:00, 13416.51it/s]" } }, "d04a50b9b7154afb9b66453d12405dea": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "initial" } }, "97bbf22385ac423984249f6fb45ef9c8": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "45d2be82486c4f4c855b6d3844387f6b": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "062f019e1a7d41f78ba39da29236f667": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5010491fbe1b4ed2bc8b422333c6164b": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_5e81fcbed9484c98ae98dca2b8a515f6", "IPY_MODEL_e6743f07e8a74738802f206fcfc76cb5" ], "layout": "IPY_MODEL_cd942030383742dcadfd703bd47dfea4" } }, "cd942030383742dcadfd703bd47dfea4": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5e81fcbed9484c98ae98dca2b8a515f6": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_8bca20deab3445e8be0fe4bac16abdca", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_27c1827603fd478f9dca8c8b4ad52bf6", "value": 1 } }, "e6743f07e8a74738802f206fcfc76cb5": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_889970c06edf4c26ae1c6561f8b8e21a", "placeholder": "​", "style": "IPY_MODEL_c550af41d5ae4be7b2d9094e15eda141", "value": " 4423680/? [00:01<00:00, 2311972.75it/s]" } }, "27c1827603fd478f9dca8c8b4ad52bf6": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "initial" } }, "8bca20deab3445e8be0fe4bac16abdca": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c550af41d5ae4be7b2d9094e15eda141": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "889970c06edf4c26ae1c6561f8b8e21a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "07ffb7aafa2e4a09ae10d1d7f74d3ac7": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_b29285a4ff1e481fbfaad8b20a559f25", "IPY_MODEL_318c5ef119774c9f9f3b685c824c3f31" ], "layout": "IPY_MODEL_b4603aa9e1ef48bdb151b5f7e68713df" } }, "b4603aa9e1ef48bdb151b5f7e68713df": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b29285a4ff1e481fbfaad8b20a559f25": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c61c295b6e564c689dba74e7d0819ab4", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_54fad4d3c539434fbb76904d4dd89e90", "value": 1 } }, "318c5ef119774c9f9f3b685c824c3f31": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_38de1f5fe92b4870926540527a31d879", "placeholder": "​", "style": "IPY_MODEL_281b03bf21ee499cb9d4588531cddbee", "value": " 8192/? [00:00<00:00, 15149.15it/s]" } }, "54fad4d3c539434fbb76904d4dd89e90": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "initial" } }, "c61c295b6e564c689dba74e7d0819ab4": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "281b03bf21ee499cb9d4588531cddbee": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "38de1f5fe92b4870926540527a31d879": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } } } } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "code", "metadata": { "id": "db6eHXhn_teE", "outputId": "1bcce1ac-5c74-4bf8-f113-a5d9ed560303", "colab": { "base_uri": "https://localhost:8080/", "height": 437, "referenced_widgets": [ "7e3e385d271e4f8ca736fe0da0be67c0", "5550477bbf9e4c55b5d509067f4c8b7f", "85ef40115e2446db918c8fb58d8298a5", "a14ae0a36fb74cee9c702887b4e1bb72", "cd67e879a910462da5262779575d0f33", "d7835c3fcbc344d6929e9e276f5283e5", "6986a69e9d1d4871bbd0c2bf8caf382f", "ad775d32a59a4e52a1886a17b450e163", "2cbbd3dcb34146dc866525d958bacf0c", "a412bc9ea39d4e1da0a50568f9ff7293", "6d939043fe894743991520b97dd96da9", "8b1f6ef2208b49a589cabedc4760969f", "d04a50b9b7154afb9b66453d12405dea", "97bbf22385ac423984249f6fb45ef9c8", "45d2be82486c4f4c855b6d3844387f6b", "062f019e1a7d41f78ba39da29236f667", "5010491fbe1b4ed2bc8b422333c6164b", "cd942030383742dcadfd703bd47dfea4", "5e81fcbed9484c98ae98dca2b8a515f6", "e6743f07e8a74738802f206fcfc76cb5", "27c1827603fd478f9dca8c8b4ad52bf6", "8bca20deab3445e8be0fe4bac16abdca", "c550af41d5ae4be7b2d9094e15eda141", "889970c06edf4c26ae1c6561f8b8e21a", "07ffb7aafa2e4a09ae10d1d7f74d3ac7", "b4603aa9e1ef48bdb151b5f7e68713df", "b29285a4ff1e481fbfaad8b20a559f25", "318c5ef119774c9f9f3b685c824c3f31", "54fad4d3c539434fbb76904d4dd89e90", "c61c295b6e564c689dba74e7d0819ab4", "281b03bf21ee499cb9d4588531cddbee", "38de1f5fe92b4870926540527a31d879" ] } }, "source": [ "from torchvision import datasets\n", "import torch\n", "data_folder = '~/data/FMNIST' # This can be any directory you want to \n", "# download FMNIST to\n", "fmnist = datasets.FashionMNIST(data_folder, download=True, train=True)\n", "tr_images = fmnist.data\n", "tr_targets = fmnist.targets" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw/train-images-idx3-ubyte.gz\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7e3e385d271e4f8ca736fe0da0be67c0", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "Extracting /root/data/FMNIST/FashionMNIST/raw/train-images-idx3-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw\n", "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw/train-labels-idx1-ubyte.gz\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2cbbd3dcb34146dc866525d958bacf0c", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "Extracting /root/data/FMNIST/FashionMNIST/raw/train-labels-idx1-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw\n", "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw/t10k-images-idx3-ubyte.gz\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5010491fbe1b4ed2bc8b422333c6164b", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "Extracting /root/data/FMNIST/FashionMNIST/raw/t10k-images-idx3-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw\n", "Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "07ffb7aafa2e4a09ae10d1d7f74d3ac7", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "\n", "\n", "Extracting /root/data/FMNIST/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw\n", "Processing...\n", "Done!\n", "\n" ], "name": "stdout" }, { "output_type": "stream", "text": [ "/usr/local/lib/python3.6/dist-packages/torchvision/datasets/mnist.py:469: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:141.)\n", " return torch.from_numpy(parsed.astype(m[2], copy=False)).view(*s)\n" ], "name": "stderr" } ] }, { "cell_type": "code", "metadata": { "id": "USu9lapK_520" }, "source": [ "val_fmnist = datasets.FashionMNIST(data_folder, download=True, train=False)\n", "val_images = val_fmnist.data\n", "val_targets = val_fmnist.targets" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "oaKX_Log_7Vq" }, "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "import numpy as np\n", "from torch.utils.data import Dataset, DataLoader\n", "import torch\n", "import torch.nn as nn\n", "device = 'cuda' if torch.cuda.is_available() else 'cpu'" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "7MkYWfNrzDsJ" }, "source": [ "### Model with 0 hidden layers" ] }, { "cell_type": "code", "metadata": { "id": "LZh0i54a_8zA" }, "source": [ "class FMNISTDataset(Dataset):\n", " def __init__(self, x, y):\n", " x = x.float()\n", " x = x.view(-1,28*28)/255\n", " self.x, self.y = x, y \n", " def __getitem__(self, ix):\n", " x, y = self.x[ix], self.y[ix] \n", " return x.to(device), y.to(device)\n", " def __len__(self): \n", " return len(self.x)\n", "\n", "from torch.optim import SGD, Adam\n", "def get_model():\n", " model = nn.Sequential(\n", " nn.Linear(28 * 28, 10)\n", " ).to(device)\n", "\n", " loss_fn = nn.CrossEntropyLoss()\n", " optimizer = Adam(model.parameters(), lr=1e-3)\n", " return model, loss_fn, optimizer\n", "\n", "def train_batch(x, y, model, opt, loss_fn):\n", " model.train()\n", " prediction = model(x)\n", " batch_loss = loss_fn(prediction, y)\n", " batch_loss.backward()\n", " optimizer.step()\n", " optimizer.zero_grad()\n", " return batch_loss.item()\n", "\n", "def accuracy(x, y, model):\n", " model.eval()\n", " # this is the same as @torch.no_grad \n", " # at the top of function, only difference\n", " # being, grad is not computed in the with scope\n", " with torch.no_grad():\n", " prediction = model(x)\n", " max_values, argmaxes = prediction.max(-1)\n", " is_correct = argmaxes == y\n", " return is_correct.cpu().numpy().tolist()" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "2pm_AtNh_9xO" }, "source": [ "def get_data(): \n", " train = FMNISTDataset(tr_images, tr_targets) \n", " trn_dl = DataLoader(train, batch_size=32, shuffle=True)\n", " val = FMNISTDataset(val_images, val_targets) \n", " val_dl = DataLoader(val, batch_size=len(val_images), shuffle=False)\n", " return trn_dl, val_dl" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "tr7aYJszAABu" }, "source": [ "@torch.no_grad()\n", "def val_loss(x, y, model):\n", " prediction = model(x)\n", " val_loss = loss_fn(prediction, y)\n", " return val_loss.item()" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "-QsGjZhYABEm" }, "source": [ "trn_dl, val_dl = get_data()\n", "model, loss_fn, optimizer = get_model()" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "KKq8CFkPACLw", "outputId": "8abc68ee-68a9-443b-f9ff-a4dea475ee35", "colab": { "base_uri": "https://localhost:8080/", "height": 108 } }, "source": [ "train_losses, train_accuracies = [], []\n", "val_losses, val_accuracies = [], []\n", "for epoch in range(5):\n", " print(epoch)\n", " train_epoch_losses, train_epoch_accuracies = [], []\n", " for ix, batch in enumerate(iter(trn_dl)):\n", " x, y = batch\n", " batch_loss = train_batch(x, y, model, optimizer, loss_fn)\n", " train_epoch_losses.append(batch_loss) \n", " train_epoch_loss = np.array(train_epoch_losses).mean()\n", "\n", " for ix, batch in enumerate(iter(trn_dl)):\n", " x, y = batch\n", " is_correct = accuracy(x, y, model)\n", " train_epoch_accuracies.extend(is_correct)\n", " train_epoch_accuracy = np.mean(train_epoch_accuracies)\n", " for ix, batch in enumerate(iter(val_dl)):\n", " x, y = batch\n", " val_is_correct = accuracy(x, y, model)\n", " validation_loss = val_loss(x, y, model)\n", " val_epoch_accuracy = np.mean(val_is_correct)\n", " train_losses.append(train_epoch_loss)\n", " train_accuracies.append(train_epoch_accuracy)\n", " val_losses.append(validation_loss)\n", " val_accuracies.append(val_epoch_accuracy)" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "X3SlttxNAXCM", "outputId": "ce4b9893-85de-4ede-d770-d9d53f8a3a38", "colab": { "base_uri": "https://localhost:8080/", "height": 337 } }, "source": [ "epochs = np.arange(5)+1\n", "import matplotlib.ticker as mtick\n", "import matplotlib.pyplot as plt\n", "import matplotlib.ticker as mticker\n", "%matplotlib inline\n", "plt.subplot(211)\n", "plt.plot(epochs, train_losses, 'bo', label='Training loss')\n", "plt.plot(epochs, val_losses, 'r', label='Validation loss')\n", "plt.gca().xaxis.set_major_locator(mticker.MultipleLocator(1))\n", "plt.title('Training and validation loss with no hidden layer')\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Loss')\n", "plt.legend()\n", "plt.grid('off')\n", "plt.show()\n", "plt.subplot(212)\n", "plt.plot(epochs, train_accuracies, 'bo', label='Training accuracy')\n", "plt.plot(epochs, val_accuracies, 'r', label='Validation accuracy')\n", "plt.gca().xaxis.set_major_locator(mticker.MultipleLocator(1))\n", "plt.title('Training and validation accuracy with no hidden layer')\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Accuracy')\n", "plt.gca().set_yticklabels(['{:.0f}%'.format(x*100) for x in plt.gca().get_yticks()]) \n", "plt.legend()\n", "plt.grid('off')\n", "plt.show()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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/PLL2b9/P6tWreKVV17hzjvvJDU1lc8//5zs7GxefPFFABYvXkxaWhoDBw5k8uTJfP/99xWv98ADDzBkyBAGDhzI5s2bA55ftKertusIjDGhue028G4SU18tDx+GuDhITYVHH/W7X4cOHRg2bBivv/46l1xyCXPnzuUnP/kJIkJubi4dOnTg8OHDnH322WzYsIFBgwbVmM7atWuZO3cu69ev59ChQwwZMoShQ4cCMH78eK677joA7r33Xp588kluvvlmxo0bx9ixY7niiiuqpHXw4EGys7NZvHgxffr04eqrr+ZPf/oTt912GwCdOnVi3bp1PP7448ycOZMnnnjC7/kFO111WVkZTz31VNinq7YagTGmSfBtHvJtFnrhhRcYMmQIaWlpbNy4sUozTnUrVqzgsssuo1WrVrRp04Zx48ZVPPfRRx8xYsQIBg4cSF5eHhs3bgyYny1bttCrVy/69OkDwDXXXMPy5csrnh8/fjwAQ4cOrZiozp+VK1cyadIkoObpqmfNmsWePXto3rw5GRkZPP300+Tk5PDhhx+GZYoOqxEYY0IT4Jd7qA6EMNfQJZdcwtSpU1m3bh379+9n6NChfPnll8ycOZPVq1fTvn17srOz/U4/XZvs7Gzmz5/P4MGDmTNnDvn5+XVKp1z5VNb1mcZ6+vTpXHzxxbz22mtkZmbyj3/8o2K66gULFpCdnc20adO4+uqr65VXqxEYY5qExMRERo8ezeTJkytqA/v27aN169a0bduW7du38/rrrwdMY+TIkcyfP58DBw5QUlLCq6++WvFcSUkJ3bp1o6ysrGLqaICkpCRKSkqOSqtv374UFBTw2WefAfC3v/2Ns846q07nFux01Z988klEpqu2GoExpsmYOHEil112WUUTUfm0zf369eOEE04gMzMz4PFDhgzhyiuvZPDgwXTp0oWMjIyK5x5++GGGDx9O586dGT58eMWX/1VXXcV1113HrFmzKjqJARISEnj66aeZMGEChw4dIiMjgxtvvLFO51V+L+VBgwbRqlWrKtNVL126lGbNmtG/f3/OPfdcFixYwO9+9zvi4+NJTEwMyw1sbBpq45eVV2iO5fKyaagbB5uG2hhjTERYIDDGmBhngcAYY2KcBQJjTFCaWn9irKrL/8kCgTGmVgkJCRQXF1swaORUleLiYhISEkI6zoaPGmNqlZycTFFR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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } }, { "output_type": "display_data", "data": { "image/png": "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O09EvgROAoYCzXB3SFdpvp3fWjGVo9zcguqfYBeBi/ZvX69ewUE/Obl4C6BWrWxQ+ggr3GCDiDXYGD16NLGxsaxcuZJevXoxfPhwxo0bR05ODvXq1eOVV16hY8eOpKam8vDDDzN//nwmTZpEeno6mzZtIj09nfHjx3PLLbcAEB8fT1ZWFqmpqUyaNIlmzZqxZs0akpOTmT59OiLCf/7zH2699Vbq169Pr1692LRpE++//36huNLS0rjqqqs44O2bTz/9ND17uo4iHnnkEaZPn06tWrXo168fDz/8MBs2bGDMmDHs3r2bmJgYZs2axU8//cSUKVPyt33TTTeRkpLC6NGjSUhIYNiwYXz00UfceeedZGZmMnXqVA4dOsTJJ5/M66+/TlxcHLt27WLMmDFs2rQJgOeee4758+fTpEkTxo8fD8DEiRNp3rw548aNK78vpgRB//NEpAOuJ9URwB7gTQBVrbi2ehE2cqR7pKZ+XH2bbJa3nBxYupSW8+bBwoWFE8DWrQWji/k0beoO9B07woUXFmv+STXsJqKqqcgGG1u3bmXp0qXExMSwf/9+lixZQu3atVmwYAF//etfmTOn+G/PdevWsXjxYjIzM+nYsSNjx44t1lRz5cqVfPfdd7Rq1YpevXrx2WefkZKSwg033MAnn3xC+/btGTEicMfQzZs356OPPiI2NpYff/yRESNGsHz5cubNm8e///1vvvzyS+Li4vjFu7dl5MiR3H333QwaNIicnBzy8vL46aefSvzcTZs2ZcUKd3tXRkYGf/rTnwC45557eOmll7j55pu55ZZbOO+883jnnXfIzc0lKyuLVq1aMXjwYMaPH09eXh4zZ85k2bJlYZd7WZX002wdsAQYoKobIH98B1PTZGfDvHkwZw689x5kZbmbYmrVKqj+6dWr+K//tm3dBWJTqVVkg43LL788v4pl3759XH311fz444+ICIcPB769qn///tStW5e6devSvHlzdu3aResi41P36NEjf163bt1IS0sjPj6eE088Mb9Z54gRI5g6tfi9uocPH+amm25i1apVxMTEsH79egAWLFjANddcQ5xXhdmkSRMyMzPZtm0bgwa5jqhDvVdj2LCCe4vXrFnDPffcw969e8nKyuIPf3B9ki5atIjXXnsNgJiYGBo1akSjRo1o2rQpK1euZNeuXSQlJdG0Am+uLClBDMaN37BYROYDM3F3UpuaIDMTPvgAZs92ySE72w1aMnw4XHopn2dmctaQIdVviMkaqCIbbNT3+8Fw77330qdPH9555x3S0tKCnsXX9euePCYmhiNFz1JDXCaYxx9/nBYtWvDNN9+Ql5dXphv0ateuTZ7fvTNFb1D0/9yjR49m7ty5JCYmMm3aNFJLGeznuuuuY9q0aezcuZNrr7027NiORtARQlR1rqoOBzoBi3FdbjQXkedE5MKKCtBUoF9/hddeg4EDXcugESPgs89g9GhYtMh1Mf3CC9C/PwePP96SQzUxeXLx6/wV0WBj3759nHDCCQBMmzat3LffsWNHNm3aRFpaGgBvvvlm0DhatmxJrVq1eP3118n1Wsn9/ve/55VXXiHbq3/75ZdfaNCgAa1bt2bu3LkAHDx4kOzsbNq1a8fatWs5ePAge/fuZeHChUHjyszMpGXLlhw+fJgZM2bkz+/bty/PPfcc4C5m79u3D4BBgwYxf/58vvrqq/yzjYpS6hBSqnpAVd/wxqZujetT6a6IR2Yqxp498NJLrnloixZw9dWwciWMGQNLlrjrCs88A3362MXiamrkSJg61dUKiri/U6dGvsHGnXfeyV/+8heSkpLC+sUfqnr16vHss89y0UUXkZycTIMGDWgUYIyMG2+8kVdffZXExETWrVuX/2v/oosuYuDAgaSkpNCtWzemTJkCwOuvv85TTz3F6aefTs+ePdm5cydt2rRh6NChdOnShaFDh5KUlBQ0rr/97W+ceeaZ9OrVi06dOuXPf/LJJ1m8eDFdu3YlOTmZtWvXAnDMMcfQp08fhg4dWvEtoFS1WjySk5O1rBYvXlzmdaukHTtUn31WtW9f1ZgYVVBt3171jjtUv/hCNTe31E3UuDI7ShVdXmvXrq3Q9ytv+/fvL5ftZGZmqqpqXl6ejh07Vh977LFy2W5Fys3N1cTERF2/fn3QZUItr0D7BbBcgxxX7SdhTbF1K7z9trum8Omn7p6Ejh3h7rthyBDo1s1aE5lq54UXXuDVV1/l0KFDJCUlccMNN0Q7pLCsXbuWAQMGMGjQIE455ZQKf39LENXZ5s2u5dGcOfDFF25ely5w//1w2WXuzmNLCqYamzBhAhMmVN3Gl507d86/LyIaLEFUN+vXu4QwezZ47a7p3t1dcRwyxJ01GGNMCCxBVHWqblD72bNdYvj2Wzf/zDPh73+HwYPhxBOjG6MxpkqyBFEVqcKqVQVnCj/84KqKzj4bnnjCJYU2baIdpTGmirMEUVWowldfFZwpbNrk7mTu3RvGjYNBg+D4Kt+HojGmEin1PggTRXl57ka1CRNc4/Qzz4THH4cOHdwNazt3uv6Qxo615GAqlT59+vDf//630LwnnniCsWPHBl2nd+/e+IYNHjJkCHv37i22zKRJk/LvRwhm7ty5+fcQANx3330sWLAgnPCNx84gKpsjR9wNanPmuGapO3ZA3bquo7uHHoKLL3bDWxpTiY0YMYKZM2cWuvN35syZPProo8Jusk0AAAnsSURBVCGtP2fOnDIPOTp37lwGDBhA586dAXjwwQfLtJ1oqizdgtsZRGVw+DD897+uj+WWLeH88+Hll6FnT3jjDfj5Z3j3XRg1ypKDqRIuu+wyPvjgAw4dOgS4LrW3b9/OOeecw9ixY0lJSeG0007j/vvvD7h+ly5d2LNnDwCTJ0+mQ4cOnH322fzwww/5y7zwwgucccYZJCYmMmTIELKzs1m6dCnvvvsud9xxB926dWPjxo2MHj2a2bNnA7Bw4UKSkpLo2rUr1157LQcPHgQgISGB+++/n+7du9O1a1fWrVtXLKa0tDTOOeccunfvTvfu3QuNR/HII4/QtWtXEhMTufvuuwHYsGEDF1xwAYmJiXTv3p2NGzeSmprKgAED8te76aab8rsZSUhI4K677qJ79+7MmjUr4OcD2LVrF4MGDSIxMZHExESWLl3KQw89xBNPPJG/3YkTJ/Lkk0+G96UFYGcQ0XLwIHz0kbum8O67rh+k+HgYMMDdo3DRRdYTqikf48e7Rg3lqVs31yAiiCZNmtCjRw/mzZvHJZdcwsyZMxk6dCgiwuTJk2nSpAm5ubn07duX1atXc/rppwfcztdff83MmTNZtWoVR44coXv37iQnJwMwePDggN1mDxw4kAEDBnDZZZcV2lZOTg6jR49m4cKFdOjQgVGjRvHcc8/lj7XQrFkzVqxYwbPPPsuUKVN48cUXC61fmbsFb9iwIaNGjSr3bsEtQVSk7GyYP7+g2+zMTGjUCC65xN2jcOGFUIaeJI2pjHzVTL4E8dJLLwHw1ltvMXXqVI4cOcKOHTtYu3Zt0ASxZMkSBg0alN/l9sCBA/NfC9ZtdjA//PAD7du3p0OHDgBcffXVPPPMM/kJYvDgwQAkJyfz9ttvF1u/MncLXqtWrYh0C24JItKysly32XPmuL/Z2W6QnKFD3ZnC+edDCePzGnPUSvilH0mXXHIJEyZMYMWKFWRnZ5OcnMzmzZuZMmUKX331FY0bN2b06NHFusYOVbjdZpfG12V4sO7Ca2K34HYNIhL27YPp0+HSS1232cOHwyefuJ5SFyxwrY9efNFVI1lyMNVUfHw8ffr04dprr80fzW3//v3Ur1+fRo0asWvXLubNm1fiNs4991zmzp3Lb7/9RmZmJu+9917+a8G6zW7QoAGZmZnFttWxY0fS0tLYsGED4HplPe+880L+PDWxW3BLEOUlI8NdWO7f3yWFq66C5cvdhedPPoFt2+DZZ6FvX+s229QYI0aM4JtvvslPEImJiSQlJdGpUyeuuOIKevXqVeL63bt3Z9iwYSQmJtKvXz/OOOOM/NeCdZs9fPhw/v73v5OUlMTGjRvz58fGxvLKK69w+eWX07VrV2rVqsWYMWNC/iw1slvwYN28VrVHVLr73rlT9fnnVS+4oKDb7IQE1dtvV/3885C6za6qrLvv8Fh33+Epr+6+a4r9+/eH1C24dfcdadu2ufsT5sxxZwaqcMopcOed7ppCUpL1kGqMqVDr1q1j2LBh5d4tuCWIUGzZUtDv0eefu3mnnQb33uuSQpculhSMMVHTqVOniHQLbgkimB9/LBhLwbv9n27d3N3MQ4aAX52gMcZUR5Yg/K1dW3CmsHq1m9ejBzz6qOsh9aSTohufMWFQVcTObI3HXW4IjyWITZtIePlluPFG+P57V1XUs6frFG/wYGjbNtoRGhO22NhYMjIyaNq0qSUJg6qSkZER9r0bliBWr6bdjBlw3nnw5z+7brNbtYp2VMYcldatW7N161Z2794d7VDKJCcnp0w3otVUoZRXbGwsrVu3Dmu7liD69WPp7Nn08m6JN6Y6qFOnDu3bt492GGWWmppa4j0CprBIlZfdKFe3Loeth1RjjCnGEoQxxpiALEEYY4wJSMrS9KkyEpHdwJYyrt4M2FOO4dQEVmbhsfIKj5VXeI6mvNqp6nGBXqg2CeJoiMhyVU2JdhxViZVZeKy8wmPlFZ5IlZdVMRljjAnIEoQxxpiALEE4U6MdQBVkZRYeK6/wWHmFJyLlZdcgjDHGBGRnEMYYYwKq0QlCRF4WkZ9FZE20Y6kKRKSNiCwWkbUi8p2IjIt2TJWZiMSKyDIR+cYrrweiHVNVICIxIrJSRN6PdiyVnYikici3IrJKRJaX+/ZrchWTiJwLZAGvqWqXaMdT2YlIS6Clqq4QkQbA18Clqro2yqFVSuK6Ua2vqlkiUgf4FBinql9EObRKTURuBVKAhqo6INrxVGYikgakqGpE7hmp0WcQqvoJ8Eu046gqVHWHqq7wnmcC3wMnRDeqyssb8jfLm6zjPWruL7IQiEhroD/wYrRjMTU8QZiyE5EEIAn4MrqRVG5edckq4GfgI1W18irZE8CdQF60A6kiFPhQRL4WkevLe+OWIEzYRCQemAOMV9X90Y6nMlPVXFXtBrQGeoiIVWUGISIDgJ9V9etox1KFnK2q3YF+wJ+9avNyYwnChMWrS58DzFDVt6MdT1WhqnuBxcBF0Y6lEusFDPTq1WcC54vI9OiGVLmp6jbv78/AO0CP8ty+JQgTMu+i60vA96r6WLTjqexE5DgROdZ7Xg/4PbAuulFVXqr6F1VtraoJwHBgkapeGeWwKi0Rqe81FkFE6gMXAuXaIrNGJwgR+RfwOdBRRLaKyB+jHVMl1wu4CvfLbpX3+J9oB1WJtQQWi8hq4CvcNQhrumnKSwvgUxH5BlgGfKCq88vzDWp0M1djjDHB1egzCGOMMcFZgjDGGBOQJQhjjDEBWYIwxhgTkCUIY4wxAVmCMKYUIpLr16x3lYjcXY7bTrDehE1lVTvaARhTBfzmdZdhTI1iZxDGlJHXF/+jXn/8y0TkZG9+gogsEpHVIrJQRNp681uIyDve+BDfiEhPb1MxIvKCN2bEh95d14jILd7YG6tFZGaUPqapwSxBGFO6ekWqmIb5vbZPVbsCT+N6IgX4B/Cqqp4OzACe8uY/BXysqolAd+A7b/4pwDOqehqwFxjizb8bSPK2MyZSH86YYOxOamNKISJZqhofYH4acL6qbvI6Mdypqk1FZA9uYKXD3vwdqtpMRHYDrVX1oN82EnBdcJziTd8F1FHVh0RkPm5Aq7nAXL+xJYypEHYGYczR0SDPw3HQ73kuBdcG+wPP4M42vhIRu2ZoKpQlCGOOzjC/v597z5fieiMFGAks8Z4vBMZC/kBCjYJtVERqAW1UdTFwF9AIKHYWY0wk2S8SY0pXzxsVzme+qvqaujb2ems9CIzw5t0MvCIidwC7gWu8+eOAqV6vwbm4ZLEjyHvGANO9JCLAU96YEsZUGLsGYUwZRXrAeGOizaqYjDHGBGRnEMYYYwKyMwhjjDEBWYIwxhgTkCUIY4wxAVmCMMYYE5AlCGOMMQFZgjDGGBPQ/wdKZJlZVQLd6QAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "frZEg63SAc7K" }, "source": [ "" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "WHDksDDgBgp3" }, "source": [ "### Model with 1 hidden layer" ] }, { "cell_type": "code", "metadata": { "id": "XyIYRbkoAdTo" }, "source": [ "def get_model():\n", " model = nn.Sequential(\n", " nn.Linear(28 * 28, 1000),\n", " nn.ReLU(),\n", " nn.Linear(1000, 10)\n", " ).to(device)\n", "\n", " loss_fn = nn.CrossEntropyLoss()\n", " optimizer = Adam(model.parameters(), lr=1e-3)\n", " return model, loss_fn, optimizer" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "-6ZPcquEAnOt" }, "source": [ "trn_dl, val_dl = get_data()\n", "model, loss_fn, optimizer = get_model()" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "1SHVfTnqApUa", "outputId": "40ed576d-98b2-4ab1-9646-7311e265d335", "colab": { "base_uri": "https://localhost:8080/", "height": 108 } }, "source": [ "train_losses, train_accuracies = [], []\n", "val_losses, val_accuracies = [], []\n", "for epoch in range(5):\n", " print(epoch)\n", " train_epoch_losses, train_epoch_accuracies = [], []\n", " for ix, batch in enumerate(iter(trn_dl)):\n", " x, y = batch\n", " batch_loss = train_batch(x, y, model, optimizer, loss_fn)\n", " train_epoch_losses.append(batch_loss) \n", " train_epoch_loss = np.array(train_epoch_losses).mean()\n", "\n", " for ix, batch in enumerate(iter(trn_dl)):\n", " x, y = batch\n", " is_correct = accuracy(x, y, model)\n", " train_epoch_accuracies.extend(is_correct)\n", " train_epoch_accuracy = np.mean(train_epoch_accuracies)\n", " for ix, batch in enumerate(iter(val_dl)):\n", " x, y = batch\n", " val_is_correct = accuracy(x, y, model)\n", " validation_loss = val_loss(x, y, model)\n", " val_epoch_accuracy = np.mean(val_is_correct)\n", " train_losses.append(train_epoch_loss)\n", " train_accuracies.append(train_epoch_accuracy)\n", " val_losses.append(validation_loss)\n", " val_accuracies.append(val_epoch_accuracy)" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "OS-HLAriArIc", "outputId": "6674e504-54f6-4ed1-f8b9-276586dd2fe6", "colab": { "base_uri": "https://localhost:8080/", "height": 337 } }, "source": [ "epochs = np.arange(5)+1\n", "import matplotlib.ticker as mtick\n", "import matplotlib.pyplot as plt\n", "import matplotlib.ticker as mticker\n", "%matplotlib inline\n", "plt.subplot(211)\n", "plt.plot(epochs, train_losses, 'bo', label='Training loss')\n", "plt.plot(epochs, val_losses, 'r', label='Validation loss')\n", "plt.gca().xaxis.set_major_locator(mticker.MultipleLocator(1))\n", "plt.title('Training and validation loss with 1 hidden layer')\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Loss')\n", "plt.legend()\n", "plt.grid('off')\n", "plt.show()\n", "plt.subplot(212)\n", "plt.plot(epochs, train_accuracies, 'bo', label='Training accuracy')\n", "plt.plot(epochs, val_accuracies, 'r', label='Validation accuracy')\n", "plt.gca().xaxis.set_major_locator(mticker.MultipleLocator(1))\n", "plt.title('Training and validation accuracy with 1 hidden layer')\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Accuracy')\n", "plt.gca().set_yticklabels(['{:.0f}%'.format(x*100) for x in plt.gca().get_yticks()]) \n", "plt.legend()\n", "plt.grid('off')\n", "plt.show()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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U089lcLCQg4cOEBOTg433HADU6dOZdKkSaSmppKdnc306dMpKSnh/PPPJyMjo0F5EyprDjLGhFWwGzEjcYOm/4iav/jFLxg/fjxbt27lhRdeCNpNMjExsfx1QkICpaWl9dqmIebMmcN9993HoUOHyMnJYfv27YwdO5Y1a9bQq1cvcnNzeeSRR8L6nsFYEDDGhNX8+e6GTH+NcYPm/v376dWrFwAPPfRQ2I8/YMAAPv30U/Lz8wF44oknat3n5JNPZql3MSQvL4+uXbvSvn17PvnkE4YMGcItt9xCdnY227dvp6CggO7du3PllVdyxRVXsHnz5rB/hupYEDDGhFXgDZo02g2aN998M7feeiuZmZlhP3MHaNOmDYsXL+ass85ixIgRpKSk0KFDhxr3mTdvHps2bWLo0KHMmTOHhx9+GICFCxcyePBghg4dSqtWrTj77LPJy8tj2LBhZGZm8sQTT3D99deH/TNUp8k9YzgrK0vr+jwBHxu/vG4sv+qmOefXBx98wPHHHx/WYzbFYSOKi4tJTk5GVbn22mvp168fs2fPbrT3DzXPqvu+RGSTqlbpK2s1AWOMCdG9995LRkYGgwYNYv/+/Vx99dXRTlKDWe8gY4wJ0ezZsxv1zL8xWE3AGGPimAUBY4yJYxYEjDEmjlkQMMaYOGZBwBgT88aPH8/LL78csGzhwoVcc801QfcZN24cvu7k55xzDvv27auyzbx581iwYEGN7718+XLef//98vnbb7+dV199tS7Jr1asDDltQcAYE/OmTJnCsmXLApYtW7YspEHcwI3+2bFjx3q9d+UgcMcdd3D66afX61ixyIKAMSbmTZ48mRUrVpQ/QCY/P5/PP/+ck08+mWuuuYasrCwGDRrE3Llzq90/PT2dr776CoD58+fTv39/TjrppPLhpsHdA5Cdnc2wYcO48MILOXjwIOvXr+f555/npptuIiMjg08++YTc3FyefvppAF577TUyMzMZMmQI06dP58iRI+XvN3fuXIYPH86QIUPYvn17jZ8vmkNO230Cxpi6mTULvAe8NESbsjLwRgAlIwMWLgy6befOnRk5ciQvvfQS5513HsuWLePiiy9GRJg/fz6dO3emrKyM0047jXfffZehQ4dWe5xNmzaxbNkytmzZQmlpKcOHD2fEiBEATJo0iSuvvBKAn//859x///389Kc/5dxz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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } }, { "output_type": "display_data", "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAACgCAYAAAAWy/vJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2deXwURfbAvy/hSALhFuQQIiJ4hZAEwQUREFxlQRREDqOCqAie+NtVcUXRVVxXWQ+8dlEBBRRP8FhR5PLCgxsF8QDCIaecCWdI3u+P6oQhzCSTkGEm5H0/n/5Md3VV9evqmn5d9apeiapiGIZhGPmJCrcAhmEYRmRiCsIwDMPwiykIwzAMwy+mIAzDMAy/mIIwDMMw/GIKwjAMw/CLKYhiIiLTRKR/SccNJyKSLiKdQ5CvikgTb/8/InJ/MHGLcZ00EZleXDmN4BCRdiLycwHnE7znWC4E1y4wbxH5u4i8XED6gHVcRDqIyPqSkjVf3sWu1+GkxB9gJCMimT6HccABINs7vklVJwWbl6p2CUXcEx1VHVwS+YhIArAaKK+qh7y8JwFBP0OjeKjql0Cz3GMRSQduUNUZxclPRDoCDwApwA5VTTgG2R4tblrjaMpUC0JVK+duwFrgUp+wvBdLKL58DKO4lIH6uAcYC9wVbkFOJEQk+ljzKFMKIhC5TUsRuUdENgHjRKS6iHwkIltFZIe338AnzRwRucHbHyAiX4nIKC/uahHpUsy4p4rIFyKSISIzROR5EZkYQO5gZHxYRL728psuIrV8zl8jImtEZJuI3FdA+bQWkU2+FU5EeojIUm+/lYh8IyI7RWSjiDwnIhUC5DVeRB7xOb7LS7NBRAbmi9tVRBaJyG4RWSciD/qc/sL73SkimSLyp9yy9UnfRkTmicgu77dNsGVTxHKuISLjvHvYISJTfc5dJiKLvXtYKSKXeOFHdHWIyIO5z9mnG+V6EVkLzPLC3/aewy6vjpztkz5WRP7tPc9dXh2LFZH/icht+e5nqYj08HOfr4rIX739+p4Mt3jHp4nIdhGJEp+uGBGZADQEPvSew90+WaaJyFoR+aOg+qWq36vqBGBVoDh+8Ju3bzl6xwHruFc+471nthw4N9/5eiLyrvfcV4vI7fmu85aIvObVn2Ui0jIYwQuq14U9LxE5Q0Q+857FzyLS2yfeeBF5UUQ+FpE9QMdg5CkIUxCHORmoATQCBuHKZpx33BDYBzxXQPrWwM9ALeBx4BURkWLEfR34HqgJPAhcU8A1g5HxKuA6oDZQAfgbgIicBbzo5V/Pu14D/KCq3+G+8i7Ml+/r3n42cKd3P38COgE3FyA3ngyXePJcBJwO5O8b3gNcC1QDugJDRORy79wF3m81rwX4Tb68awD/A0Z79/Yk8D8RqZnvHo4qGz8UVs4TcF2WZ3t5PeXJ0Ap4DfdlXM2TOT1QefihPXAmcLF3PA1XTrWBhRzZnTYKSAXa4Orx3UAO8CpwdW4kEUkC6uPKJj+fAx18rr2Kw+XcHvhSVXN8E6jqNRzZGn/c5/T5uK6oTsADInJmkPcdDIXmHUQdHwGc5m0XA/190kYBHwJLcOXVCRgqIhf7pO8OTMY92w8o+P3gS0H1OuDzEpFKwGe4/11toC/wgnefuVwFjATiga84VlS1TG64P2pnb78DcBCIKSB+C1z/aO7xHFy/K8AA4Defc3GAAicXJS7u5XMIiPM5PxGYGOQ9+ZNxuM/xzcAn3v4DwGSfc5W8MugcIO9HgLHefjyukjcKEHcoMMXnWIEm3v544BFvfyzwmE+8pr5x/eT7NPCUt5/gxS3nc34A8JW3fw3wfb703wADCiubopQzUBf3Iq7uJ95/c+UtqP55xw/mPmefe2tcgAzVvDhVcQpsH5DkJ14MsAM43TseBbwQIM/TvLhRwH+Am4D13rlXgf/z+b+sL+BecuVv4BP2PdC3kHLtDKQXEqfAvPOVY4F1HKcAL/E5P8jnflsDa/Nd+15gnM91ZvicOwvYV4DcwdbrgM8L6INT0vnr2Aif/9ZrwdThYDdrQRxmq6ruzz0QkTgR+a/XPN2N69KoJoH79Tbl7qjqXm+3chHj1gO2+4QBrAskcJAybvLZ3+sjUz3fvFV1D7At0LVwXy09RaQi0BNYqKprPDmaiut22eTJ8SiuNVEYR8gArMl3f61FZLbXxN8FDA4y39y81+QLW4P7GsslUNkcQSHlfArume3wk/QUYGWQ8vojr2xEJFpEHhPXTbWbwy2RWt4W4+9aXp1+E7ja+yruh2vxHIWqrsQp/hZAO+AjYIOINMO1ID4vovxBlW8xCSbvwup4QfWvEVBPXLfpThHZCfwdqFOADDEShL2ooHpdyPNqBLTOJ1Ma7uMyl4Dvi+JgCuIw+d3a/hXXhG2tqlU43NQO1G1UEmwEaohInE/YKQXEPxYZN/rm7V2zZqDIqroc9wfqwpHdS+Ca8StwXz1VcH+kIsuAa0H58jqu6X6KqlbFfdXm5luYG+INuD+ULw2B34OQKz8FlfM63DOr5ifdOtxXuT/24FqPuZzsJ47vPV4FXIb7yq6K+5LOleEPYH8B13oV9yLpBOzVfN1x+fgc6AVUUNXfveP+QHVgcYA0keoSurA6XlD9WwesVtVqPlu8qv6lBOQqqF5D4Oe1Dvg8n0yVVXWIT9oSfRamIAITj2u27/T6s0eE+oLeF/l84EERqSAifwIuDZGM7wDdROR8cQblf1B4fXgduAP3gnw7nxy7gUwROQMY4ietP94CBojIWd6fN7/88biv8/1ef/5VPue24rp2GgfI+2OgqYhcJSLlRKQPrhvgoyBlyy+H33JW1Y0428AL4ozZ5UUkV4G8AlwnIp3EGXfre+UD7mXb14vfEvdSLkyGA7gv4DhcKy1Xhhxcd92TnmE1WpzRvqJ3/htcWf2bAK0HHz4HbuXwIIA53vFXqpodIM1mAj+HQvHKJgYo7w4lRgIMcigihdXxt4B7vefWAPA1Dn8PZIgbuBLrlek5InKEIbuYFFSvC3peH+Hq9DVevSkvIueWsG3nCExBBOZpIBb3dfYt8Mlxum4aztC7Ddfv/ybuxeCPYsuoqsuAW3Av/Y24fs/CJgm9getqmKWqf/iE/w1XyTOAlzyZg5FhmncPs4DfvF9fbgb+ISIZuP7kt3zS7sUZ4772mtvn5ct7G9AN9/W/DWe07ZZP7mAprJyvAbJwragtOBsMqvo9zgj+FLAL9/LNbdXcz+E+/4c4skXmj9dwLbjfgeWeHL78DfgBmAdsB/7Fkf/v14BEnE2rID7HvcByFcRXOIX0RcAU8E9guPccAhn6C+ICnAL+mMODAI55wmMQdfwhXJmu9q43wSdtNq7+tPDO/wG8jGu9HSsB67UPRz0vVc0A/owzTm/AdXH9C6hYAjL5RTzjhhGhiMibwApVDXkLxjhxEZFrgUGqen64ZTEKJ1Kel7UgIgyvyXia1+y+BNfvPLWwdIYRCK/77mZgTLhlMQonkp6XKYjI42Rcv28mbgz/EFVdFFaJjFKLN25/K85OUFg3lhFmIu15WReTYRiG4RdrQRiGYRh+MQVhGIZh+CWkXiJF5A7gRtwkkJdU9WlvHPmbuIk+6UBvVd0hIlfgxilvBy5X1W0ichrwqKr2KexatWrV0oSEhGLJuWfPHipVqlSstGUVK7OiYeVVNKy8isaxlNeCBQv+UNWT/J4sSb8d+XyEnAP8iBtDXQ6YATTBOacb5sUZBvzL25/jxb0auM0LewPPJ0lhW2pqqhaX2bNnFzttWcXKrGhYeQXHxImqjRqpiuRoo0bu2CicY6lfwHwNgy+mM4HvVHWvugVdPsf58LkMN5Uc7zfXi2EObsJHHJAlIu2ATar6awhlNAwjQpg0CQYNgjVrQFVYs8YdT7IloMJGyEYxedO/38fNCt4HzMS5kbhGVat5cQTnFbOaiFwEPIabIXg1zpVDX1XdXsA1BuE8MFKnTp3UyZMnF0vWzMxMKlcuST9iJz5WZkXDyqtw+vY9j82bY44Kr1NnP5Mn5584bvhyLPWrY8eOC1TV71oWIR3mKiLX4yZ87AGW4VxGDMhVEF6cHapaPV+6a3E+7b/FuRDYAdyhR3o5PYKWLVvq/PnziyXnnDlz6NChQ7HSllWszIqGlVfhREWBv9eRCOTkHB1uHOZY6peIBFQQIR3FpKqvqGqqql6Ae8n/AmwWkbqeYHVxvmt8hY3D+fV/HucrpT/OH0xaKGU1DCO8NMzvy7eQcCP0hFRBiEht77chzv6Q6+Y2d+Wm/rhuKF/uAkarahbOQZri7BNxGIZxwjJyJMTl+5fHxblwIzyEejH0d8Ut8ZgF3KKqO0XkMeAtr/tpDeC7pmo9oJWqPuQFPYvzTrmTw8ZswzBOQNK8PoL77oO1a5WGDYWRIw+HG8efkCoIVW3nJ2wbbiEMf/E34NZozT1+myPXHTAM4wQmLc1tc+Z8bjabCMBmUhuGYRh+MQVhGIZh+MUUhGEYhuEXUxCGYRiGX0xBGIZhGH4xBWEYhmH4xRSEYRiG4RdTEIZhGIZfTEEYhmEYfjEFYRiGUUqZNAkSEuDCC9uTkFDya2eE2heTYRiGEQJyF1jauxfg8AJLUHL+q6wFYRiGUQq5775c5XCYvXtdeElhCsIwDKMUsnZt0cKLgykIwzCMUsjxWGDJFIRhGEYp5HgssGQKwjAMoxSSlgZjxkCjRiCiNGrkjktygSVTEIZhGKWUtDRIT4dZsz4nPb3kV98zBWEYhmH4xRSEYRiG4ZdCFYSIXCoipkgMwzDKGMG8+PsAv4rI4yJyRqgFMowTiVC7QjCMUFKoglDVq4FkYCUwXkS+EZFBIhIfcumMiMNeeMGT6wphzRpQPewKwcrMKC0E1XWkqruBd4DJQF2gB7BQRG4LoWxGhGEvvKJxPFwhGEYoCcYG0V1EpgBzgPJAK1XtAiQBfw2teEYkYS+8onE8XCEYRigJxpvrFcBTqvqFb6Cq7hWR60MjlhGJFPWFl5WVxfr169m/f3/ohIpgPv0UsrOPDo+Ohp9+Ov7yRAIxMTE0aNCA8uXLh1sUIwiCURAPAhtzD0QkFqijqumqOrOghCJyJ3ADoMAPwHVAW+AJXOslExigqr953VU3AWuBy1X1oIicD1yhqncW+c6MEqdhQ9e95C/cH+vXryc+Pp6EhAREJLTCRSC1a7vyysk5HBYV5Wa+1qwZPrnChaqybds21q9fz6mnnhpucYwgCMYG8TbgU8XJ9sIKRETqA7cDLVX1HCAa6Au8CKSpagvgdWC4lyQNaA7MBS4W90a5H3g4uFsxQk1Rfb/s37+fmjVrlknlAE4JNGoEFSoAKBUqlF3lACAi1KxZs8y2KEsjwSiIcqp6MPfA268QZP7lgFgRKQfEARtwrYkq3vmqXhiA4GwccUAWcDUwTVW3B3ktI8QUx/dLWVUOudSsCc2bQ7NmmTRvXnaVQy4F1ocVK2DoUKhXj+Z/+xtMngymTMKKqGrBEUQ+A55V1Q+848uA21W1U6GZi9wBjAT2AdNVNU1E2gFTvbDdwHmqultErgH+D1gGDAHeBy5W1awC8h8EDAKoU6dO6uTJkwsTyS+ZmZlUrly5WGnLKsGUWdWqVWnSpMlxkuhotm3bRvfu3QHYvHkz0dHR1KpVC4DZs2dToULg75yFCxfyxhtv8MQTTxR4jc6dOzNjxoxCZcnOziY6OroI0p+4/Pbbb+zatQsAOXSIWl99Rb0PPqD6okXklCvH9tatifv1V+K2bCErPp7NnTuz8S9/YU8Y61KkcyzvsI4dOy5Q1ZZ+T6pqgRtwGvAtzjawDtcF1CSIdNWBWcBJuJbBVFyr4D2gtRfnLuBlP2kfAC4HuuOG1z4FRBV0vdTUVC0us2fPLnbaskowZbZ8+fIi5TlxomqjRqoi7nfixGKJ5pcRI0boE088cURYVlZWyV2gEHbv3n3crlUYhw4dCuv1ly9frrp2rerw4aonn6wK7oE/+qjqpk2qqjp75kzVzz5T7dtXtWJFFyc1VfX551V37Air/JHIsbzDgPka4L0azES5lap6HnAWcKaqtlHV34JQTJ2B1aq6VV0r4D2cgTpJVb/z4rwJtPFNJCL1cENpp+KG0fYBdgKFtliM0suRcywI2RyLAQMGMHjwYFq3bs3dd9/N999/z5/+9CeSk5Np06YNP//8MwBz5syhW7duADz44IMMHDiQDh060LhxY0aPHp2XX+5X25w5c+jQoQO9evXijDPOIC0tLfdjh48//pjU1FRSU1O5/fbb8/L1JT09nXbt2pGSkkJKSgpz587NO/evf/2LxMREkpKSGDZsGOC+wjt37kxSUhIpKSmsXLnyCJkBbr31VsaPHw9AQkIC99xzDykpKbz99tu89NJLnHvuuSQlJXHFFVew1xu/vHnzZnr06EFSUhJJSUnMnTuXBx54gKeffjov3/vuu49nnnmm6IWvCrt2wZYtbrblyJGQmgoffQQrV8K990KdOi5uVBR07gxvvAEbNsCzz7ohYbfcAnXrwtVXw+zZR44AMEqcYEYxISJdgbOBmNw+RFX9RyHJ1gLniUgcrjupEzAfuFJEmqrqL8BFQP4Bfw/jWhAAsTibRQ7ONmGcoBQ0x6KkXRivX7+euXPnEh0dze7du/nyyy8pV64cM2bM4O9//zvvvvvuUWlWrFjB7NmzycjIoFmzZgwZMuSooZqLFi1i2bJl1KtXj7Zt2/L111/TsmVLbrrpJj7++GMSExPp16+fX5lq167NZ599RkxMDL/++iv9+vVj/vz5TJs2jffff5/vvvuOuLg4tm93Jrm0tDSGDRtGjx492L9/Pzk5Oaxbt67A+65ZsyYLFy4EXPfbjTfeCMDw4cN55ZVXuO2227j99ttp3749U6ZMITs7m8zMTOrVq0fPnj0ZOnQoOTk5TJ48me+//z74As/Kgm3bYOtWOHDAbffc474AEhIKT1+jBtx6q9sWLoRXXnFfDpMmQePGcN11MGAANGgQvExGUBSqIETkP7iXc0fgZaAXUGjtUNXvROQdYCFwCFgEjAHWA++KSA6wAxjoc61kL+1CL+h13PDYdcDjQd+VUeo4npPKrrzyyjx7wK5du+jfvz+//vorIkJWln+TV9euXalYsSIVK1akdu3abN68mQb5XkitWrXKC2vRogXp6elUrlyZxo0bk+C9CPv168eYMWOOyj8rK4tbb72VxYsXEx0dzS+//ALAjBkzuO6664jzho/VqFGDjIwMfv/9d3r06AG4uQXB0KdPn7z9H3/8keHDh7Nz504yMzO5+OKLAZg1axavvfYaANHR0VStWpWqVatSs2ZNFi1axObNm0lOTqZmYdZ2Vdizx7UWduxwx5UrQ716bujbo48GJfNRpKS4bdQomDLFKYv774cRI+Dii+H66+HSS3OHjhnHSDAtiDaq2lxElqrqQyLyb2BaMJmr6ghgRL7gKd7mL/4i4Hqf46eBp/3FNU4sijrH4lioVKlS3v79999Px44dmTJlCunp6XTo0MFvmooVK+btR0dHc+jQoWLFCcRTTz1FnTp1WLJkCTk5OUG/9H0pV64cOT5dLvmHk/re94ABA5g6dSpJSUmMHz+eOXPmFJj3DTfcwPjx49m0aRMDBw4MHDE7+3BrYd8+11V00klui411cbZsKfK9HUVsLFx1ldtWrYJx42D8eOjVC2rVgmuuccri7LOP/VplmGCGuebWsr2efSAL54/JMEqM47G+rj927dpF/fr1AfL660uSZs2asWrVKtZ42u/NN98MKEfdunWJiopiwoQJZHtTsC+66CLGjRuXZyPYvn078fHxNGjQgKlTpwJw4MAB9u7dS6NGjVi+fDkHDhxg586dzJwZeB5rRkYGdevWJSsri0k+hp5OnTrx4osvAm7kVe5oox49evDJJ58wb968vNbGEezb5zT8kiWu2SfixkMnJTktn6scQkHjxvDww25ptY8/hg4d4Lnn4Jxz4Lzz4KWXYPfu0F3/BCYYBfGhiFTDzX5eCKTjun4Mo8Q4co4FIVlf1x9333039957L8nJyUX64g+W2NhYXnjhBXr27Elqairx8fFUrVr1qHg333wzr776KklJSaxYsSLva/+SSy6he/futGzZkhYtWjBq1CgAJkyYwOjRo2nevDlt2rRh06ZNnHLKKfTu3ZtzzjmH3r17k5ycHFCuhx9+mNatW9O2bVvOOOOwF/9nnnmG2bNnk5iYSGpqKsuXLwegQoUKdOzYkd69ex8erpuT41oLK1bAsmXwxx9QvTqccQaceaZrNRzPob3R0dClC7z9Nvz+Ozz5JGRmOltH3brOTvHll667ywiOQMObvBEYUbguptzjikDVgtKEa7NhrseXUAxzPVHJyMjQ3bt3a05O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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "I25leQbQAuGw" }, "source": [ "" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "q33tx2wdBrRi" }, "source": [ "Model with 2 hidden layers" ] }, { "cell_type": "code", "metadata": { "id": "0tasZD3fBspj" }, "source": [ "def get_model():\n", " model = nn.Sequential(\n", " nn.Linear(28 * 28, 1000),\n", " nn.ReLU(),\n", " nn.Linear(1000, 1000),\n", " nn.ReLU(),\n", " nn.Linear(1000, 10)\n", " ).to(device)\n", "\n", " loss_fn = nn.CrossEntropyLoss()\n", " optimizer = Adam(model.parameters(), lr=1e-3)\n", " return model, loss_fn, optimizer" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "NCL8UX_aBxBc" }, "source": [ "trn_dl, val_dl = get_data()\n", "model, loss_fn, optimizer = get_model()" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "TTvPNVGGBzLI", "outputId": "2edbce71-c797-484f-97bb-1ad251879504", "colab": { "base_uri": "https://localhost:8080/", "height": 108 } }, "source": [ "train_losses, train_accuracies = [], []\n", "val_losses, val_accuracies = [], []\n", "for epoch in range(5):\n", " print(epoch)\n", " train_epoch_losses, train_epoch_accuracies = [], []\n", " for ix, batch in enumerate(iter(trn_dl)):\n", " x, y = batch\n", " batch_loss = train_batch(x, y, model, optimizer, loss_fn)\n", " train_epoch_losses.append(batch_loss) \n", " train_epoch_loss = np.array(train_epoch_losses).mean()\n", "\n", " for ix, batch in enumerate(iter(trn_dl)):\n", " x, y = batch\n", " is_correct = accuracy(x, y, model)\n", " train_epoch_accuracies.extend(is_correct)\n", " train_epoch_accuracy = np.mean(train_epoch_accuracies)\n", " for ix, batch in enumerate(iter(val_dl)):\n", " x, y = batch\n", " val_is_correct = accuracy(x, y, model)\n", " validation_loss = val_loss(x, y, model)\n", " val_epoch_accuracy = np.mean(val_is_correct)\n", " train_losses.append(train_epoch_loss)\n", " train_accuracies.append(train_epoch_accuracy)\n", " val_losses.append(validation_loss)\n", " val_accuracies.append(val_epoch_accuracy)" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "HYhXTLF2B2q5", "outputId": "89f4647f-cfb7-425e-b79a-dac38c65b4e7", "colab": { "base_uri": "https://localhost:8080/", "height": 337 } }, "source": [ "epochs = np.arange(5)+1\n", "import matplotlib.ticker as mtick\n", "import matplotlib.pyplot as plt\n", "import matplotlib.ticker as mticker\n", "%matplotlib inline\n", "plt.subplot(211)\n", "plt.plot(epochs, train_losses, 'bo', label='Training loss')\n", "plt.plot(epochs, val_losses, 'r', label='Validation loss')\n", "plt.gca().xaxis.set_major_locator(mticker.MultipleLocator(1))\n", "plt.title('Training and validation loss with 2 hidden layers')\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Loss')\n", "plt.legend()\n", "plt.grid('off')\n", "plt.show()\n", "plt.subplot(212)\n", "plt.plot(epochs, train_accuracies, 'bo', label='Training accuracy')\n", "plt.plot(epochs, val_accuracies, 'r', label='Validation accuracy')\n", "plt.gca().xaxis.set_major_locator(mticker.MultipleLocator(1))\n", "plt.title('Training and validation accuracy with 2 hidden layers')\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Accuracy')\n", "plt.gca().set_yticklabels(['{:.0f}%'.format(x*100) for x in plt.gca().get_yticks()]) \n", "plt.legend()\n", "plt.grid('off')\n", "plt.show()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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gQPL5mVnZ1NYWEhGRgZdunQpu/Vy/PjxzJw5s9L0LV++vCwQnXvuuezdu5fi4mKGDBnCrbfeSl5eHmPHjiUzM5Pc3FwmTJjA4cOHGTNmDNnZ2TXKm0hZdZAxJqbCPYgZjwc0/T1q3n333Zxzzjl8+OGH/OMf/wh7m2Tjxo3LxlNSUjhy5Ei11qmJyZMn8+ijj3Lw4EGGDBnCpk2bGDZsGEuXLqV9+/bk5+fz1FNPxfQzw7EgYIyJqalT3QOZfsfjAc39+/fTvn17AJ544omY779Hjx5s3bqVwsJCAObOnVvlNkOHDmW21xhSUFBA69atad68OVu2bKF3797ccccd5ObmsmnTJrZv307btm259tpr+elPf8qaNWtifgyhWBAwxsRUxQc0OW4PaN5+++3ceeed5OTkxPzKHaBJkyY88sgjXHjhhfTv359mzZrRokWLSreZMmUKq1evpk+fPkyePJknn3wSgIceeohevXrRp08fUlNTueiiiygoKKBv377k5OQwd+5cbr755pgfQyh17h3DAwYM0GjfJxBg/ZdHx/IrOvU5vzZu3Mjpp58e033WxW4jSktLycjIQFW58cYb6datG5MmTTpunx9pnoX6vkRktaoec6+slQSMMSZCf/vb38jOzqZnz57s37+f66+/PtFJqjG7O8gYYyI0adKk43rlfzxYScAYY5KYBQFjjEliFgSMMSaJJU8Q+OorpIreBo0xJtkkTxC47z6GjhoFZ54JkybB3LnlPVwZY2q1c845h9dee63CvIceeogbbrgh7DYjRowgcDv5xRdfzL59+45ZZ8qUKUybNq3Sz543bx4bNmwom77nnnt44403okl+SLWly+nkCQJjxlA0diykpsJf/wpXXglZWdC+PYwdC7/7HSxdemzPV8aYhBs/fjxz5sypMG/OnDkRdeIGrvfPE044oVqfHRwE7rvvPs4///xq7as2Sp4gMHw4WydOdCf6/fth1Sp4+GE47zz44AO44w4YPhyaN4f+/eHGG+Hpp2HzZistGJNg48aNY/78+WUvkCksLOSzzz5j6NCh3HDDDQwYMICePXty7733htw+KyuLPXv2ADB16lS6d+/O2WefXdbdNLhnAHJzc+nbty+XXXYZBw4cYMWKFbzyyiv84he/IDs7my1btpCfn88LL7wAwJtvvklOTg69e/dmwoQJfPPNN2Wf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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } }, { "output_type": "display_data", "data": { "image/png": "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3Ap0Bf4P8PmufRx4MOyziZA5c5xjxIsv7kNysls3SgGqsG4dPPEE9O4N9evDiBEwf75zfzxjhmtwXrvWvcl69TJxOAPmzHETQW3blutRety44n8exowZw4QJE+jevTv33HMPK1eu5MILL6RTp0706NGDb775BoC0tDSuueYawInL2LFj6du3Ly1btmTatGk56dXw5tJOS0ujb9++XH311bRp04bRo0fj1Yjz7rvv0qZNG7p06cJtt93G4MGD89m1detWevfuTefOnencuXMe4XnyySdp3749KSkp3HfffQBs3ryZAQMGkJKSQufOndmyZQtpaWl50r7llluYOXMmAMnJydx777107tyZefPm8cILL9C1a1dSUlIYPnw4Gd4MXHv37mXo0KGkpKSQkpLCihUreOihh3j66dzZFSZPnswzzzxzxtciXEI+VSLSChjl/Q4ArwGoar8I068mIqeARGAX7qX/S094UFVvEl2ygapevFMi0hvYo6rfRnRGYeJ7KNy1kZyHAmwCnJhw+HDetgQrJZQYkyfnnSUQ3PrkycX/LOzYsYMVK1YQFxfHsWPHWLZsGZUrV2bRokU88MADvPnmm/n22bhxI0uWLCE9PZ3WrVszceLEfF01161bx1dffUXjxo3p2bMnH330EampqYwfP54PP/yQFi1aMGrUqKA2NWjQgPfff5+EhAS+/fZbRo0axerVq1mwYAH/+te/+PTTT0lMTOSQN3fH6NGjue+++xg6dCiZmZlkZ2fzg89zbwjq1avH2rXOCfbBgwe5+eabAXjwwQd56aWXuPXWW7ntttvo06cPb731FllZWRw/fpzGjRszbNgwbr/9drKzs5k7dy4rV66MON+LSkFP20ZgGTBYVTdDTpVRWKjqThF5CtiOG3n9nqq+JyL/AEaKyFBgP3CbJwL/AyzCich1wDxciSMkIjIOV/1Fw4YNSUtLC9c87rzzAjIy8vrfz8iAO+/M5OyzPwk7nYrK8ePHI8rvfGRnU2PzZuquXEm9Tz+l5oYNSHY2p2rU4HBqKoduuIFD3brxU926Lv7p084PUhnljPMrQmrVqkW6/+xjBbB9ew3cGNjAcCU9/Xj+HSLk5MmTxMfHc+rUKQYPHpzzxbxz507uuecetmzZgohw6tQp0tPTycjIQFVJT0/n5MmTDBgwgJ9++omqVatSv359tmzZwtne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9dVX88477/DTTz8BzqX2rl276N27NxMnTiQ1NZXzzz+fKVMCh0k52rVrx4EDBwCYOnUqrVq1olevXjkuwYGgbrNXrFjBv//9b+6++246duzIli1bGDNmDG+88QYAixcvplOnTrRv356xY8dy8uRJwLnknjJlCp07d6Z9+/Zs3Lgxn02l2S34448/HhW34FaCKO1kZMAnn+S2H3zyCWRmum3t2sGYMa6EcNFF5rbCCM7tt7tZ+IqTjh3B74UUSN26denWrRsLFizgyiuvZO7cuYwYMQIRYerUqdStW5esrCz69+/P559/TocOHYKms2bNGubOncv69es5ffo0nTt3pkuXLgAMGzYsqNvsIUOGMHjwYK6++uo8aWVmZjJmzBgWL15Mq1atuP7665k+fTq33347APXr12ft2rU899xzPPXUU7z44ot59i/NbsFr1qzJ9ddfX+xuwU0gShvp6c5fka9RedUqV41UqZJ7KCdOdGLQuzfUqxdraw0jJL5qJp9AvPTSSwC8/vrrPP/885w+fZrdu3ezYcOGkAKxbNkyhg4dSqLnOG3IkCE527788ksefPBBjhw5wvHjxwt1ZPfNN9/QokULWrVqBcANN9zAs88+myMQw4YNA6BLly7885//zLf/qVOnuOWWW1i/fj1xcXFs2uTcyC1atIhf//rXOTbWrVuX9PR0du7cydChQwHnRTUcRo7MnTwz1Pl98MEHzJo1C4C4uDhq1aqV4xp83bp17N27l06dOlGvGN4PJhCx5vBh13jsE4S1a50X1MqVneuKO+5w7Qc9e7p5lw0jUgr40o8mV155JXfccQdr167NmbPh+++/56mnnmLVqlXUqVOHMWPGkOkrEUfImDFj8rnNPhN8brbj4uKCOg/8y1/+QsOGDfnss89y3HlHSuXKlcnOzs5ZDzx3n6NAiPz8brrpJmbOnMmePXsYO3ZsxLYFw9ogSpp9+1zPodtucz2H6tWDK6+Ev/7VuZN94AE3s9qRI/Dxx/Dkk3D55SYORpmjRo0a9OvXj7Fjx+bM5nbs2DGqV69OrVq12Lt3LwsWLCgwjYsuuoj58+fz448/kp6ezttvv52zLZTb7KSkpKCT57Ru3ZqtW7ey2RsIOnv2bPr06RP2+VREt+BWgog2O3fmHZTma/xKTIQePeCRR1wJoVs358rCMMoRo0aNYujQocyd66ae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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "HsXD3fkYB6c8" }, "source": [ "" ], "execution_count": null, "outputs": [] } ] }