{
"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": [
""
]
},
{
"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": [
"