{
"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": [
""
]
},
{
"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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\n",
"text/plain": [
"