Computer_Vision/Chapter03/Impact_of_regularization.ipynb
2024-02-13 03:34:51 +01:00

2205 lines
210 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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": [
"<a href=\"https://colab.research.google.com/github/PacktPublishing/Hands-On-Computer-Vision-with-PyTorch/blob/master/Chapter03/Impact_of_regularization.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"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": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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ZVPiGISqzlHVK4GuwEJcyI0WIvKciPyqqgQ0cDOIR4+Gs85yi7G8+qpb4MaUg1EJTJrkwrv4E7FwL37s27ePNm3aABTZ6yuTLl268OOPP7LBm3z5+uuvlyhHq1atqFWrFq+88goFBQUADBgwgGnTphWNEezZs4fGjRuTkJDAnDlzAMjNzeXgwYO0b9+e1atXk5ubS2ZmJvPnzy9RrqysLFq1akV+fj6z/AZ6+vXrx3PPPQe4wex93oJLgwYN4oMPPuCLL74o6m1UFeEMUh9Q1VfVrU2dgIupdHfEJTNc/KGpU13AuZdegttugzVrYNgwG2swKo30dPcza9/e/azat3fnkV6P5K677uLee+8lJSWlXF/84dKwYUOeffZZLrroItLS0mjcuPERpimAG264gRkzZpCcnMyaNWuKvvYvuugiLr30Urp37063bt2YPHkyAK+88gpPP/00Z555Jr1792bbtm20bduWIUOGcMYZZzBkyBBS/OOTBfHwww/Tq1cvzjnnHLp27VqU/tRTT7Fw4UKSkpJIS0tj9erVANSrV48+ffowZMiQqveAKinMa3Xbqmu4b38CQvYuXarao4cLWX3++S58dg3DQjoHUp76WL16deQEiQH2798fVr6srCxVVS0sLNSxY8fqE088EUmxIkJBQYEmJyfr999/X2KecOsj1O+CUsJ9V+4KL9WQWbMgMdGtdZOYWPmufeVm924YMwZ69YKff4aZM2HRIhegzjCMcvH888/TrVs3Tj/9dPbt28f1118fbZHKxerVqznllFPo168fnTp1qvLn1+i4yIHLfRK95T4BCgtp9e67cPnlkJkJt94KEye6dZINw6gQt912G7fdVn2dL0877TR+/PHHqD2/RvcgSvP/rjJU4Z13oFs3ukye7MJiLF/uoq6acjAMI4rUaAVRlf7fIVm40MVNGjgQDh1i9f33w8cfu1XYDMMwokyNVhAl+XlHdLlPcPMZBgyAvn3dOMPUqbB6NTv69jXvJMMwYoYarSCq3P971Sq39nOvXm5ltyeegB9+gFGjIGiVJ8MwjGhToxVElfl///QTDB8OSUluPeUHH4T16928Bls20TgG6dOnD//5z38C0qZMmRIyjpKPCy+8EN+qkL/97W/JzMw8Is/EiROL5iOUxJw5c4rmEABMmDCBefPmlUd8wyOiCkJEbhORVSLyrYi8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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "l5PhJV4RfHc6",
"outputId": "e25a5fb9-f17a-4e09-c873-9c542a09a364",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"source": [
"for ix, par in enumerate(model.parameters()):\n",
" if(ix==0):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" plt.xlim(-2,2)\n",
" plt.title('Distribution of weights conencting input to hidden layer')\n",
" plt.show()\n",
" elif(ix ==1):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" plt.xlim(-2,2)\n",
" plt.title('Distribution of biases of hidden layer')\n",
" plt.show()\n",
" elif(ix==2):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" plt.xlim(-2,2)\n",
" plt.title('Distribution of weights conencting hidden to output layer')\n",
" plt.show()\n",
" elif(ix ==3):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" plt.xlim(-2,2)\n",
" plt.title('Distribution of biases of output layer')\n",
" plt.show() "
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEICAYAAABcVE8dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAXbUlEQVR4nO3de7RkZX3m8e8DDYraitg9ikDTsiReJ95axGgMK+oEkZHMUjM48YLCdDQxamIm4g2VlQSdrJgZg0oIMAI6SiJKWsXxMsKgSwEbFnfUtIjS0EoDykUUbfnNH3sfLco6feqcU+fSvN/PWrXOrtpv7f2rt+o8tevdu3alqpAk3fvttNQFSJIWh4EvSY0w8CWpEQa+JDXCwJekRhj4ktQIA38ZSHJCkrdPaFlrktyRZOf++rlJjprEsvvlfTbJKya1vFms96+S3JTk+yPmHZRk83buO7H+XUjp/K8kP0xy4VLXM19Jrk3ynKWuQ7+yYqkLuLdLci3wUGAb8AvgKuA04MSquhugql49i2UdVVVfnK5NVX0PeMD8qv7l+t4JPLKqXjqw/OdNYtmzrGMN8EZg36q6cbb3H7d/l4FnAs8F9q6qH09ywaOey+W0PC0Ot/AXx3+sqpXAvsC7gTcBJ096JUnurW/ga4Cb5xL2O5h9gWsnHfYtuRf/D0xGVXlZwAtwLfCcodsOAO4GHt9f/xDwV/30KuDTwI+AW4Av070xn97f5yfAHcBfAmuBAo4EvgecN3Dbin555wLHARcCtwH/CuzRzzsI2DyqXuBg4GfAz/v1XTqwvKP66Z2AtwHfBW6k++TyoH7eVB2v6Gu7CXjrdvrpQf39t/bLe1u//Of0j/nuvo4PjbjvQcBm4C39eq4F/nBg/mD/Prjv363AD/vpvQfaHgFcA9wOfGdoOa8Cru7v9zm6TxwAAf6+74PbgMunntsRtT4c2NA/t5uA/9rffiTwU7pPgXcA7xpx3+3191yfy4m9Nrb32qd7zX+N7nW9BTge2LWf937g74buuwH4s4E+O7N/zr4DvG6g3TuBjwMf7h/DUUv9P7+cL0tewL39wojA72//HvCafnowkI4DTgB26S+/DWTUsvhVqJ4G3B/YjdGBfz3w+L7NmcCH+3nT/lP30++cajsw/1x+Ffivogut/eiGkT4BnD5U2z/1dT0BuAt4zDT9dFofOCv7+34LOHK6OofuexDdkNl7gfsAvwP8GHjUiP59CPBC4H79uv4FOKufd/8+NKbutyfwuH76sP6xPoZuKPRtwFf7eb8HXATsThf+jwH2nKbW84APAPcFnkgXYr/bzzsC+Mp2Huf2+nuuz+XEXhvbe+0DTwEO7PtuLd0b5xv6eQcANwA79ddXAXfSDYXu1PftMcCu/WO/Bvi9gTp+Dvx+33a3pf6fX84Xh3SWzg3AHiNu/zld0OxbVT+vqi9X/8rejndW1Y+r6ifTzD+9qq6obqjg7cAfTO3Unac/BN5bVddU1R3Am4HDhz5Wv6uqflJVlwKX0gX/PfS1HA68uapur6prgb8DXjbLet5eVXdV1f8DPgP8wXCDqrq5qs6sqjur6nbgr+neIKbcDTw+yW5VtaWqruxvfzVwXFVdXVXbgL8BnphkX7rnbCXwaLo356urasuIx7kP8AzgTVX106q6BDgJePmYj2+c/p6thXpt3ENVXVRV51fVtv75/Uf6fq+qC4FbgWf3zQ8Hzq2qHwBPBVZX1bFV9bOquoZuI+LwgcV/rarOqqq7t/M/IBzDX0p70X2sH/a3dFtxn09yTZKjx1jWdbOY/126Tw6rxqpy+x7eL29w2SvotsymDB5Vcyejdyiv6msaXtZes6jlh3XPse/v9vXdQ5L7JfnHJN9NchvdFvfuSXbu7/+f6cJ9S5LPJHl0f9d9gf+Z5EdJpobbAuxVVV+iG6J4P3BjkhOTPHBEjQ8HbunfaObyOMfp79laqNfGPST5jSSfTvL9vt//Zmg9pwJTO4BfSjeECV2/P3yq3/u+fwv3fMwzvf7VM/CXQJKn0v2Tf2V4Xr+F+8aq2g94AfDnSaa2fKbb0p/pE8A+A9Nr6LZIb6Ib9rjfQF07A6tnsdwb6P4hB5e9DfjBDPcbdlNf0/Cyrp/FMh6c5P5D979hRLs3Ao8CnlZVDwSe1d8egKr6XFU9l+5T1jfotiahC5U/qqrdBy67VdVX+/u9r6qeAjwW+A3gv41Y9w3AHklWzvFxbq+/5/pcLtRrY9gH6fpz/77f30Lf570PA4cleQLdkNhZ/e3XAd8Z6veVVXXIPGpploG/iJI8MMmhwMfoxj8vH9Hm0CSPTBK6j7m/oBtmgO4fe785rPqlSR6b5H7AscDHq+oXdOPk903y/CS70I1L32fgfj8A1iaZ7nXyUeDPkjwiyQPottrO6Ic8xtbX8s/AXydZ2Q+T/DldCMzGu5LsmuS3gUPpxueHraTbCfyjJHsA75iakeShSQ7r3zjuotshOdX3JwBvTvK4vu2Dkry4n35qkqf1ffhjup2vdzOkqq4Dvgocl+S+SX6TbmftuI9ze/091+dyoV4bw1bS7R+5o//U9JrBmVW1Gfg63Zb9mQNDMxcCtyd5U5Ldkuyc5PH9RpNmycBfHJ9Kcjvd1spb6XYuvnKatvsDX6QLm68BH6iqc/p5xwFv6z/a/sUs1n863Y7L79PtLHwdQFXdCvwx3Tjy9XRhNfgFpqnAvDnJxSOWe0q/7PPojp74KfCns6hr0J/267+G7pPP/+6XP67v0x09cwPwEeDVVfWNEe3+B91O5JuA84H/MzBvJ7o3mhvohmx+hz6YquqTwHuAj/VDElcAU99JeCDdJ4Ef0g2L3Ew3NDfKS+h2Wt4AfBJ4R23nexVDpu3veTyXC/XaGPYXwH+hO/rpn4AzRrQ5Ffj3/Go4Z2pj4FC6HdzfoXveTqI7qkuzNHX0h6TGJDmX7pPmSUtdC0CSZ9F92tl3jAMVNAdu4Utacv2w0euBkwz7hWPgS1pSSR5D94WsPemG3LRAHNKRpEa4hS9JjViyEw2tWrWq1q5du1Srl6Qd0kUXXXRTVa2eueWvW7LAX7t2LRs3blyq1UvSDinJd2duNZpDOpLUCANfkhph4EtSIwx8SWqEgS9JjTDwJakRMwZ+fxrXC5NcmuTKJO8a0eY+Sc5IsinJBUnWLkSxkqS5G2cL/y6639x8At0pSg9OcuBQmyPpfnHokXQ/5vyeyZYpSZqvGQO/Onf0V6d+WHv4BDyH0Z3LGrpfkH92/wMekqRlYqxv2vY/b3YR8Ejg/VV1wVCTveh/V7KqtiW5FXgI3Y8VDC5nPbAeYM2aNfOrXFoG1h79mZG3X/vu5y9yJdLMxtppW1W/qKonAnsDByR5/FxWVlUnVtW6qlq3evWcTgUhSZqjWR2lU1U/As4BDh6adT39jyEnWUH382M3T6JASdJkjHOUzuoku/fTuwHPpfv1+UEbgFf00y8CvuSv1kjS8jLOGP6ewKn9OP5OwD9X1aeTHAtsrKoNwMnA6Uk20f348+ELVrEkaU5mDPyqugx40ojbjxmY/inw4smWJkmaJL9pK0mNMPAlqREGviQ1wsCXpEYY+JLUCANfkhph4EtSIwx8SWqEgS9JjTDwJakRBr4kNcLAl6RGGPiS1AgDX5IaYeBLUiMMfElqhIEvSY0w8CWpEQa+JDXCwJekRhj4ktQIA1+SGmHgS1IjDHxJaoSBL0mNmDHwk+yT5JwkVyW5MsnrR7Q5KMmtSS7pL8csTLmSpLlaMUabbcAbq+riJCuBi5J8oaquGmr35ao6dPIlSpImYcYt/KraUlUX99O3A1cDey10YZKkyZrVGH6StcCTgAtGzH56kkuTfDbJ46a5//okG5Ns3Lp166yLlSTN3diBn+QBwJnAG6rqtqHZFwP7VtUTgH8Azhq1jKo6sarWVdW61atXz7VmSdIcjBX4SXahC/uPVNUnhudX1W1VdUc/fTawS5JVE61UkjQv4xylE+Bk4Oqqeu80bR7WtyPJAf1yb55koZKk+RnnKJ1nAC8DLk9ySX/bW4A1AFV1AvAi4DVJtgE/AQ6vqlqAeiVJczRj4FfVV4DM0OZ44PhJFSVJmjy/aStJjTDwJakRBr4kNcLAl6RGGPiS1AgDX5IaYeBLUiMMfElqhIEvSY0w8CWpEQa+JDXCwJekRhj4ktQIA1+SGmHgS1IjDHxJaoSBL0mNMPAlqREGviQ1wsCXpEYY+JLUCANfkhph4EtSIwx8SWqEgS9JjTDwJakRMwZ+kn2SnJPkqiRXJnn9iDZJ8r4km5JcluTJC1OuJGmuVozRZhvwxqq6OMlK4KIkX6iqqwbaPA/Yv788Dfhg/1eStEzMuIVfVVuq6uJ++nbgamCvoWaHAadV53xg9yR7TrxaSdKcjbOF/0tJ1gJPAi4YmrUXcN3A9c39bVuG7r8eWA+wZs2a2VWqpqw9+jMjb7/23c/fIZYvLUdj77RN8gDgTOANVXXbXFZWVSdW1bqqWrd69eq5LEKSNEdjBX6SXejC/iNV9YkRTa4H9hm4vnd/myRpmRjnKJ0AJwNXV9V7p2m2AXh5f7TOgcCtVbVlmraSpCUwzhj+M4CXAZcnuaS/7S3AGoCqOgE4GzgE2ATcCbxy8qVKkuZjxsCvqq8AmaFNAX8yqaIkSZPnN20lqREGviQ1wsCXpEYY+JLUCANfkhph4EtSIwx8SWqEgS9JjTDwJakRBr4kNcLAl6RGGPiS1AgDX5IaYeBLUiMMfElqhIEvSY0w8CWpEQa+JDXCwJekRhj4ktQIA1+SGmHgS1IjDHxJaoSBL0mNMPAlqREzBn6SU5LcmOSKaeYflOTWJJf0l2MmX6Ykab5WjNHmQ8DxwGnbafPlqjp0IhVJkhbEjFv4VXUecMsi1CJJWkCTGsN/epJLk3w2yeOma5RkfZKNSTZu3bp1QquWJI1jEoF/MbBvVT0B+AfgrOkaVtWJVbWuqtatXr16AquWJI1r3oFfVbdV1R399NnALklWzbsySdJEzTvwkzwsSfrpA/pl3jzf5UqSJmvGo3SSfBQ4CFiVZDPwDmAXgKo6AXgR8Jok24CfAIdXVS1YxZKkOZkx8KvqJTPMP57usE1J0jLmN20lqREGviQ1wsCXpEYY+JLUCANfkhph4EtSIwx8SWqEgS9JjTDwJakRBr4kNcLAl6RGGPiS1AgDX5IaYeBLUiMMfElqhIEvSY0w8CWpEQa+JDXCwJekRhj4ktQIA1+SGmHgS1IjDHxJaoSBL0mNMPAlqREGviQ1YsbAT3JKkhuTXDHN/CR5X5JNSS5L8uTJlylJmq9xtvA/BBy8nfnPA/bvL+uBD86/LEnSpM0Y+FV1HnDLdpocBpxWnfOB3ZPsOakCJUmTsWICy9gLuG7g+ub+ti3DDZOsp/sUwJo1ayawau3o1h79maUu4R6mq+fadz9/SZYjTdKi7rStqhOral1VrVu9evVirlqSmjeJwL8e2Gfg+t79bZKkZWQSgb8BeHl/tM6BwK1V9WvDOZKkpTXjGH6SjwIHAauSbAbeAewCUFUnAGcDhwCbgDuBVy5UsZKkuZsx8KvqJTPML+BPJlaRJGlB+E1bSWqEgS9JjTDwJakRBr4kNcLAl6RGGPiS1AgDX5IaYeBLUiMMfElqhIEvSY0w8CWpEQa+JDXCwJekRhj4ktQIA1+SGmHgS1IjDHxJaoSBL0mNMPAlqREGviQ1wsCXpEYY+JLUCANfkhph4EtSIwx8SWrEWIGf5OAk30yyKcnRI+YfkWRrkkv6y1GTL1WSNB8rZmqQZGfg/cBzgc3A15NsqKqrhpqeUVWvXYAaJUkTMM4W/gHApqq6pqp+BnwMOGxhy5IkTdo4gb8XcN3A9c39bcNemOSyJB9Pss+oBSVZn2Rjko1bt26dQ7mSpLma1E7bTwFrq+o3gS8Ap45qVFUnVtW6qlq3evXqCa1akjSOcQL/emBwi33v/rZfqqqbq+qu/upJwFMmU54kaVLGCfyvA/sneUSSXYHDgQ2DDZLsOXD1BcDVkytRkjQJMx6lU1XbkrwW+BywM3BKVV2Z5FhgY1VtAF6X5AXANuAW4IgFrFmSNAczBj5AVZ0NnD102zED028G3jzZ0iRJk+Q3bSWpEQa+JDXCwJekRhj4ktQIA1+SGmHgS1IjDHxJaoSBL0mNMPAlqREGviQ1wsCXpEYY+JLUCANfkhph4EtSIwx8SWqEgS9JjTDwJakRBr4kNcLAl6RGGPiS1AgDX5IaYeBLUiMMfElqhIEvSY0w8CWpEQa+JDVirMBPcnCSbybZlOToEfPvk+SMfv4FSdZOulBJ0vzMGPhJdgbeDzwPeCzwkiSPHWp2JPDDqnok8PfAeyZdqCRpfsbZwj8A2FRV11TVz4CPAYcNtTkMOLWf/jjw7CSZXJmSpPlaMUabvYDrBq5vBp42XZuq2pbkVuAhwE2DjZKsB9b3V+9KcsVcil5kqxh6HMtUE3Vm8T473qPOSa13wvU38Zwvoh2lzkfN9Y7jBP7EVNWJwIkASTZW1brFXP9cWOdkWefk7Ag1gnVOWpKNc73vOEM61wP7DFzfu79tZJskK4AHATfPtShJ0uSNE/hfB/ZP8ogkuwKHAxuG2mwAXtFPvwj4UlXV5MqUJM3XjEM6/Zj8a4HPATsDp1TVlUmOBTZW1QbgZOD0JJuAW+jeFGZy4jzqXkzWOVnWOTk7Qo1gnZM25zrjhrgktcFv2kpSIwx8SWrEogV+kr9N8o0klyX5ZJLdp2m33dM4LEKdL05yZZK7k0x7iFaSa5NcnuSS+RwmNVezqHOp+3OPJF9I8m/93wdP0+4XfV9ekmT4oICFqm2HOGXIGHUekWTrQP8dtQQ1npLkxum+W5PO+/rHcFmSJy92jX0dM9V5UJJbB/rymMWusa9jnyTnJLmq/z9//Yg2s+/TqlqUC/AfgBX99HuA94xoszPwbWA/YFfgUuCxi1VjX8Nj6L7YcC6wbjvtrgVWLWZts61zmfTnfweO7qePHvW89/PuWOS6Zuwb4I+BE/rpw4EzluB5HqfOI4DjF7u2oRqeBTwZuGKa+YcAnwUCHAhcsEzrPAj49FL2ZV/HnsCT++mVwLdGPO+z7tNF28Kvqs9X1bb+6vl0x/MPG+c0Dguqqq6uqm8u5jrnYsw6l7w/uedpN04Ffn+R1z+dHeWUIcvhOZxRVZ1Hd4TedA4DTqvO+cDuSfZcnOp+ZYw6l4Wq2lJVF/fTtwNX053RYNCs+3SpxvBfRffONGzUaRyGH+RyUcDnk1zUnzJiOVoO/fnQqtrST38feOg07e6bZGOS85MsxpvCOH1zj1OGAFOnDFlM4z6HL+w/1n88yT4j5i+15fBaHNfTk1ya5LNJHrfUxfRDiU8CLhiaNes+neipFZJ8EXjYiFlvrap/7du8FdgGfGSS656NceocwzOr6vok/w74QpJv9FsPEzOhOhfc9uocvFJVlWS644D37ftzP+BLSS6vqm9PutZ7qU8BH62qu5L8Ed2nkt9d4pp2VBfTvRbvSHIIcBaw/1IVk+QBwJnAG6rqtvkub6KBX1XP2d78JEcAhwLPrn4Qasg4p3GYt5nqHHMZ1/d/b0zySbqP3hMN/AnUueT9meQHSfasqi39x80bp1nGVH9ek+Rcui2ahQz82ZwyZPMSnjJkxjqrarCmk+j2myw3i/JanK/BUK2qs5N8IMmqqlr0k6ol2YUu7D9SVZ8Y0WTWfbqYR+kcDPwl8IKqunOaZuOcxmHJJbl/kpVT03Q7pJfjmT+XQ38OnnbjFcCvfTJJ8uAk9+mnVwHPAK5a4Lp2lFOGzFjn0LjtC+jGe5ebDcDL+yNLDgRuHRjqWzaSPGxqP02SA+gyctHPC9bXcDJwdVW9d5pms+/TRdzrvIluvOmS/jJ19MPDgbOH9jx/i27r7q2LVd/A+v8T3VjYXcAPgM8N10l3xMSl/eXK5VrnMunPhwD/F/g34IvAHv3t64CT+unfAi7v+/Ny4MhFqu3X+gY4lm6jBOC+wL/0r90Lgf0Wu//GrPO4/nV4KXAO8OglqPGjwBbg5/3r8kjg1cCr+/mh+yGlb/fP8bRHwC1xna8d6Mvzgd9aojqfSbef8LKBzDxkvn3qqRUkqRF+01aSGmHgS1IjDHxJaoSBL0mNMPAlqREGviQ1wsCXpEb8fxjqutWEmwEIAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "5m8km-NPfM8T"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "rOc9DjsjfM-v"
},
"source": [
"### Regularization - 1e-4"
]
},
{
"cell_type": "code",
"metadata": {
"id": "3yucge9gfPe7"
},
"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",
" prediction = model(x)\n",
" l1_regularization = 0\n",
" for param in model.parameters():\n",
" l1_regularization += torch.norm(param,1)\n",
" batch_loss = loss_fn(prediction, y) + 0.0001*l1_regularization\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": "1NTiKDPZgWs8"
},
"source": [
"trn_dl, val_dl = get_data()\n",
"model_l1, loss_fn, optimizer = get_model()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "473oc4g0gaKq",
"outputId": "bfce7740-f85d-4200-c0b3-6dc8a112f786",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 563
}
},
"source": [
"train_losses, train_accuracies = [], []\n",
"val_losses, val_accuracies = [], []\n",
"for epoch in range(30):\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_l1, 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_l1)\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_l1)\n",
" validation_loss = val_loss(x, y, model_l1)\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",
"10\n",
"11\n",
"12\n",
"13\n",
"14\n",
"15\n",
"16\n",
"17\n",
"18\n",
"19\n",
"20\n",
"21\n",
"22\n",
"23\n",
"24\n",
"25\n",
"26\n",
"27\n",
"28\n",
"29\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "7g6gqU7dgb89",
"outputId": "a7ec522e-a117-4ad7-d5c9-24d0bf975793",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 337
}
},
"source": [
"epochs = np.arange(30)+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 L1 regularization')\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 L1 regularization')\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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wzDKPcOGDWP+/Pl5H6HZvn07O3fupE+fPkyYMIGuXbtywQUXMGXKlCKPb9myJfv37wdg2rRptGnThosvvphNmzbl5Xn66afp1q0bHTt25Nprr+XIkSOsWLGCd955h7vvvptOnTqxdetWUlNTef311wH46KOPSElJoX379owZMyZvfqOWLVsyZcoUOnfuTPv27dm4cWNA/aI9XbXNPmoYRmjceSd4H4kJG506wYwZfnfXq1eP7t278/777zN48GDmzp3L8OHDERGmTZtGvXr1OHXqFJdddhlr166lQ4cORZazatUq5s6dy5o1azh58iSdO3emS5cuAAwdOpRx48YB8Ic//IFnn32W3/zmNwwaNIirr76aYcOGFSjr2LFjpKam8tFHH9GmTRtGjx7NU089xZ133glAgwYNWL16NU8++STTp0/nmWee8atfsNNVZ2dn869//Svs01WbR2AYRkzgGx7yDQu99tprdO7cmZSUFNavX18gjFOYZcuWMWTIEGrUqEGtWrUYNGhQ3r5169bRp08f2rdvz5w5c1i/fn1AeTZt2kSrVq1o06YNADfddBNLly7N2z906FAAunTpkjdRnT8+/vhjRo0aBRQ9XfXMmTM5cOAAlStXplu3bsyePZupU6fy1VdfkZycHLDsYDCPwDCM0Ajw5B5JBg8ezG9/+1tWr17NkSNH6NKlC99++y3Tp0/n888/p27duqSmpnLs2LESlZ+amsq8efPo2LEjzz33HGlpaaWSN3cq69JMYz1p0iSuuuoqFixYQO/evXnzzTfzpqueP38+qampTJw4kdGjR5dKVvMIDMOICZKSkujfvz9jxozJ8wYyMzOpWbMmtWvXZs+ePbz//vsBy+jbty/z5s3j6NGjZGVl8e677+bty8rKokmTJmRnZ+dNHQ2QnJxMVlbWaWW1bduW7du3s2XLFgBefPFFLrnkkhLpFux01d98801Epqs2j8AwjJhhxIgRDBkyJC9ElDttc7t27WjevDm9ewd+P7Vz585cf/31dOzYkUaNGtGtW7e8fQ8++CA9evSgYcOG9OjRI+/mf8MNNzBu3DhmzpyZ10kMkJiYyOzZs7nuuus4efIk3bp149Zbby2RXrnfUu7QoQM1atQoMF314sWLqVSpEhdccAE/+9nPmD9/Po888ghVqlQhKSkpPB+w8TcJUXldbNK52CTedIo3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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "nQpc_bIxgvo8",
"outputId": "7acc9fb9-ef06-4f75-ccf7-63a2b832d44a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"source": [
"for ix, par in enumerate(model.parameters()):\n",
" if(ix==0):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" plt.xlim(-2,2)\n",
" plt.title('Distribution of weights conencting input to hidden layer')\n",
" plt.show()\n",
" elif(ix ==1):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" plt.xlim(-2,2)\n",
" plt.title('Distribution of biases of hidden layer')\n",
" plt.show()\n",
" elif(ix==2):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" plt.xlim(-2,2)\n",
" plt.title('Distribution of weights conencting hidden to output layer')\n",
" plt.show()\n",
" elif(ix ==3):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" plt.xlim(-2,2)\n",
" plt.title('Distribution of biases of output layer')\n",
" plt.show() "
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "kK1KXCExyywl"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "6VSc2FkBhpU5"
},
"source": [
"### Regularization 1e-2"
]
},
{
"cell_type": "code",
"metadata": {
"id": "stPdysFphpXr"
},
"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",
" prediction = model(x)\n",
" l2_regularization = 0\n",
" for param in model.parameters():\n",
" l2_regularization += torch.norm(param,2)\n",
" batch_loss = loss_fn(prediction, y) + 0.01*l2_regularization\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": "poLmwOqohvJL"
},
"source": [
"trn_dl, val_dl = get_data()\n",
"model_l2, loss_fn, optimizer = get_model()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "LWLYUYVMhxNT",
"outputId": "eafaa657-0e23-4cfc-e45a-8269b3ef76a6",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 490
}
},
"source": [
"train_losses, train_accuracies = [], []\n",
"val_losses, val_accuracies = [], []\n",
"for epoch in range(30):\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_l2, 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_l2)\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_l2)\n",
" validation_loss = val_loss(x, y, model_l2)\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",
"10\n",
"11\n",
"12\n",
"13\n",
"14\n",
"15\n",
"16\n",
"17\n",
"18\n",
"19\n",
"20\n",
"21\n",
"22\n",
"23\n",
"24\n",
"25\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ieeGRz04h2Re"
},
"source": [
"epochs = np.arange(30)+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 L2 regularization')\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 L2 regularization')\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": []
},
{
"cell_type": "code",
"metadata": {
"id": "CLFTzhJbiNQY"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ndswNmBBr4qX"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "yIIHtFdSr4tB"
},
"source": [
"for ix, par in enumerate(model.parameters()):\n",
" if(ix==0):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" plt.xlim(-2,2)\n",
" plt.title('Distribution of weights conencting input to hidden layer')\n",
" plt.show()\n",
" elif(ix ==1):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" plt.xlim(-2,2)\n",
" plt.title('Distribution of biases of hidden layer')\n",
" plt.show()\n",
" elif(ix==2):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" plt.xlim(-2,2)\n",
" plt.title('Distribution of weights conencting hidden to output layer')\n",
" plt.show()\n",
" elif(ix ==3):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" plt.xlim(-2,2)\n",
" plt.title('Distribution of biases of output layer')\n",
" plt.show() "
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "CYXpuDbGsfDv"
},
"source": [
"for ix, par in enumerate(model_l1.parameters()):\n",
" if(ix==0):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" #plt.xlim(-2,2)\n",
" plt.title('Distribution of weights conencting input to hidden layer')\n",
" plt.show()\n",
" elif(ix ==1):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" #plt.xlim(-2,2)\n",
" plt.title('Distribution of biases of hidden layer')\n",
" plt.show()\n",
" elif(ix==2):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" #plt.xlim(-2,2)\n",
" plt.title('Distribution of weights conencting hidden to output layer')\n",
" plt.show()\n",
" elif(ix ==3):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" #plt.xlim(-2,2)\n",
" plt.title('Distribution of biases of output layer')\n",
" plt.show() "
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "hVLaPXe0slWV"
},
"source": [
"par.cpu().detach().numpy().flatten()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "qM6Q5XRtsv61"
},
"source": [
"for ix, par in enumerate(model_l2.parameters()):\n",
" if(ix==0):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" #plt.xlim(-2,2)\n",
" plt.title('Distribution of weights conencting input to hidden layer')\n",
" plt.show()\n",
" elif(ix ==1):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" #plt.xlim(-2,2)\n",
" plt.title('Distribution of biases of hidden layer')\n",
" plt.show()\n",
" elif(ix==2):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" #plt.xlim(-2,2)\n",
" plt.title('Distribution of weights conencting hidden to output layer')\n",
" plt.show()\n",
" elif(ix ==3):\n",
" plt.hist(par.cpu().detach().numpy().flatten())\n",
" #plt.xlim(-2,2)\n",
" plt.title('Distribution of biases of output layer')\n",
" plt.show() "
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "_9QBeqRws4ka"
},
"source": [
""
],
"execution_count": null,
"outputs": []
}
]
}