{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"accelerator": "GPU",
"colab": {
"name": "Impact_of_regularization.ipynb",
"provenance": [],
"collapsed_sections": [],
"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": {
"ccf30c6f445849b986c620f92fda5cd1": {
"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_87637c7b73d3441d834c9225be819517",
"IPY_MODEL_2c896bf364434e6d9d5bc9702faf60a6"
],
"layout": "IPY_MODEL_ee6621d8a77c4967b9e319249157d939"
}
},
"ee6621d8a77c4967b9e319249157d939": {
"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
}
},
"87637c7b73d3441d834c9225be819517": {
"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_26962147ab0944c9a4184113004fd4e2",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_0fbf4ac41c764b04b7461c48124c1a2e",
"value": 1
}
},
"2c896bf364434e6d9d5bc9702faf60a6": {
"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_381f3d1f10644e54a281b0a2efb3cd08",
"placeholder": "",
"style": "IPY_MODEL_770111da21cd47caa1333e5b87c82651",
"value": " 26427392/? [00:20<00:00, 91231105.43it/s]"
}
},
"0fbf4ac41c764b04b7461c48124c1a2e": {
"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"
}
},
"26962147ab0944c9a4184113004fd4e2": {
"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
}
},
"770111da21cd47caa1333e5b87c82651": {
"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": ""
}
},
"381f3d1f10644e54a281b0a2efb3cd08": {
"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
}
},
"b8ace46c7ab345febda3ad9ab28487b6": {
"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_68c9f85c4f2c4c5aba582e0ae52c9f02",
"IPY_MODEL_c9e247ecbe784eac96a3b8c956df69d5"
],
"layout": "IPY_MODEL_ebbef415392b43d6bb24e7aab76d3333"
}
},
"ebbef415392b43d6bb24e7aab76d3333": {
"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
}
},
"68c9f85c4f2c4c5aba582e0ae52c9f02": {
"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_2843690aa1674bba9e28a9e3218e2f94",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_51757e2a904446c59d27c15b136ff748",
"value": 1
}
},
"c9e247ecbe784eac96a3b8c956df69d5": {
"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_cd8cb18bae1d4ee9a075c5c3c5984332",
"placeholder": "",
"style": "IPY_MODEL_36a4beea1e874348b2da12cdf1627fac",
"value": " 32768/? [00:00<00:00, 74148.32it/s]"
}
},
"51757e2a904446c59d27c15b136ff748": {
"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"
}
},
"2843690aa1674bba9e28a9e3218e2f94": {
"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
}
},
"36a4beea1e874348b2da12cdf1627fac": {
"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": ""
}
},
"cd8cb18bae1d4ee9a075c5c3c5984332": {
"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
}
},
"ae23020ebe3a4af4aa938814f165cae3": {
"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_a40544facee6431f8bcbad262f319c2e",
"IPY_MODEL_124242cdf8d34eafaca1de582de595f9"
],
"layout": "IPY_MODEL_ad92d130357b4d3d9e30c7f46b3b00be"
}
},
"ad92d130357b4d3d9e30c7f46b3b00be": {
"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
}
},
"a40544facee6431f8bcbad262f319c2e": {
"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_9643abc7fb0b4a7f8c2dc1f7e4a9ac60",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_e37e2009e9a94ef78cc89f8390f9db06",
"value": 1
}
},
"124242cdf8d34eafaca1de582de595f9": {
"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_f18d1a32aaf4455eb513d9438e658ca5",
"placeholder": "",
"style": "IPY_MODEL_1c24bb49609a43fda4c50d98dcb8fa39",
"value": " 4423680/? [00:00<00:00, 12764455.07it/s]"
}
},
"e37e2009e9a94ef78cc89f8390f9db06": {
"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"
}
},
"9643abc7fb0b4a7f8c2dc1f7e4a9ac60": {
"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
}
},
"1c24bb49609a43fda4c50d98dcb8fa39": {
"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": ""
}
},
"f18d1a32aaf4455eb513d9438e658ca5": {
"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
}
},
"999c0136999e4356ac8cf7879931e943": {
"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_4ea2d14e43ba42eaab5925635076a8e7",
"IPY_MODEL_ed987686bb7741ad8c9e0e3e496f0a98"
],
"layout": "IPY_MODEL_f464f4e2d6644003a6787c201f35c101"
}
},
"f464f4e2d6644003a6787c201f35c101": {
"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
}
},
"4ea2d14e43ba42eaab5925635076a8e7": {
"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_daba0236fdae4183878d2b8a647765f1",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_250e9afd561544f2ac232d28909fa583",
"value": 1
}
},
"ed987686bb7741ad8c9e0e3e496f0a98": {
"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_5eb1eb89584443eb8c2666a720fbb79f",
"placeholder": "",
"style": "IPY_MODEL_5b84a5151c2045da8a8617416cb3c4f8",
"value": " 8192/? [00:00<00:00, 67484.11it/s]"
}
},
"250e9afd561544f2ac232d28909fa583": {
"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"
}
},
"daba0236fdae4183878d2b8a647765f1": {
"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
}
},
"5b84a5151c2045da8a8617416cb3c4f8": {
"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": ""
}
},
"5eb1eb89584443eb8c2666a720fbb79f": {
"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": "cw46kvPNeSCj",
"outputId": "8e7a83bb-44ea-4699-b1bd-28f8400f7b2f",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 437,
"referenced_widgets": [
"ccf30c6f445849b986c620f92fda5cd1",
"ee6621d8a77c4967b9e319249157d939",
"87637c7b73d3441d834c9225be819517",
"2c896bf364434e6d9d5bc9702faf60a6",
"0fbf4ac41c764b04b7461c48124c1a2e",
"26962147ab0944c9a4184113004fd4e2",
"770111da21cd47caa1333e5b87c82651",
"381f3d1f10644e54a281b0a2efb3cd08",
"b8ace46c7ab345febda3ad9ab28487b6",
"ebbef415392b43d6bb24e7aab76d3333",
"68c9f85c4f2c4c5aba582e0ae52c9f02",
"c9e247ecbe784eac96a3b8c956df69d5",
"51757e2a904446c59d27c15b136ff748",
"2843690aa1674bba9e28a9e3218e2f94",
"36a4beea1e874348b2da12cdf1627fac",
"cd8cb18bae1d4ee9a075c5c3c5984332",
"ae23020ebe3a4af4aa938814f165cae3",
"ad92d130357b4d3d9e30c7f46b3b00be",
"a40544facee6431f8bcbad262f319c2e",
"124242cdf8d34eafaca1de582de595f9",
"e37e2009e9a94ef78cc89f8390f9db06",
"9643abc7fb0b4a7f8c2dc1f7e4a9ac60",
"1c24bb49609a43fda4c50d98dcb8fa39",
"f18d1a32aaf4455eb513d9438e658ca5",
"999c0136999e4356ac8cf7879931e943",
"f464f4e2d6644003a6787c201f35c101",
"4ea2d14e43ba42eaab5925635076a8e7",
"ed987686bb7741ad8c9e0e3e496f0a98",
"250e9afd561544f2ac232d28909fa583",
"daba0236fdae4183878d2b8a647765f1",
"5b84a5151c2045da8a8617416cb3c4f8",
"5eb1eb89584443eb8c2666a720fbb79f"
]
}
},
"source": [
"from torchvision import datasets\n",
"import torch\n",
"data_folder = '/content/' # This can be any directory you want to download FMNIST to\n",
"fmnist = datasets.FashionMNIST(data_folder, download=True, train=True)"
],
"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 /content/FashionMNIST/raw/train-images-idx3-ubyte.gz\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ccf30c6f445849b986c620f92fda5cd1",
"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 /content/FashionMNIST/raw/train-images-idx3-ubyte.gz to /content/FashionMNIST/raw\n",
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz to /content/FashionMNIST/raw/train-labels-idx1-ubyte.gz\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b8ace46c7ab345febda3ad9ab28487b6",
"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 /content/FashionMNIST/raw/train-labels-idx1-ubyte.gz to /content/FashionMNIST/raw\n",
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz to /content/FashionMNIST/raw/t10k-images-idx3-ubyte.gz\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ae23020ebe3a4af4aa938814f165cae3",
"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 /content/FashionMNIST/raw/t10k-images-idx3-ubyte.gz to /content/FashionMNIST/raw\n",
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz to /content/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "999c0136999e4356ac8cf7879931e943",
"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 /content/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz to /content/FashionMNIST/raw\n",
"Processing...\n",
"\n",
"\n",
"\n",
"Done!\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": "0mVCuo84ef1b"
},
"source": [
"tr_images = fmnist.data\n",
"tr_targets = fmnist.targets"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "7mJmZMHSej1Z"
},
"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": "guWrLqLUelZZ"
},
"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": "watgH162yyv_"
},
"source": [
"### No Regularization"
]
},
{
"cell_type": "code",
"metadata": {
"id": "zc309_JWem63"
},
"source": [
"class FMNISTDataset(Dataset):\n",
" def __init__(self, x, y):\n",
" x = x.float()/255\n",
" x = x.view(-1,28*28)\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, 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\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",
" 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()\n"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "wAO3L9MIeqVD"
},
"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=True)\n",
" return trn_dl, val_dl"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "zeptO6C9ert-"
},
"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": "8XgKcBFies94"
},
"source": [
"trn_dl, val_dl = get_data()\n",
"model, loss_fn, optimizer = get_model()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "iS71jHNJeuPP",
"outputId": "ef023469-41e2-495a-efde-b7619006d2d8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 199
}
},
"source": [
"train_losses, train_accuracies = [], []\n",
"val_losses, val_accuracies = [], []\n",
"for epoch in range(10):\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",
"\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",
"\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",
"5\n",
"6\n",
"7\n",
"8\n",
"9\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "-kvvJvJ8ew1i",
"outputId": "87e7efb2-f288-44e6-8905-03cf1aa623bd",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 337
}
},
"source": [
"epochs = np.arange(10)+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')\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')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Accuracy')\n",
"#plt.ylim(0.8,1)\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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\n",
"text/plain": [
"