Computer_Vision/Chapter03/Varying_batch_size.ipynb

1630 lines
113 KiB
Plaintext
Raw Normal View History

2024-02-13 03:34:51 +01:00
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Varying_batch_size.ipynb",
"provenance": [],
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU",
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"b0ef1441e384495594506d7944f85aea": {
"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_d4042a5a8ff6462d98c277da20df21ac",
"_model_module": "@jupyter-widgets/controls",
"children": [
"IPY_MODEL_b0a68f230c2b4fe9ba7d595bfdb6ab07",
"IPY_MODEL_72ce7b2c6db8442d9e5d6cdcbc86f9c6"
]
}
},
"d4042a5a8ff6462d98c277da20df21ac": {
"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
}
},
"b0a68f230c2b4fe9ba7d595bfdb6ab07": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_view_name": "ProgressView",
"style": "IPY_MODEL_33e6796018ab462b9528a48965f938e9",
"_dom_classes": [],
"description": "",
"_model_name": "FloatProgressModel",
"bar_style": "info",
"max": 1,
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": 1,
"_view_count": null,
"_view_module_version": "1.5.0",
"orientation": "horizontal",
"min": 0,
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_8af91974539f45a3bb1b3c7101c815a7"
}
},
"72ce7b2c6db8442d9e5d6cdcbc86f9c6": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_view_name": "HTMLView",
"style": "IPY_MODEL_09195fccfe2441e3a3500338982f80ad",
"_dom_classes": [],
"description": "",
"_model_name": "HTMLModel",
"placeholder": "",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": " 26427392/? [00:20<00:00, 307796.04it/s]",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_e57354b0a483484fa83bb5b259e9b576"
}
},
"33e6796018ab462b9528a48965f938e9": {
"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"
}
},
"8af91974539f45a3bb1b3c7101c815a7": {
"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
}
},
"09195fccfe2441e3a3500338982f80ad": {
"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"
}
},
"e57354b0a483484fa83bb5b259e9b576": {
"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
}
},
"8b041420cc6244a7a84ad1b10d4780b8": {
"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_50840d961e6f4572bbfb550abee0a380",
"_model_module": "@jupyter-widgets/controls",
"children": [
"IPY_MODEL_c0b10a2488244a469d2a619a37d7bf9b",
"IPY_MODEL_59de8b493d6649d0ae706cf187426e4f"
]
}
},
"50840d961e6f4572bbfb550abee0a380": {
"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
}
},
"c0b10a2488244a469d2a619a37d7bf9b": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_view_name": "ProgressView",
"style": "IPY_MODEL_7a211cdaf7ed4bf9b3c8fc5d12a2732f",
"_dom_classes": [],
"description": "",
"_model_name": "FloatProgressModel",
"bar_style": "success",
"max": 1,
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": 1,
"_view_count": null,
"_view_module_version": "1.5.0",
"orientation": "horizontal",
"min": 0,
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_dfbf25a7c19d4b08a11dc7edfc3d5c8d"
}
},
"59de8b493d6649d0ae706cf187426e4f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_view_name": "HTMLView",
"style": "IPY_MODEL_4c2ab6b58c9c4c20a950ede3d014034a",
"_dom_classes": [],
"description": "",
"_model_name": "HTMLModel",
"placeholder": "",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": " 32768/? [00:00<00:00, 92394.38it/s]",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_90dcced4b1134b89b17ffe3c90f7fa38"
}
},
"7a211cdaf7ed4bf9b3c8fc5d12a2732f": {
"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"
}
},
"dfbf25a7c19d4b08a11dc7edfc3d5c8d": {
"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
}
},
"4c2ab6b58c9c4c20a950ede3d014034a": {
"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"
}
},
"90dcced4b1134b89b17ffe3c90f7fa38": {
"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
}
},
"f58f91cd6a7f404399325246740c2d88": {
"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_fdad6af2c7b94480a5a2b90749ca5623",
"_model_module": "@jupyter-widgets/controls",
"children": [
"IPY_MODEL_0559d9f1afb5440dab111daea56dc62b",
"IPY_MODEL_1fe0b28367804c15bd4447f883641a2f"
]
}
},
"fdad6af2c7b94480a5a2b90749ca5623": {
"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
}
},
"0559d9f1afb5440dab111daea56dc62b": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_view_name": "ProgressView",
"style": "IPY_MODEL_4eb6839571a845b29a92ba501ecfd1f0",
"_dom_classes": [],
"description": "",
"_model_name": "FloatProgressModel",
"bar_style": "success",
"max": 1,
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": 1,
"_view_count": null,
"_view_module_version": "1.5.0",
"orientation": "horizontal",
"min": 0,
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_4ab963bac55043a3882682344d2eb0aa"
}
},
"1fe0b28367804c15bd4447f883641a2f": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_view_name": "HTMLView",
"style": "IPY_MODEL_3c27e130e3734d8fa63733f32fbdeec7",
"_dom_classes": [],
"description": "",
"_model_name": "HTMLModel",
"placeholder": "",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": " 4423680/? [00:00<00:00, 18956806.50it/s]",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_875904b5fafa4d668c7c3511ffd72f01"
}
},
"4eb6839571a845b29a92ba501ecfd1f0": {
"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"
}
},
"4ab963bac55043a3882682344d2eb0aa": {
"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
}
},
"3c27e130e3734d8fa63733f32fbdeec7": {
"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"
}
},
"875904b5fafa4d668c7c3511ffd72f01": {
"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
}
},
"c8fa569a7a6545d2b428fd647aae128b": {
"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_3a46c291254e4fab9472a2d3b7361f8e",
"_model_module": "@jupyter-widgets/controls",
"children": [
"IPY_MODEL_f6d9a507191a4250a02014dc8641fc63",
"IPY_MODEL_874e576bc71e470c8eed23d84af9a044"
]
}
},
"3a46c291254e4fab9472a2d3b7361f8e": {
"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
}
},
"f6d9a507191a4250a02014dc8641fc63": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_view_name": "ProgressView",
"style": "IPY_MODEL_760fe7a6e6f24de498379f569524b7da",
"_dom_classes": [],
"description": "",
"_model_name": "FloatProgressModel",
"bar_style": "success",
"max": 1,
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": 1,
"_view_count": null,
"_view_module_version": "1.5.0",
"orientation": "horizontal",
"min": 0,
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_f00dd0c2d9884934819916ca63e835db"
}
},
"874e576bc71e470c8eed23d84af9a044": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_view_name": "HTMLView",
"style": "IPY_MODEL_162fb2c25f554b5f8c81aac04cedd8e0",
"_dom_classes": [],
"description": "",
"_model_name": "HTMLModel",
"placeholder": "",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": " 8192/? [00:00<00:00, 29554.45it/s]",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_54e10c148e4f4b53a9958f2eba5b9577"
}
},
"760fe7a6e6f24de498379f569524b7da": {
"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"
}
},
"f00dd0c2d9884934819916ca63e835db": {
"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
}
},
"162fb2c25f554b5f8c81aac04cedd8e0": {
"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"
}
},
"54e10c148e4f4b53a9958f2eba5b9577": {
"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/Hands-On-Computer-Vision-with-PyTorch/blob/master/Chapter03/Varying_batch_size.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "m_g32VIe26-J",
"outputId": "f3769072-8f35-47b6-c6e9-7350bedf1328",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 437,
"referenced_widgets": [
"b0ef1441e384495594506d7944f85aea",
"d4042a5a8ff6462d98c277da20df21ac",
"b0a68f230c2b4fe9ba7d595bfdb6ab07",
"72ce7b2c6db8442d9e5d6cdcbc86f9c6",
"33e6796018ab462b9528a48965f938e9",
"8af91974539f45a3bb1b3c7101c815a7",
"09195fccfe2441e3a3500338982f80ad",
"e57354b0a483484fa83bb5b259e9b576",
"8b041420cc6244a7a84ad1b10d4780b8",
"50840d961e6f4572bbfb550abee0a380",
"c0b10a2488244a469d2a619a37d7bf9b",
"59de8b493d6649d0ae706cf187426e4f",
"7a211cdaf7ed4bf9b3c8fc5d12a2732f",
"dfbf25a7c19d4b08a11dc7edfc3d5c8d",
"4c2ab6b58c9c4c20a950ede3d014034a",
"90dcced4b1134b89b17ffe3c90f7fa38",
"f58f91cd6a7f404399325246740c2d88",
"fdad6af2c7b94480a5a2b90749ca5623",
"0559d9f1afb5440dab111daea56dc62b",
"1fe0b28367804c15bd4447f883641a2f",
"4eb6839571a845b29a92ba501ecfd1f0",
"4ab963bac55043a3882682344d2eb0aa",
"3c27e130e3734d8fa63733f32fbdeec7",
"875904b5fafa4d668c7c3511ffd72f01",
"c8fa569a7a6545d2b428fd647aae128b",
"3a46c291254e4fab9472a2d3b7361f8e",
"f6d9a507191a4250a02014dc8641fc63",
"874e576bc71e470c8eed23d84af9a044",
"760fe7a6e6f24de498379f569524b7da",
"f00dd0c2d9884934819916ca63e835db",
"162fb2c25f554b5f8c81aac04cedd8e0",
"54e10c148e4f4b53a9958f2eba5b9577"
]
}
},
"source": [
"from torchvision import datasets\n",
"import torch\n",
"data_folder = '~/data/FMNIST' # This can be any directory you want to \n",
"# download FMNIST to\n",
"fmnist = datasets.FashionMNIST(data_folder, download=True, train=True)\n",
"tr_images = fmnist.data\n",
"tr_targets = fmnist.targets"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw/train-images-idx3-ubyte.gz\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b0ef1441e384495594506d7944f85aea",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Extracting /root/data/FMNIST/FashionMNIST/raw/train-images-idx3-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw\n",
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-labels-idx1-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw/train-labels-idx1-ubyte.gz\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8b041420cc6244a7a84ad1b10d4780b8",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Extracting /root/data/FMNIST/FashionMNIST/raw/train-labels-idx1-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw\n",
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-images-idx3-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw/t10k-images-idx3-ubyte.gz\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f58f91cd6a7f404399325246740c2d88",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Extracting /root/data/FMNIST/FashionMNIST/raw/t10k-images-idx3-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw\n",
"Downloading http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/t10k-labels-idx1-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz\n",
"\n",
"\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "c8fa569a7a6545d2b428fd647aae128b",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Extracting /root/data/FMNIST/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz to /root/data/FMNIST/FashionMNIST/raw\n",
"Processing...\n",
"Done!\n",
"\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/torchvision/datasets/mnist.py:469: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:141.)\n",
" return torch.from_numpy(parsed.astype(m[2], copy=False)).view(*s)\n"
],
"name": "stderr"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "65pVOnol3Eud"
},
"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": "QpZxURIM3GQR"
},
"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": "code",
"metadata": {
"id": "UwnhSSRo3Hu8"
},
"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-2)\n",
" return model, loss_fn, optimizer\n",
"\n",
"def train_batch(x, y, model, opt, loss_fn):\n",
" model.train()\n",
" prediction = model(x)\n",
" batch_loss = loss_fn(prediction, y)\n",
" batch_loss.backward()\n",
" optimizer.step()\n",
" optimizer.zero_grad()\n",
" return batch_loss.item()\n",
"\n",
"def accuracy(x, y, model):\n",
" model.eval()\n",
" # this is the same as @torch.no_grad \n",
" # at the top of function, only difference\n",
" # being, grad is not computed in the with scope\n",
" with torch.no_grad():\n",
" prediction = model(x)\n",
" max_values, argmaxes = prediction.max(-1)\n",
" is_correct = argmaxes == y\n",
" return is_correct.cpu().numpy().tolist()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "zC1KAaEv3QiZ"
},
"source": [
"def get_data(): \n",
" train = FMNISTDataset(tr_images, tr_targets) \n",
" trn_dl = DataLoader(train, batch_size=32, shuffle=True)\n",
" val = FMNISTDataset(val_images, val_targets) \n",
" val_dl = DataLoader(val, batch_size=len(val_images), shuffle=False)\n",
" return trn_dl, val_dl"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "z55H-eMO3R3V"
},
"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": "GOYt6Mtv3bCu"
},
"source": [
"trn_dl, val_dl = get_data()\n",
"model, loss_fn, optimizer = get_model()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "tH46l-zA3cec",
"outputId": "fb6b829d-6215-4a10-8ebe-b3b4c786ddc7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 108
}
},
"source": [
"train_losses, train_accuracies = [], []\n",
"val_losses, val_accuracies = [], []\n",
"for epoch in range(5):\n",
" print(epoch)\n",
" train_epoch_losses, train_epoch_accuracies = [], []\n",
" for ix, batch in enumerate(iter(trn_dl)):\n",
" x, y = batch\n",
" batch_loss = train_batch(x, y, model, optimizer, loss_fn)\n",
" train_epoch_losses.append(batch_loss) \n",
" train_epoch_loss = np.array(train_epoch_losses).mean()\n",
"\n",
" for ix, batch in enumerate(iter(trn_dl)):\n",
" x, y = batch\n",
" is_correct = accuracy(x, y, model)\n",
" train_epoch_accuracies.extend(is_correct)\n",
" train_epoch_accuracy = np.mean(train_epoch_accuracies)\n",
" for ix, batch in enumerate(iter(val_dl)):\n",
" x, y = batch\n",
" val_is_correct = accuracy(x, y, model)\n",
" validation_loss = val_loss(x, y, model)\n",
" val_epoch_accuracy = np.mean(val_is_correct)\n",
" train_losses.append(train_epoch_loss)\n",
" train_accuracies.append(train_epoch_accuracy)\n",
" val_losses.append(validation_loss)\n",
" val_accuracies.append(val_epoch_accuracy)"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"0\n",
"1\n",
"2\n",
"3\n",
"4\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "QorP8HZP3pi0",
"outputId": "9a53c3e2-b193-42de-e57a-aa1c28b6ec6e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 337
}
},
"source": [
"epochs = np.arange(5)+1\n",
"import matplotlib.ticker as mtick\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.ticker as mticker\n",
"%matplotlib inline\n",
"plt.subplot(211)\n",
"plt.plot(epochs, train_losses, 'bo', label='Training loss')\n",
"plt.plot(epochs, val_losses, 'r', label='Validation loss')\n",
"plt.gca().xaxis.set_major_locator(mticker.MultipleLocator(1))\n",
"plt.title('Training and validation loss when batch size is 32')\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 when batch size is 32')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Accuracy')\n",
"plt.gca().set_yticklabels(['{:.0f}%'.format(x*100) for x in plt.gca().get_yticks()]) \n",
"plt.legend()\n",
"plt.grid('off')\n",
"plt.show()"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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
"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": "5Ky6u6z54Blo"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "XwkgtaFW4GVP"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "auquZOA14GXd"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "9qMLWAQy4Gw2"
},
"source": [
"Batch size of 10000"
]
},
{
"cell_type": "code",
"metadata": {
"id": "yIcsIrtU4Irw"
},
"source": [
"def get_data(): \n",
" train = FMNISTDataset(tr_images, tr_targets) \n",
" trn_dl = DataLoader(train, batch_size=10000, shuffle=True)\n",
" val = FMNISTDataset(val_images, val_targets) \n",
" val_dl = DataLoader(val, batch_size=len(val_images), shuffle=False)\n",
" return trn_dl, val_dl"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ZGEBAfe14KmD"
},
"source": [
"trn_dl, val_dl = get_data()\n",
"model, loss_fn, optimizer = get_model()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "GC7DOpGD4OSs",
"outputId": "90a6f725-497e-4290-b1a7-110446b32386",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 108
}
},
"source": [
"train_losses, train_accuracies = [], []\n",
"val_losses, val_accuracies = [], []\n",
"for epoch in range(5):\n",
" print(epoch)\n",
" train_epoch_losses, train_epoch_accuracies = [], []\n",
" for ix, batch in enumerate(iter(trn_dl)):\n",
" x, y = batch\n",
" batch_loss = train_batch(x, y, model, optimizer, loss_fn)\n",
" train_epoch_losses.append(batch_loss) \n",
" train_epoch_loss = np.array(train_epoch_losses).mean()\n",
"\n",
" for ix, batch in enumerate(iter(trn_dl)):\n",
" x, y = batch\n",
" is_correct = accuracy(x, y, model)\n",
" train_epoch_accuracies.extend(is_correct)\n",
" train_epoch_accuracy = np.mean(train_epoch_accuracies)\n",
" for ix, batch in enumerate(iter(val_dl)):\n",
" x, y = batch\n",
" val_is_correct = accuracy(x, y, model)\n",
" validation_loss = val_loss(x, y, model)\n",
" val_epoch_accuracy = np.mean(val_is_correct)\n",
" train_losses.append(train_epoch_loss)\n",
" train_accuracies.append(train_epoch_accuracy)\n",
" val_losses.append(validation_loss)\n",
" val_accuracies.append(val_epoch_accuracy)"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"0\n",
"1\n",
"2\n",
"3\n",
"4\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "AttqfaY44QMK",
"outputId": "de5d2588-7866-4621-b355-251b3dcabdbc",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 337
}
},
"source": [
"epochs = np.arange(5)+1\n",
"import matplotlib.ticker as mtick\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.ticker as mticker\n",
"%matplotlib inline\n",
"plt.subplot(211)\n",
"plt.plot(epochs, train_losses, 'bo', label='Training loss')\n",
"plt.plot(epochs, val_losses, 'r', label='Validation loss')\n",
"plt.gca().xaxis.set_major_locator(mticker.MultipleLocator(1))\n",
"plt.title('Training and validation loss when batch size is 10000')\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 when batch size is 10000')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Accuracy')\n",
"plt.gca().set_yticklabels(['{:.0f}%'.format(x*100) for x in plt.gca().get_yticks()]) \n",
"plt.legend()\n",
"plt.grid('off')\n",
"plt.show()"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAACgCAYAAADNcFHrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2deXwV1fn/3w9hCYEQIAiyJgKyiiGAKG6A4E8tiIAKRFQQ64JWRSuKxYpFrVr9ulCLLWpxaRB31LpUBQKorYqKG5siCSB7EEgICVme3x9nktzcbDc3CTfL83695nVnzpwz88y5M/OZsz1HVBXDMAzDCIYGoTbAMAzDqL2YiBiGYRhBYyJiGIZhBI2JiGEYhhE0JiKGYRhG0JiIGIZhGEFT70RERN4TkSlVHTeUiEiyiIyshuOqiHT31v8uIn8MJG4Q55ksIh8Ea6cRGCIyTES2HaVzJYnIb4/CeaaKyMdVcJw/iMjTVWGTzzHLfGbqCrVCREQk3WfJE5HDPtuTK3IsVT1PVZ+r6rh1HVW9VlXvqexxRCTWE5yGPsdOVNX/V9ljG3UDEXlWRO49mudU1T+rapWKXrDPjIjcIyLfiUiOiNxdwv5LRCRFRA6JyBIRae2zr7WIvOHtSxGRS6oqbWnUChFR1eb5C7AFON8nLDE/nu+LyTBCjd2PRpD8BNwGvOO/Q0T6Av8ALgPaARnAfJ8ofwOOePsmA096aSqVtkxUtVYtQDIw0lsfBmwDbgd2Ai8ArYB/A3uAX731Tj7pk4DfeutTgY+Bh724m4Hzgox7HLASSAM+8v6Qf5VyDYHYeA/wiXe8D4A2PvsvA1KAVGC2b574nedkL1/CfMLGAd9664OB/wL7gR3AE0Bjn7gKdPfWnwXu9dk300uzHZjmF3cU8DVwENgK3O2TbosXN91bhuTnrU+cU4EvgAPe76mB5k0F87k1sNC7hl+BJT77LgDWeNewCTjX//7ztu/O/5+BWO/arvSuc6UX/or3Pxzw7pG+PumbAv/n/Z8HcPdYU9wL5Aa/6/kWGFfCdT4H/N5b7+jZcL233Q3Yh/tgHIZ7Xn4P7Pb+vyt8jtMEd39vAXYBfwea+j1rJaYtwaYk4H7gcy8P3wRa++wvMU+Aq4Fs3MssHXjbC+8MvO79l6nAE4E8lyXYdTvwi3fvbABGlPA/PkHh/ZkO5ODdw0AH4DXPjs3AjWWc61m8ZwZog7v/9nv/xyqgQTnvun/h8+x4YX8GFvlsd/PyKhJo5q338Nn/AvBAZdOWtdSKkkg5HIt7GcTgbsAGuBdDDNAFOIy7KUrjZNzN1Ab4C/CMiEgQcRfhHpho3A15WRnnDMTGS4ArgLZAY+BWABHpAzzpHb+Dd75OJZ1EVT8DDgFn+R13kbeeC9zsXc8QYARwXRl249lwrmfP2cDxgH97zCHgcqAlTlCmi8hYb9+Z3m9LdSXJ//oduzXuBTrPu7ZHgHdEJNrvGorlTQmUl88vABFAX+9Yj3o2DAaexwllS8/m5NLyowSGAr2Bc7zt93D51Bb4Ckj0ifswMBAnnK1xX6B5OGG4ND+SiMThBKLY1ymwAveSzz/3zxTm81BglarmedvHAlHesa4E/iYirbx9DwA9gP5Ady/OXT7nKSttSVyO+8Boj3sRz/PZV2KeqOoCb/0v3v1xvoiE4V7AKTih7ggs9jlWQM+wiPQEfgecpKqRuP8n2T+eqv5OC2s+TseJ05si0gB4G/jGs2EEMENEzvE/Rgn8HifCx+C+9P+AE/uK0tc7f76tm/Be/t6So6obfeJ/46WpbNrSKU9latpC8ZLIESC8jPj9gV/9vpB8Sxc/+eyLwP2xx1YkLu4FlQNE+H1FlFgSCdDGO322rwPe99bvAhb77Mv/gihWEvH23wv801uPxL3gY0qJOwN4w2e7xJII8E98vlC8G7AgbgnHfQx41FuP9eI29Nk/Fa8kghPHz/3S/xeYWl7eVCSfcS+2PKBVCfH+kW9vWfeft303xUsiXcuwoaUXJwoncoeBuBLiheNeXsd72w8D80s5ZjcvbgNc6eEaYJu37zngFp/n5bBf3u8GTgHEuze6+ewbAmwuL20pNiX53SN9vPs0rKw88b/XfOzY43tuv3un1GfYL253z+aRQCO/fQX/o0/YMd7/PcnbPhnY4hfnDmBhKXlQcB3AXFxprMRnpJT0JZVElgLX+oX94v0/ZwA7/fZdBSRVNm1ZS10oiexR1cz8DRGJEJF/eA1DB3FF5Zbe10xJ7MxfUdUMb7V5BeN2APb5hIGrximRAG3c6bOe4WNTB99jq+ohXPG+NBYB40WkCTAe+EpVUzw7eojIv0Vkp2fHn3Ffc+VRxAbcF6Lv9Z0sIstFZI+IHACuDfC4+cdO8QtLwX355VNa3hShnHzujPvPfi0haWdcFVawFOSNiISJyAMissmzIdnb1cZbwks6l3dPvwRc6n0BJ+BKTsVQ90V5CCeSZ+C+2rd7X95DcSWVfFJVNcdnOz//jsG9gL8Ukf0ish943wsvL225+YD7DxsBbcrJk5LoDKT4nduXgJ5hVf0J96F0N7BbRBaLSIeSDigijYBXcdU/+aWeGKBDfv54efQHXMmiPB7CtXV8ICI/i8isANKURDrQwi+sBa56rqx9lU1bKnVBRPyLhL8HegInq2oLCov1pVVRVQU7gNYiEuET1rmM+JWxcYfvsb1zRpcWWVXX4h7g8yhalQWuWmw97mu3Be6BqLANuJKYL4uAt4DOqhqF+zrOP255RfjtuIfVly64L6aKUlY+b8X9Zy1LSLcV93VfEodwL9t8ji0hju81XoJrXxmJK33E+tiwF8gs41zP4Ro4RwAZ6lf158cK4CJcm9Yv3vYUXLvQmjLS5bMXV9Loq6otvSVKXZVOsPjfI9neecrKEyh+j2wFulRFRwVVXaSqp+PuMQUeLCXqX3FtOXf62bHZJ39aqmqkqv4mgPOmqervVbUrMAa4RURGBHEJPwBx+Rsi0hXXlrXRWxqKyPE+8eO8NJVNWyp1QUT8icQ9DPu9+vU51X1C78t+NXC3iDQWkSHA+dVk46vAaBE5XUQa44rJ5f2Pi4CbcC/RV/zsOAiki0gvYHqANrwMTBWRPp6I+dsfifvKz/TaF3y7Cu7BVSN1LeXY7wI9vK6IDUVkIq4q5N8B2uZvR4n5rKo7cPXy80WklYg0EpF8kXkGuEJERohIAxHp6OUPuBfyJC/+INyLuzwbsnClxQhcaS/fhjxc1eAjItLB+0If4pUa8UQjD9fwXmIpxIcVuPr+ld52krf9sarmlpM235angEdFpC2Ad92B1PeXxqU+98hc4FXPllLzxGMXRe+Pz3EfLg+ISDMRCReR0ypqjIj0FJGzvPzNxN0beSXEuwZXgpushW1J+XakicjtItLU+79OEJGTAjj3aBHp7rXVHMC1RxY7txe3kYiE457rht715tdSJALni8gZItIMl6+veyJ1CNf5YK6XT6fhxPqFKkhbKnVRRB7D9W7ZC/wPVyQ/GkzG1d2m4tohXsI9KCURtI2q+gNwPU4YduDqwssbQPYi7qFYpqp7fcJvxb3g03AvkJcCtOE97xqW4Yroy/yiXIe7GdNwbTgv+6TNAO4DPvGqBE7xO3YqMBpXikjFNTSP9rM7UMrL58twX8frcXXlMzwbPsc13D+Ke+BXUFg6+iOFbRB/omjJriSex5UEfwHWenb4civwHa4X2j7cl3EDv/T9cPXjZbEC93LOF5GPcS/olaWmKM7tuP/zf14100e4klywvIBrF9iJq7a70QsvL0+eAfp498cST3jOx7VpbMHd7xODsKcJrvPAXs+mtrg2DX8ScCK2XQrHo/3Bs2M0rtpws3ecp3GlqfI4Hpef6bg2vvmquryUuE/hBC4B1/vyMF5HHe/5vxYnCLtx/7lvZ5jrcPf8btxzP91LU6m0ZSFeA4pRxYjIS8B6Va32kpBRdxGRy4GrvSoYw6hx1MWSSEgQkZNEpJtX/XEurii4JNR2GbUXrxroOmBBqG0xjNIwEak6jsXVQ6fj+sNPV9WvQ2qRU
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "FEoyYJqx4X3i"
},
"source": [
""
],
"execution_count": null,
"outputs": []
}
]
}