{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"accelerator": "GPU",
"colab": {
"name": "Varying_learning_rate_on_scaled_data.ipynb",
"provenance": [],
"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": {
"dae59549ef954024b3c36d449e4641d9": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_e08286687cbd40dfa558da2b8d71c6fc",
"IPY_MODEL_a3f6e11dfddd42e9b6067ae0ac370ed6"
],
"layout": "IPY_MODEL_d0d2f9b00ba04fbc826786f670173113"
}
},
"d0d2f9b00ba04fbc826786f670173113": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"e08286687cbd40dfa558da2b8d71c6fc": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "info",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_111dd48b60b54627945bb5d13cca94a3",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_88389412e16a4584a85916e15454f7f0",
"value": 1
}
},
"a3f6e11dfddd42e9b6067ae0ac370ed6": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_50f95788611244cf8af9bc6a927da130",
"placeholder": "",
"style": "IPY_MODEL_2e94773230b0455ea544ee4e868f35ab",
"value": " 26427392/? [00:20<00:00, 70376905.63it/s]"
}
},
"88389412e16a4584a85916e15454f7f0": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"111dd48b60b54627945bb5d13cca94a3": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"2e94773230b0455ea544ee4e868f35ab": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"50f95788611244cf8af9bc6a927da130": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"9c17f851329549adb7c6c0ff1b4b72bb": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_51c391a3d08a45a98a621f318807c0a4",
"IPY_MODEL_a54941c3f2984eb188e7d709207718a3"
],
"layout": "IPY_MODEL_6b54b67a969f4dfcb8e42ac452ed2bf2"
}
},
"6b54b67a969f4dfcb8e42ac452ed2bf2": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"51c391a3d08a45a98a621f318807c0a4": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_a78c1daf40bf488c8bf4e9ba6cbaebd8",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_b2e0c5eb158e40cd826b37d782532ec0",
"value": 1
}
},
"a54941c3f2984eb188e7d709207718a3": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_6a37b969b4034f5982c103c20fec07f1",
"placeholder": "",
"style": "IPY_MODEL_dab92fc6f1864ded828be1b86e9d394e",
"value": " 32768/? [00:00<00:00, 84606.30it/s]"
}
},
"b2e0c5eb158e40cd826b37d782532ec0": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"a78c1daf40bf488c8bf4e9ba6cbaebd8": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"dab92fc6f1864ded828be1b86e9d394e": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"6a37b969b4034f5982c103c20fec07f1": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"eb35d1f806bb4293832b352372a7e818": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_a7797f3647754db698bb3cfc0e012a45",
"IPY_MODEL_c50d39ed89274af889b7d5a750eafccc"
],
"layout": "IPY_MODEL_485adcc616a64367af619c8d8ef186ee"
}
},
"485adcc616a64367af619c8d8ef186ee": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"a7797f3647754db698bb3cfc0e012a45": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_8b121d7f8284450f84487956d58594ba",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_a7dcae9789ae4846bb7d25c15eb3c871",
"value": 1
}
},
"c50d39ed89274af889b7d5a750eafccc": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_da2505878dfe4fbf94f69bfb628b4328",
"placeholder": "",
"style": "IPY_MODEL_e9719aa12ee942519174b95260e006c9",
"value": " 4423680/? [00:00<00:00, 16810916.27it/s]"
}
},
"a7dcae9789ae4846bb7d25c15eb3c871": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"8b121d7f8284450f84487956d58594ba": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"e9719aa12ee942519174b95260e006c9": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"da2505878dfe4fbf94f69bfb628b4328": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"921bffbe641f48edbec6a240d1febc60": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_03db6468a1204187989c5a9ca399ca89",
"IPY_MODEL_b28fbff9823c4ba2b1ab6f0d1ce010a9"
],
"layout": "IPY_MODEL_37bea11f5a444c45b2bf6cc01cc15ed5"
}
},
"37bea11f5a444c45b2bf6cc01cc15ed5": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"03db6468a1204187989c5a9ca399ca89": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_20bfc65f6e084666a145f3e0c82e6e51",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_6cdb0d3567704d1eae6971553158a93d",
"value": 1
}
},
"b28fbff9823c4ba2b1ab6f0d1ce010a9": {
"model_module": "@jupyter-widgets/controls",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_6b7e31e72bbe4701b15c9b20ccad3f6e",
"placeholder": "",
"style": "IPY_MODEL_fea2440f9b04432ba305fddd87654150",
"value": " 8192/? [00:00<00:00, 26759.59it/s]"
}
},
"6cdb0d3567704d1eae6971553158a93d": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": "initial"
}
},
"20bfc65f6e084666a145f3e0c82e6e51": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"fea2440f9b04432ba305fddd87654150": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"6b7e31e72bbe4701b15c9b20ccad3f6e": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
}
}
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
""
]
},
{
"cell_type": "code",
"metadata": {
"id": "-BdJ4Kt46Qsq",
"outputId": "33956944-49c6-4207-c3fe-25e5feaf93bf",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 437,
"referenced_widgets": [
"dae59549ef954024b3c36d449e4641d9",
"d0d2f9b00ba04fbc826786f670173113",
"e08286687cbd40dfa558da2b8d71c6fc",
"a3f6e11dfddd42e9b6067ae0ac370ed6",
"88389412e16a4584a85916e15454f7f0",
"111dd48b60b54627945bb5d13cca94a3",
"2e94773230b0455ea544ee4e868f35ab",
"50f95788611244cf8af9bc6a927da130",
"9c17f851329549adb7c6c0ff1b4b72bb",
"6b54b67a969f4dfcb8e42ac452ed2bf2",
"51c391a3d08a45a98a621f318807c0a4",
"a54941c3f2984eb188e7d709207718a3",
"b2e0c5eb158e40cd826b37d782532ec0",
"a78c1daf40bf488c8bf4e9ba6cbaebd8",
"dab92fc6f1864ded828be1b86e9d394e",
"6a37b969b4034f5982c103c20fec07f1",
"eb35d1f806bb4293832b352372a7e818",
"485adcc616a64367af619c8d8ef186ee",
"a7797f3647754db698bb3cfc0e012a45",
"c50d39ed89274af889b7d5a750eafccc",
"a7dcae9789ae4846bb7d25c15eb3c871",
"8b121d7f8284450f84487956d58594ba",
"e9719aa12ee942519174b95260e006c9",
"da2505878dfe4fbf94f69bfb628b4328",
"921bffbe641f48edbec6a240d1febc60",
"37bea11f5a444c45b2bf6cc01cc15ed5",
"03db6468a1204187989c5a9ca399ca89",
"b28fbff9823c4ba2b1ab6f0d1ce010a9",
"6cdb0d3567704d1eae6971553158a93d",
"20bfc65f6e084666a145f3e0c82e6e51",
"fea2440f9b04432ba305fddd87654150",
"6b7e31e72bbe4701b15c9b20ccad3f6e"
]
}
},
"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": "dae59549ef954024b3c36d449e4641d9",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Extracting /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": "9c17f851329549adb7c6c0ff1b4b72bb",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Extracting /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": "eb35d1f806bb4293832b352372a7e818",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Extracting /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": "921bffbe641f48edbec6a240d1febc60",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(FloatProgress(value=1.0, bar_style='info', max=1.0), HTML(value='')))"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"Extracting /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": "S4Ss3qAj6cCN"
},
"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": "MhUgyxQv6dWF"
},
"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": "kWEHrvHpxC6Z"
},
"source": [
"### High Learning Rate"
]
},
{
"cell_type": "code",
"metadata": {
"id": "wHgNxifc6edk"
},
"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-1)\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": "CfnVtUMO6nhR"
},
"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": "wAN-GtKb6o83"
},
"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": "7EhlA61S6qM3"
},
"source": [
"trn_dl, val_dl = get_data()\n",
"model, loss_fn, optimizer = get_model()"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "h-yph5GO6rQ6",
"outputId": "96d18492-ffaa-4db1-f86b-fabbabb9d5ac",
"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": "HtZsoP8w6sNY",
"outputId": "2fc9ff64-e257-403f-ca81-4b619d10eda4",
"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 with 0.1 learning rate')\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 0.1 learning rate')\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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e/dBaebOncv8+fNr3faSJUvYsmVL1es777yTd955J5ziB9SYhqu2QGCMafQmTJhAzeHnFy9eHNLAbwCvv/46HTt2rNe2awaCu+++mzPOOKNeeTVWFgiMMY3eRRddxNKlS6tuQpOXl8e3337LiBEjmD59OoMHD6Zfv37MmTMn4PppaWn88IO7zcm8efPo06cPw4cP59NPP61K8+ijjzJkyBAyMjK48MILKSkpYeXKlbzyyiv8+te/JjMzky+//JIpU6bw4osvAvDuu++SlZVFeno6U6dOZd++fVXbmzNnDgMHDiQ9PZ1t27bV+v5+/PFHzjvvPAYMGMBJJ53Ehg0bAHj//ferbsCTlZVFUVERO3fu5NRTTyUzM5P+/fuzYsWKQ6tc7H8Exphw3XwzrFsXkazaVlRAy5aQmQn33Rc0XadOnRg6dChvvPEG48ePZ/HixVxyySWICPPmzaNTp05UVFRw+umns2HDBgYMGBAwnzVr1rB48WLWrVtHeXk5AwcOZNCgQQBccMEFTJs2DYDf/va3PP7449xwww2MGzeOsWPHctFFFx2QV2lpKVOmTOHdd9+lT58+TJo0iYcffpibb74ZgC5durB27Voeeugh5s+fz2OPPRb0/YU6XHVZWRlPPPFExIertjMCY0yT4N885N8s9PzzzzNw4ECysrLYvHnzAc04Na1YsYLzzz+fdu3a0aFDB8aNG1e1bNOmTYwYMYL09HQWLVrE5s2bay3Pp59+Sq9evejTpw8AkydPZvny5VXLL7jgAgAGDRpEXl5erXnl5uZyxRVXAIGHq16wYAG7d++mVatWDBkyhCeffJK5c+eycePGiAzRYWcExpjw1HLkHq69YYw1NH78eGbMmMHatWspKSlh0KBBfPXVV8yfP59Vq1Zx2GGHMWXKlKDDT9dlypQpLFmyhIyMDJ566ilycnLqlY+PbyjrQxnGetasWYwZM4bXX3+d7OxsXn755arhqpcuXcqUKVOYOXPmIY9SamcExpgmISkpidGjRzN16tSqs4HCwkLat29PSkoK3333HW+88UateZx66qksWbKEvXv3UlRUxKuvvlq1rKioiG7dulFWVsaiRYuq5icnJ1NUVHRQXn379iUvL48vvvgCgGeeeYaRI0fW6735hqsGAg5XfdtttzFkyBA+++wztm/fTteuXZk2bRpXX301a9eurdc2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\n",
"text/plain": [
"