Computer_Vision/Chapter03/Impact_of_regularization.ipynb

2205 lines
210 KiB
Plaintext
Raw Normal View History

2024-02-13 03:34:51 +01:00
{
"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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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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
"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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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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
"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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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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
"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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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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
"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": []
}
]
}