Computer_Vision/Chapter03/Batch_normalization.ipynb

2208 lines
244 KiB
Plaintext
Raw Normal View History

2024-02-13 03:34:51 +01:00
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"accelerator": "GPU",
"colab": {
"name": "Batch_normalization.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": {
"dfc2bf11468b4c289a32fd98a9ad86f2": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_view_name": "HBoxView",
"_dom_classes": [],
"_model_name": "HBoxModel",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.5.0",
"box_style": "",
"layout": "IPY_MODEL_4ba5b11d1b784fccbe49f65e5da0b15e",
"_model_module": "@jupyter-widgets/controls",
"children": [
"IPY_MODEL_c97980b5df004abf9d1854c1cbc50554",
"IPY_MODEL_8556234db97c437f8118194bfea72eb1"
]
}
},
"4ba5b11d1b784fccbe49f65e5da0b15e": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"c97980b5df004abf9d1854c1cbc50554": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_view_name": "ProgressView",
"style": "IPY_MODEL_d5fbd35d236c4d95b2c534e579884657",
"_dom_classes": [],
"description": "",
"_model_name": "FloatProgressModel",
"bar_style": "success",
"max": 26421880,
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": 26421880,
"_view_count": null,
"_view_module_version": "1.5.0",
"orientation": "horizontal",
"min": 0,
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_96897d86fb5d4c12a9af5c35ac6f7409"
}
},
"8556234db97c437f8118194bfea72eb1": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_view_name": "HTMLView",
"style": "IPY_MODEL_6c3f502bd42c4cbcbcb384650ea2779a",
"_dom_classes": [],
"description": "",
"_model_name": "HTMLModel",
"placeholder": "",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": " 26422272/? [00:06<00:00, 4105528.42it/s]",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_26091a5b08ca41d2b21e3bbdbe7c402b"
}
},
"d5fbd35d236c4d95b2c534e579884657": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_view_name": "StyleView",
"_model_name": "ProgressStyleModel",
"description_width": "initial",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"bar_color": null,
"_model_module": "@jupyter-widgets/controls"
}
},
"96897d86fb5d4c12a9af5c35ac6f7409": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"6c3f502bd42c4cbcbcb384650ea2779a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_view_name": "StyleView",
"_model_name": "DescriptionStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"_model_module": "@jupyter-widgets/controls"
}
},
"26091a5b08ca41d2b21e3bbdbe7c402b": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"e0ce101f0bf9401eab1661baa5bea257": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_view_name": "HBoxView",
"_dom_classes": [],
"_model_name": "HBoxModel",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.5.0",
"box_style": "",
"layout": "IPY_MODEL_86a5d006e8b84d40a2c11c5e796784a7",
"_model_module": "@jupyter-widgets/controls",
"children": [
"IPY_MODEL_fbf004ee378347ad970cdef8ac7cbc5a",
"IPY_MODEL_eca71e40e24c413a8f78596bddb4d9de"
]
}
},
"86a5d006e8b84d40a2c11c5e796784a7": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"fbf004ee378347ad970cdef8ac7cbc5a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_view_name": "ProgressView",
"style": "IPY_MODEL_82f89d311bfb484a895f1e01c1e19230",
"_dom_classes": [],
"description": "",
"_model_name": "FloatProgressModel",
"bar_style": "success",
"max": 29515,
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": 29515,
"_view_count": null,
"_view_module_version": "1.5.0",
"orientation": "horizontal",
"min": 0,
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_33a0c83978bf441e9b9e05559aebdb06"
}
},
"eca71e40e24c413a8f78596bddb4d9de": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_view_name": "HTMLView",
"style": "IPY_MODEL_057588affeef4acea1a496c23c7caf97",
"_dom_classes": [],
"description": "",
"_model_name": "HTMLModel",
"placeholder": "",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": " 29696/? [00:02<00:00, 10950.21it/s]",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_e41a7f06f5004e67b20826f55fabbfcd"
}
},
"82f89d311bfb484a895f1e01c1e19230": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_view_name": "StyleView",
"_model_name": "ProgressStyleModel",
"description_width": "initial",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"bar_color": null,
"_model_module": "@jupyter-widgets/controls"
}
},
"33a0c83978bf441e9b9e05559aebdb06": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"057588affeef4acea1a496c23c7caf97": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_view_name": "StyleView",
"_model_name": "DescriptionStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"_model_module": "@jupyter-widgets/controls"
}
},
"e41a7f06f5004e67b20826f55fabbfcd": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"401c6e7c47a4453c97c5ac577226f075": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_view_name": "HBoxView",
"_dom_classes": [],
"_model_name": "HBoxModel",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.5.0",
"box_style": "",
"layout": "IPY_MODEL_cc2a2ca0177f4edb88d3209be9ecf863",
"_model_module": "@jupyter-widgets/controls",
"children": [
"IPY_MODEL_e9490499c34744a4aa67f394fe80ebcc",
"IPY_MODEL_40171df9e6644393a9614ecc94a38321"
]
}
},
"cc2a2ca0177f4edb88d3209be9ecf863": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"e9490499c34744a4aa67f394fe80ebcc": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_view_name": "ProgressView",
"style": "IPY_MODEL_b5503d3afbf24810a5ac4f0a96c76e16",
"_dom_classes": [],
"description": "",
"_model_name": "FloatProgressModel",
"bar_style": "success",
"max": 4422102,
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": 4422102,
"_view_count": null,
"_view_module_version": "1.5.0",
"orientation": "horizontal",
"min": 0,
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_abc2d7c1ed8f4b34a2aabdc6c3d71050"
}
},
"40171df9e6644393a9614ecc94a38321": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_view_name": "HTMLView",
"style": "IPY_MODEL_680e8dbe3bfc47a48b4b3b8d0f7f6005",
"_dom_classes": [],
"description": "",
"_model_name": "HTMLModel",
"placeholder": "",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": " 4422656/? [00:01<00:00, 2320424.59it/s]",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_786f3f3cb6744b3a853b768c761edadb"
}
},
"b5503d3afbf24810a5ac4f0a96c76e16": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_view_name": "StyleView",
"_model_name": "ProgressStyleModel",
"description_width": "initial",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"bar_color": null,
"_model_module": "@jupyter-widgets/controls"
}
},
"abc2d7c1ed8f4b34a2aabdc6c3d71050": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"680e8dbe3bfc47a48b4b3b8d0f7f6005": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_view_name": "StyleView",
"_model_name": "DescriptionStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"_model_module": "@jupyter-widgets/controls"
}
},
"786f3f3cb6744b3a853b768c761edadb": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"3915852f9bb74a3c838065caac53bd0a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_view_name": "HBoxView",
"_dom_classes": [],
"_model_name": "HBoxModel",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.5.0",
"box_style": "",
"layout": "IPY_MODEL_839781d61289413293ebde7ce9b0a2f5",
"_model_module": "@jupyter-widgets/controls",
"children": [
"IPY_MODEL_77b7f0d2e8c84deaa2a09d7ecb691d58",
"IPY_MODEL_c4dd057066ef44639f9a6c1ec4b747aa"
]
}
},
"839781d61289413293ebde7ce9b0a2f5": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"77b7f0d2e8c84deaa2a09d7ecb691d58": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_view_name": "ProgressView",
"style": "IPY_MODEL_4abd1d3d5da04d5a84883e6268ff0483",
"_dom_classes": [],
"description": "",
"_model_name": "FloatProgressModel",
"bar_style": "success",
"max": 5148,
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": 5148,
"_view_count": null,
"_view_module_version": "1.5.0",
"orientation": "horizontal",
"min": 0,
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_c5ea872b473549e8a1b4398b4df1c790"
}
},
"c4dd057066ef44639f9a6c1ec4b747aa": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_view_name": "HTMLView",
"style": "IPY_MODEL_f24963dc9e544464a8776b1a8513a2c5",
"_dom_classes": [],
"description": "",
"_model_name": "HTMLModel",
"placeholder": "",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": " 6144/? [00:00<00:00, 33099.32it/s]",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_3745af02e447442c8e8aff5dc832549f"
}
},
"4abd1d3d5da04d5a84883e6268ff0483": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_view_name": "StyleView",
"_model_name": "ProgressStyleModel",
"description_width": "initial",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"bar_color": null,
"_model_module": "@jupyter-widgets/controls"
}
},
"c5ea872b473549e8a1b4398b4df1c790": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"f24963dc9e544464a8776b1a8513a2c5": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_view_name": "StyleView",
"_model_name": "DescriptionStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"_model_module": "@jupyter-widgets/controls"
}
},
"3745af02e447442c8e8aff5dc832549f": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
}
}
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/PacktPublishing/Modern-Computer-Vision-with-PyTorch/blob/master/Chapter03/Batch_normalization.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "-BL2HBLKo0yD",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 552,
"referenced_widgets": [
"dfc2bf11468b4c289a32fd98a9ad86f2",
"4ba5b11d1b784fccbe49f65e5da0b15e",
"c97980b5df004abf9d1854c1cbc50554",
"8556234db97c437f8118194bfea72eb1",
"d5fbd35d236c4d95b2c534e579884657",
"96897d86fb5d4c12a9af5c35ac6f7409",
"6c3f502bd42c4cbcbcb384650ea2779a",
"26091a5b08ca41d2b21e3bbdbe7c402b",
"e0ce101f0bf9401eab1661baa5bea257",
"86a5d006e8b84d40a2c11c5e796784a7",
"fbf004ee378347ad970cdef8ac7cbc5a",
"eca71e40e24c413a8f78596bddb4d9de",
"82f89d311bfb484a895f1e01c1e19230",
"33a0c83978bf441e9b9e05559aebdb06",
"057588affeef4acea1a496c23c7caf97",
"e41a7f06f5004e67b20826f55fabbfcd",
"401c6e7c47a4453c97c5ac577226f075",
"cc2a2ca0177f4edb88d3209be9ecf863",
"e9490499c34744a4aa67f394fe80ebcc",
"40171df9e6644393a9614ecc94a38321",
"b5503d3afbf24810a5ac4f0a96c76e16",
"abc2d7c1ed8f4b34a2aabdc6c3d71050",
"680e8dbe3bfc47a48b4b3b8d0f7f6005",
"786f3f3cb6744b3a853b768c761edadb",
"3915852f9bb74a3c838065caac53bd0a",
"839781d61289413293ebde7ce9b0a2f5",
"77b7f0d2e8c84deaa2a09d7ecb691d58",
"c4dd057066ef44639f9a6c1ec4b747aa",
"4abd1d3d5da04d5a84883e6268ff0483",
"c5ea872b473549e8a1b4398b4df1c790",
"f24963dc9e544464a8776b1a8513a2c5",
"3745af02e447442c8e8aff5dc832549f"
]
},
"outputId": "3a7affda-b112-4552-96fc-ad2ffa615188"
},
"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\n",
"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": "dfc2bf11468b4c289a32fd98a9ad86f2",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=26421880.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n",
"Extracting /content/FashionMNIST/raw/train-images-idx3-ubyte.gz to /content/FashionMNIST/raw\n",
"\n",
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz\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": "e0ce101f0bf9401eab1661baa5bea257",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=29515.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n",
"Extracting /content/FashionMNIST/raw/train-labels-idx1-ubyte.gz to /content/FashionMNIST/raw\n",
"\n",
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz\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": "401c6e7c47a4453c97c5ac577226f075",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=4422102.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n",
"Extracting /content/FashionMNIST/raw/t10k-images-idx3-ubyte.gz to /content/FashionMNIST/raw\n",
"\n",
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz\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": "3915852f9bb74a3c838065caac53bd0a",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(FloatProgress(value=0.0, max=5148.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\n",
"Extracting /content/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz to /content/FashionMNIST/raw\n",
"\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.7/dist-packages/torchvision/datasets/mnist.py:498: 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:180.)\n",
" return torch.from_numpy(parsed.astype(m[2], copy=False)).view(*s)\n"
],
"name": "stderr"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ohCvmE9YpCAX"
},
"source": [
"tr_images = fmnist.data\n",
"tr_targets = fmnist.targets"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "-31yzXgbpG6Z"
},
"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": "qWzQyWZfpICr"
},
"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": "2VYvYiaizEEm"
},
"source": [
"### Without BatchNormalization"
]
},
{
"cell_type": "code",
"metadata": {
"id": "9S5WW03T0Q1G"
},
"source": [
"class FMNISTDataset(Dataset):\n",
" def __init__(self, x, y):\n",
" x = x.float()/(255*10000)\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",
" class neuralnet(nn.Module):\n",
" def __init__(self):\n",
" super().__init__()\n",
" self.input_to_hidden_layer = nn.Linear(784,1000)\n",
" self.hidden_layer_activation = nn.ReLU()\n",
" self.hidden_to_output_layer = nn.Linear(1000,10)\n",
" def forward(self, x):\n",
" x = self.input_to_hidden_layer(x)\n",
" x1 = self.hidden_layer_activation(x)\n",
" x2= self.hidden_to_output_layer(x1)\n",
" return x2, x1\n",
" model = neuralnet().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)[0]\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)[0]\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": "fIKC4GCC0Q3r"
},
"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": "GKRGmnNs0Q6l"
},
"source": [
"@torch.no_grad()\n",
"def val_loss(x, y, model):\n",
" model.eval()\n",
" prediction = model(x)[0]\n",
" val_loss = loss_fn(prediction, y)\n",
" return val_loss.item()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "VDCAaKZ90Yh0"
},
"source": [
"trn_dl, val_dl = get_data()\n",
"model, loss_fn, optimizer = get_model()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "EkcypD_k0Ykc",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "15f8aac2-fc23-4ad8-854c-28fb71dbb091"
},
"source": [
"train_losses, train_accuracies = [], []\n",
"val_losses, val_accuracies = [], []\n",
"for epoch in range(100):\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",
"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",
"30\n",
"31\n",
"32\n",
"33\n",
"34\n",
"35\n",
"36\n",
"37\n",
"38\n",
"39\n",
"40\n",
"41\n",
"42\n",
"43\n",
"44\n",
"45\n",
"46\n",
"47\n",
"48\n",
"49\n",
"50\n",
"51\n",
"52\n",
"53\n",
"54\n",
"55\n",
"56\n",
"57\n",
"58\n",
"59\n",
"60\n",
"61\n",
"62\n",
"63\n",
"64\n",
"65\n",
"66\n",
"68\n",
"69\n",
"70\n",
"71\n",
"72\n",
"73\n",
"74\n",
"75\n",
"76\n",
"77\n",
"78\n",
"79\n",
"80\n",
"81\n",
"82\n",
"83\n",
"84\n",
"85\n",
"86\n",
"87\n",
"88\n",
"89\n",
"90\n",
"91\n",
"92\n",
"93\n",
"94\n",
"95\n",
"96\n",
"97\n",
"98\n",
"99\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "QGzX7_vy0Ym3",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 337
},
"outputId": "633568a4-9e32-4cd3-8a0c-532008ccd27c"
},
"source": [
"epochs = np.arange(100)+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 very small input values')\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 very small input values')\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": "rAa9ytf05_fs",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 298
},
"outputId": "02131268-7458-4ac2-ac33-63eecff0b54e"
},
"source": [
"plt.hist(model(x)[1].cpu().detach().numpy().flatten())\n",
"plt.title(\"Hidden layer node values' distribution\")"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Text(0.5, 1.0, \"Hidden layer node values' distribution\")"
]
},
"metadata": {
"tags": []
},
"execution_count": 11
},
{
"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": "rY1MgWKhUV7M",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"outputId": "f4242001-d2cc-4a9b-eb2a-b18c0baf3296"
},
"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": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEICAYAAABBBrPDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAfwUlEQVR4nO3debwcZb3n8c/XhACyJUCMkESCkhEio4AR4svlckUhIBrGhYsvlIhoBgWXK44GUVGWAe4d5cqM4qDkkiAKiHKJCsbIehllCcgekMMSk0BIIBBAZP/NH/U7UGm6n9MhJ92d8H2/Xv06VU899Ty/rq6qX22nWxGBmZlZK6/qdgBmZtbbnCjMzKzIicLMzIqcKMzMrMiJwszMipwozMys6BWZKCT9SNI3B6mt10l6XNKQHL9M0qcHo+1s7yJJUwervVXo9zhJD0pasgb7eFzS69usG5K2W1OxrK3W1Poh6V2S7hjsdrtB0rcl/bQw/VZJu7eYtrukRYV5z5B03CCE2djuJyVdOdjtvlzrXKKQdK+kv0t6TNIjkv4o6VBJL7zXiDg0Io5ts633lupExF8jYuOIeG4QYn/JCh0Re0fEzNVtexXjeB1wBDAhIl67pvrJ5Xb36rbTaxvVmtLJ9SMi/jMi3jjY7TYz0EHAmv58I+JNEXHZmmp/XbDOJYr0gYjYBNgGOBH4GnD6YHciaehgt9kjXgc8FBFLux2ImXVGcX8WEevUC7gXeG9D2a7A88COOX4GcFwObwn8BngEWA78J1UCPTPn+TvwOPBVYBwQwCHAX4EramVDs73LgBOAa4BHgQuAzXPa7sCiZvECk4GngWeyvxtr7X06h18FfANYACwFZgGb5bT+OKZmbA8CRxWW02Y5/7Js7xvZ/nvzPT+fcZzRZN7LgQ/n8Duy3/fn+B7ADbW6nwLmAw8Dc4BtatMC2C6HtwB+ncvsWuA44MqGuocCd+Zn9QNAwA7Ak8BzGe8jWX8f4DbgMWAx8JXCsvhMxvhYzrNLlu+Qy/8R4Fbgg7V5zsgYfpvzXQ28oTZ9e2Au1Tp1B7D/Ksz7ptq8DwBfb3P9+CRwJfC/cnnfA+xda3dbqnX2MeAPGcNPWyyT3amtq1Tr6VeAm4AVwDnABvW6GeeDWffA2rwvxFiPM4evyM/2b/m+/qkhjlafb9P1t8V7+TZwbtZ/LD/Lic32GcCG+fk8nOvC/2hYDjsD12c75wBnk/uSnL4vcAPVOvNH4M3tLMMmMb+wjHL8+8BCqu3jOuBdWf5a4Algi1rdXXK5rNfmNngY1XZ1T8ttZE3utLvxokmiyPK/Ap+tbaj9ieIE4EfAevl6F6BmbfHizngWsFGuVP1l9USxGNgx6/yS3BgpJIraCv3ThumX8eKO4FNAH/B6YGPgV8CZDbH9OON6C/AUsEOL5TSLKoltkvP+BTikVZwN8x4D/O8c/jpwF3BSbdr3c3hKxrsDMJRqY/5jw0ranyjOztergQlUG0VjovgNMJzqjGcZMLnZRpVl9/PixjSC3Pk3eS8fzc/rbVSJZzuqM9H1MvavA8OA91DtHN5YW4ceojoIGQqcBZyd0zbK+A/OaTtT7UAntDHvJhn7EcAGOb5bm+vHJ6kSyWeAIcBngft4cX3+E1USGQa8k2qnsyqJ4hpga2Bzqh3PobW6zwLfA9YH/oFqx//GxhibfV719aBFLM0+35brb5P5v02VbPbJ5XICcFWLbfBEqoPFzYGxwC39yyGX2wLgn6nWj4/k8u7fl+xMdQC3W/YzNdtef6BlONB7Bj5OdTA1NNeNJbyYqC8k9205fjIvbp/tbINzM54NW30G6+qlp2buo1oYjZ4BtqLKss9EdW12oC/A+nZE/C0i/t5i+pkRcUtE/A34JrB//83u1XQg8L2IuDsiHgeOBA5oOGX8TkT8PSJuBG6kShgryVgOAI6MiMci4l7gu8An2ozjcqqdAcC7qTa8/vF/yOlQnQGcEBHzI+JZ4H8CO0napkk8HwaOjognIuI2oNl19xMj4pGI+CtwKbBTIcZngAmSNo2IhyPi+hb1Pg38S0RcG5W+iFgATKJKxidGxNMRcQlVovpYbd7zI+KafG9n1eLZF7g3Iv49Ip6NiD9THTB8tM15l0TEdyPiyfx8ri68z0YLIuLHUd0zm0m1bo/K+05vA76V7+dKYPYqtAtwSkTcFxHLqc7+Gpf/NyPiqYi4nOpsaf9VbL8tL3P9vTIiLszlciZNtou0P3B8RCyPiIXAKbVpk6gSxL/lvuI8qrPfftOA/xsRV0fEc1HdO3oq5+s30DJsKiJ+GhEP5fr0XaqE3H8PaSZVIulfNh/L9wjtbYMn5PtttT97RSWK0VSn8o3+lSrj/l7S3ZKmt9HWwlWYvoBq5dqyrSjLts726m0PBUbVyupPKT1BtbNrtGXG1NjW6Dbj+BPwXySNolrRZwFjJW1JdZR8RdbbBvh+PlTQf2lPTfoZme+jvtyaLeN23lu/D1MdQS6QdLmkt7eoN5bqjKjR1sDCiHi+Vta4jFrFsw2wW//7zvd+INVlgoHmbRVPu15oNyKeyMGNqd7P8loZDLwet2ybly7/h/PAqN+C7HNNeDnrb2PsG7S4Jr81L91+69MWNxxI1qdvAxzR8LmPZeXlsCrr8AskfUXSfEkrst3NeHGfcgHVQdG2wPuAFRFxTS2mgbbBAdeDV0SikPQ2qgXzkicn8ojkiIh4PfBB4MuS9uif3KLJgc44xtaGX0d1dPsg1en4q2txDaHaSbbb7n1UH3y97WeprmOvigczpsa2Frczc+5srgO+CNwSEU9TXY/9MnBXRDyYVRcC/z0ihtdeG0bEHxuaXJbvY0ytbCzte8lyyzOEKcBrgP+gukbdzELgDU3K76NKfvVtpN1ltBC4vOF9bxwRn21z3laPDA+0fpTcD2wu6dW1slVZxgMZIWmj2vjrqJYhNKz3rJww29H4vldr/R3A/bx0+61PGy1JLaYvpDobqX/ur46In69OQJLeRXWPdH9gREQMp7rHIYCIeJJq/f441VnVmbXZ29kGB1yv1ulEIWlTSftSXfv+aUTc3KTOvpK2yw9/BdVNs/6jyAdovdGWfFzShNwojwHOy1Pev1Adybxf0npU1wvXr833ADCuYedU93PgnyVtK2ljqtPIc/KUsm0Zy7nA8ZI2ydPQLwMtnzVv4nLgcF68zHRZwzhU936OlPQmAEmbSapffqnH8yvg25JeLWl74KBViOUBYIykYdnPMEkHStosIp6huhb/fIt5fwJ8RdJbVdkul8fVVEd8X5W0Xj5n/wGqdWkgv6E64/pEzruepLdJ2qHNebeS9CVJ6+fns1vtfZbWj5bycto8qmU8LM+wPrCq7QzgO9n2u6guof0iy28APpSf7XZUD4PUDbSdrfT5DtL628q5VOvsCEljgM/Xpv2J6oDmC/mZfojqDLrfj4FDJe2W69JGua1vspoxbZL9LgOGSvoWsGlDnVlU9zU+yMqJoq1tcCDraqL4taTHqLLpUVQ32Q5uUXc81RMgj1OtCD+MiEtz2gnAN/K07Sur0P+ZVDcsl1DdkPwCQESsAD5HtXNaTHWkVf9nnv4N6yFJza6pz8i2r6B6ouVJVl6RV8Xns/+7qc60fpbtt+tyqhX4ihbjRMT5wEnA2ZIepboxuHeL9g6nOp1eQvUef051fbcdl1A9ybJEUv/ZzCeAe7PfQ6ku/bxERPwCOJ7q/T9GdfaxeZ4lfSDjfRD4IXBQRNw+UDAR8RiwJ9V19PvyPZ3EygcFpXnfl30voXoa5R9z8kDrx0AOBN5OdSP9OKqnbtpdxgNZQvVUzX1U91wOrS2rk6me2HqA6nr6WQ3zfhuYmdtZs/sazT7f1V1/W/kO1eWke4DfU9vp5jrxIaod8nLgn6gOcPqnz6N6kOD/UC2Lvqy7uuYAv6M60FxAtd2vdLkoIv4f1cHQ9XlQ0F++KttgS/1PQ5j1FEknAa+NiKndjmVdJekc4PaIOHo129md6ox9zEB1bc2RdAnws4j4yWC3va6eUdhaRtL2kt6cp+y7Ul2eO
"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": "zOLSIysxUWYs"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "V-Gq2MLRUWbs"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "pDSvGF6F5_iU"
},
"source": [
"### With BatchNormalization"
]
},
{
"cell_type": "code",
"metadata": {
"id": "RB4QQE2Q5_k6"
},
"source": [
"class FMNISTDataset(Dataset):\n",
" def __init__(self, x, y):\n",
" x = x.float()/(255*10000)\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",
" class neuralnet(nn.Module):\n",
" def __init__(self):\n",
" super().__init__()\n",
" self.input_to_hidden_layer = nn.Linear(784,1000)\n",
" self.batch_norm = nn.BatchNorm1d(1000)\n",
" self.hidden_layer_activation = nn.ReLU()\n",
" self.hidden_to_output_layer = nn.Linear(1000,10)\n",
" def forward(self, x):\n",
" x = self.input_to_hidden_layer(x)\n",
" x0 = self.batch_norm(x)\n",
" x1 = self.hidden_layer_activation(x0)\n",
" x2= self.hidden_to_output_layer(x1)\n",
" return x2, x1\n",
" model = neuralnet().to(device)\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)[0]\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)[0]\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": "axYwCbYF6o4X"
},
"source": [
"def val_loss(x, y, model):\n",
" model.eval()\n",
" with torch.no_grad():\n",
" prediction = model(x)[0]\n",
" val_loss = loss_fn(prediction, y)\n",
" return val_loss.item()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "_dVibfKA5_nK"
},
"source": [
"trn_dl, val_dl = get_data()\n",
"model, loss_fn, optimizer = get_model()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "fm9CMO7Z5_px",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "a0e222ca-80b4-4faf-916e-2c4da49c9e5d"
},
"source": [
"train_losses, train_accuracies = [], []\n",
"val_losses, val_accuracies = [], []\n",
"for epoch in range(100):\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",
"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",
"30\n",
"31\n",
"32\n",
"33\n",
"34\n",
"35\n",
"36\n",
"37\n",
"38\n",
"39\n",
"40\n",
"41\n",
"42\n",
"43\n",
"44\n",
"45\n",
"46\n",
"47\n",
"48\n",
"49\n",
"50\n",
"51\n",
"52\n",
"53\n",
"54\n",
"55\n",
"56\n",
"57\n",
"58\n",
"59\n",
"60\n",
"61\n",
"62\n",
"63\n",
"64\n",
"65\n",
"66\n",
"67\n",
"68\n",
"69\n",
"70\n",
"71\n",
"72\n",
"73\n",
"74\n",
"75\n",
"76\n",
"77\n",
"78\n",
"79\n",
"80\n",
"81\n",
"82\n",
"83\n",
"84\n",
"85\n",
"86\n",
"87\n",
"88\n",
"89\n",
"90\n",
"91\n",
"92\n",
"93\n",
"94\n",
"95\n",
"96\n",
"97\n",
"98\n",
"99\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "TSkAPTGh6ZFa",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 337
},
"outputId": "bd0f9581-6567-4ec5-8498-065142be5a0b"
},
"source": [
"epochs = np.arange(100)+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 very small input values and batch normalization')\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 very small input values and batch normalization')\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": "iVBORw0KGgoAAAANSUhEUgAAAhcAAACgCAYAAAC/iU6sAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydd3wVxfbAvycJEAKhN2mJDRCIVMWCgoKCPgVRURRQRCz4LNj1YXs+sT19lmf7YQEVEBuiPMUCEhs2VFCqglKVqkBCKCE5vz9mb+7em1v2Jje5KfP9fPZz7+7OzpzZmd05e+bMjKgqFovFYrFYLPEiKdECWCwWi8ViqVpY5cJisVgsFktcscqFxWKxWCyWuGKVC4vFYrFYLHHFKhcWi8VisVjiilUuLBaLxWKxxJVyUy5EZLaIXBjvsIlERFaLSP8yiFdF5BDn/zMicruXsCVIZ7iIfFhSOS3eEJHjRGRFhPOZTjmmlKdcFRURuUtEpjj/I94bEVkiIn3LVcA4IyKjROTzRMtRUiLJX551W0SyRWRMWadT1gTfTxHJFZGD4pxGWyfe5HjG6yZigYtIrms3DdgLFDj7l6nqVK8JqeopZRG2qqOql8cjHhHJBH4DaqjqfifuqYDnMrSUDFX9DGjv2xeR1cAYVZ2TMKGqCKraqTzSEZHJwHpVva080rMYRESBQ1V1ZaJlSRSqWre0cQS/c1R1LVDqeCMRUblwZyrSC1FEUnwNlsWSaGx99Ia9TxZL6bHPUWhK1C0iIn1FZL2I3CwiG4FJItJQRP4nIltE5C/nf2vXNUUmK5/ZR0QecsL+JiKnlDDsgSLyqYjkiMgcEXnSZ1INIbcXGf8lIl848X0oIk1c50eKyBoR2SYi4yPcn14istFtchKRISLyo/P/SBH5UkS2i8gfIvKEiNQME9dkEbnHtX+jc83vIjI6KOzfROQHEdkpIutE5C7X6U+d3+2OOezoEOa3Y0TkWxHZ4fwe4/XexHifG4nIJCcPf4nITNe5wSKy0MnDKhEZ6BwP6IKS0Kbzi0VkLfCxc/x1pxx2OHWkk+v62iLysFOeO5w6VltE3hWRq4Ly86OIDAmRzxdF5HrnfytHhr87+weLyJ8ikiTO8+IcfxloC8xyyuEmV5TDRWStiGwNV7881K0kEbnFuXfbROQ1EWkU7j7FmN9UEZnixLvdqSPNnXPZInKPiMx38jVLRBqLyFSnLL8VYz3zxfWYU0d3ish3InJcqPxGw10vnDrxmoi85NTRJSLSMyjsrSKy1Kl3k0Qk1TlXzLTv3KtDRORSYDhwky9vIeR4WkQeCjr2tohc5/z3lUmOk36x++uEK9aNIEHmfhEZLSLLnDx8ICIZznERkUdEZLNzX38Skc5h0rnIiSNHRH4Vkctc53zv9+uduP4QkYtc5xuLyDtOGt8AB4dKI4jRYp73P0TkBldcYd+FIuJ7Zy1y7vu5zvGQ7wiHDPH2joqWx/pOPdoi5h1xm4gkOedGOWk8IiLbgLvEvKefEtOln+ucbyEijzrltFxEurni91QfnLC+etjSidu35Ymx7PjeNx+LeTa3innuGjjnir1zguuZE/c7Yt5ZK0XkElf6EZ+rsKiqpw1YDfR3/vcF9gMPALWA2kBj4CxM90k68Dow03V9NsbyATAKyAcuAZKBscDvgJQg7JfAQ0BNoDewE5gSJg9eZFwFtHPylA3c75zrCOQCxzt5/o9zD/qHSWsVcJJr/3XgFud/D+AojOUoE1gGjHOFVeAQ5/9k4B7n/0BgE9AZqANMCwrbF8jCKI2HO2HPcM5lOmFTXOmMAj53/jcC/gJGOnKd5+w3jnZvSnCf3wVeBRoCNYA+zvEjgR3ASU4eWgEdguufs3+Xr5xdeXvJuS+1neOjnfRrAY8CC13XP+nkoRWmXh3jhDsH+NoVrguwDagZIp+jgVnO//Od+/Oq69zbrnJZH+pZCpL/WefedsF0QR5Wgrp1DfAV0NrJz/8Br4S7TzHm9zJgllOuyZh6XM9VP1ZiGpr6wFLgZ6A/pj69BExyxTXCqScpwPXARiA1QtmmhLkXRffSuW4PcKoj333AV0FhFwNtMPX9C/zP1iicZyHacxhGjuOBdfjfSw2B3UBLZ38o0BJTr88FdgEHhHgOi+WXwPfhYOc+H+bcu9uA+c65AcB3QANAnDAHhJH3b05ZCdAHyAO6B73f78Y8n6c65xs656cDr2HqUGdgQ/C9C1G3X3HCZwFbXGXm+V3o4R2Rjfd3VLQ8vgS8jXl/ZGLq8sWu8toPXOXIXdupH1ud/KRiPnB+Ay7A1MV7gHmu9D3Vh1D3wHV8Kv5n+xDnntQCmmI+Jh/18M5JcfY/BZ5yZO/qlNGJXp6rsM9EtABhHuK+wD6cl0GY8F2Bv8I8IKOAla5zaU5GW8QSFqON7QfSXOenEEa58Cjjba79K4D3nf93ANNd5+o49yCccnEP8ILzP92pPBlhwo4D3or2UgNewPWwYB6ikBXPOf8o8EiEl9Yo/C+1kcA3Qdd/CYyKdm9iuc/AAUAhzkMcFO7/fPJGqn+uCh/cAB0UQYYGTpj6mAd6N9AlRLhUjFJ1qLP/EPBUmDgPdsImAc9gGt/1zrkXgetcz4sX5aK169g3wLBY6xbm5dzPFfYAjHKeQoj7FGN+RwPzgcNDnMsGxrv2HwZmu/ZPx6Xchbj+L195hClbr8rFHNe5jsDuoLCXu/ZPBVYFPwvRnsMwcgiwFjje2b8E+DhC+IXA4BDPYbH8Evg+nI3TyDn7SZhGMQM4EdMIHgUkeXk2XfHMBK5x1dfdQTJsduJNdupTB9e5e4PvXYi67Q7/IPB8mPBh34XOfqR3RDYe31Ee8rgP6Og6dxmQ7SqvtUHxTQaede1fBSxz7WcB22OtD6HugXPsZowiWTtMfGcAP4R6ToLrGUbZLgDSXefvAyZ7ea7CbaUZLbJFVff4dkQkTUT+zzEh7cRoQg0kvDfqRt8fVc1z/oZzMAkXtiXwp+sYmK+HkHiUcaPrf55LppbuuFV1F+YLLxzTgDNFpBZwJvC9qq5x5GgnpqtgoyPHvUBI810QATIAa4Ly10tE5jmmvB3A5R7j9cW9JujYGsyXgY9w9yaAKPe5DabM/gpxaRvMl0dJKbo3IpIsIvc7psedmIcLzP1ogmlUi6Xl1OlXgRGOGfQ84OVQianqKkzD3hU4Dvgf8LuItMd8DX4So/ye7i8R6hamkXnLMTNvxygbBUBz1/Xueuw5v87xD4Dpjon7QRGp4Tq/yfV/d4h9tw/XDWLM8jscOevjva5GIvgepkrgSIXg56dlHNJEzVt3Oub+gbFkFTlLi8gFjinfVy6dKVl+M4DHXPH8iVFsWqnqx8ATGKvcZhGZKCL1QkUiIqeIyFeOGXw7RtFyy7NNA/0IfPWxKaZBCvseCkPI+16Cd2G0d4TXZwjC57EJxprhzlfwuzBUOxNL/S9xfRDjFnANxiq92znWXESmi8gG5z5O8Rof/nY0x3Us2rs/+LkqRmmUCw3avx7jEd9LVethzIRgKn5Z8QfQSETSXMfaRAhfGhn/cMftpNk4XGBVXYopoFMwL5pprtNPA8sxX4v1gH+URAaM5cbNNOAdoI2q1sd8TfviDS6vYH7HvLjctMWYPGMl0n1ehymzBiGuW0f4/ttdGKuVjxYhwrjzeD7GhNwf03BlumTYijHzhUvrRUwfez8gT1W/DBMOjAJxNqYbYYOzfyHGLL4wzDXRyiIiUerWOuAUVW3g2lId2cKl7ym/qpqvqv9U1Y6YbqTTMGbfmBDjX3ETpkumoao2wJi6y/Jd4SP4+fnd+R9Qv0QkuH55KbNXgLPF+ED0At504srAdHldielmbIDpngmV313Ob7i6vg4zUs9dvrVVdT6Aqj6uqj0wX5ftgBuDE3CU0jcxVqrmjjzvhZEnmC0Ya3Gk91Aowt33WN+Fkd4R8WIrxjrjfh8GvwtL/AzHWB+Cr22PeV7PUVW3gnOvI1OWcx9HBMUXSd7fMe/kdNexkr77i4jnPBfpGO1suxgHsjvjGHdInK+1BRiHm
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "lvxnclR16ZJZ",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 298
},
"outputId": "fc6a2423-1b9a-4fe1-ef93-b0602c34be55"
},
"source": [
"plt.hist(model(x)[1].cpu().detach().numpy().flatten())\n",
"plt.title(\"Hidden layer node values' distribution with batch normalization\")"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Text(0.5, 1.0, \"Hidden layer node values' distribution with batch normalization\")"
]
},
"metadata": {
"tags": []
},
"execution_count": 17
},
{
"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": "yShRnRmN6ZS2",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"outputId": "d3700377-bfdb-4d64-b152-f750fc8e9a54"
},
"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": "P2cfKrRG6ZV_"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "1HpqnjA85_r6"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "laPDKyDg0Ypk"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "8vsXfrfkuU0C"
},
"source": [
""
],
"execution_count": null,
"outputs": []
}
]
}