{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"accelerator": "GPU",
"colab": {
"name": "Varying_learning_rate_on_non_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": {
"2d72b65a1f4c465cb8915d21a4ded81a": {
"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_db11204073db42099a81f19a9ef35a57",
"IPY_MODEL_676ea1ac89f14b8eae9fb1b4110999eb"
],
"layout": "IPY_MODEL_4258a98ff8d8436f813aa29764089d7e"
}
},
"4258a98ff8d8436f813aa29764089d7e": {
"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
}
},
"db11204073db42099a81f19a9ef35a57": {
"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_36e6a6c0c8fd4a1284f31cb11fe5be07",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_cf8d7d6369bb4f7a92a02f57336ec3eb",
"value": 1
}
},
"676ea1ac89f14b8eae9fb1b4110999eb": {
"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_d8e28abad66f4ece93da1f30c682e289",
"placeholder": "",
"style": "IPY_MODEL_e89d5fb85edb41968d3265c027423dd1",
"value": " 26427392/? [00:20<00:00, 3846154.66it/s]"
}
},
"cf8d7d6369bb4f7a92a02f57336ec3eb": {
"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"
}
},
"36e6a6c0c8fd4a1284f31cb11fe5be07": {
"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
}
},
"e89d5fb85edb41968d3265c027423dd1": {
"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": ""
}
},
"d8e28abad66f4ece93da1f30c682e289": {
"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
}
},
"fa55a956e0ec426684ffb0bdd2aaf65d": {
"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_8d2e6d4ec31543e7964121dfa4fe1f9f",
"IPY_MODEL_301fccdfd2254c658701abd2d5b9368e"
],
"layout": "IPY_MODEL_51267828ab3a4313b0e6012f6bf0b328"
}
},
"51267828ab3a4313b0e6012f6bf0b328": {
"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
}
},
"8d2e6d4ec31543e7964121dfa4fe1f9f": {
"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_88443dd117e5459fbff8729f7e0f7ac7",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_b97cec467a56407483e60df732c5b038",
"value": 1
}
},
"301fccdfd2254c658701abd2d5b9368e": {
"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_d3687ee113de4e6aa32b51dbae4ae439",
"placeholder": "",
"style": "IPY_MODEL_b37c0ec1fefa4a628c2b2aaa0eafdc37",
"value": " 32768/? [00:03<00:00, 8840.11it/s]"
}
},
"b97cec467a56407483e60df732c5b038": {
"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"
}
},
"88443dd117e5459fbff8729f7e0f7ac7": {
"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
}
},
"b37c0ec1fefa4a628c2b2aaa0eafdc37": {
"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": ""
}
},
"d3687ee113de4e6aa32b51dbae4ae439": {
"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
}
},
"f0216a2a6381403aa3e4100f4ae05a0b": {
"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_f134ca2f225841f58f880fe94cda0682",
"IPY_MODEL_2dcb661d6ebc4cfb9217ee14f4dcc6fe"
],
"layout": "IPY_MODEL_111c4426dc2a451383d4235ed11de4af"
}
},
"111c4426dc2a451383d4235ed11de4af": {
"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
}
},
"f134ca2f225841f58f880fe94cda0682": {
"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_ae440217fb4f48269a215aa1548c7bd1",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_212e04d78edb4e3f98d52e43961118c2",
"value": 1
}
},
"2dcb661d6ebc4cfb9217ee14f4dcc6fe": {
"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_dab4a4ef69b0414392602812bd054d4f",
"placeholder": "",
"style": "IPY_MODEL_3775293154cd4d5b9433d9ddf3cc7ecb",
"value": " 4423680/? [00:02<00:00, 1569289.74it/s]"
}
},
"212e04d78edb4e3f98d52e43961118c2": {
"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"
}
},
"ae440217fb4f48269a215aa1548c7bd1": {
"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
}
},
"3775293154cd4d5b9433d9ddf3cc7ecb": {
"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": ""
}
},
"dab4a4ef69b0414392602812bd054d4f": {
"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
}
},
"0e18c3f0a671480aae5b419040f68b69": {
"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_ad36ad050558442998f0e00eb89d262b",
"IPY_MODEL_58cc93d98ec546f1ba7b7414fef8e1cd"
],
"layout": "IPY_MODEL_a5d70c71fbb6452ab21e283210129f6e"
}
},
"a5d70c71fbb6452ab21e283210129f6e": {
"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
}
},
"ad36ad050558442998f0e00eb89d262b": {
"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_91b0bf8c64a14494b8e23049fa4a9ee7",
"max": 1,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_d8ac9b97251c418397239b49db8a2c9b",
"value": 1
}
},
"58cc93d98ec546f1ba7b7414fef8e1cd": {
"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_fc18640e80a34c54a00e9fb8feba2b21",
"placeholder": "",
"style": "IPY_MODEL_941b82bd3e7e46ab958b66a6ab8e431f",
"value": " 8192/? [00:00<00:00, 9504.00it/s]"
}
},
"d8ac9b97251c418397239b49db8a2c9b": {
"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"
}
},
"91b0bf8c64a14494b8e23049fa4a9ee7": {
"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
}
},
"941b82bd3e7e46ab958b66a6ab8e431f": {
"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": ""
}
},
"fc18640e80a34c54a00e9fb8feba2b21": {
"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": "00ce7b7f-06a9-4d4e-e00c-15b35851d56e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 437,
"referenced_widgets": [
"2d72b65a1f4c465cb8915d21a4ded81a",
"4258a98ff8d8436f813aa29764089d7e",
"db11204073db42099a81f19a9ef35a57",
"676ea1ac89f14b8eae9fb1b4110999eb",
"cf8d7d6369bb4f7a92a02f57336ec3eb",
"36e6a6c0c8fd4a1284f31cb11fe5be07",
"e89d5fb85edb41968d3265c027423dd1",
"d8e28abad66f4ece93da1f30c682e289",
"fa55a956e0ec426684ffb0bdd2aaf65d",
"51267828ab3a4313b0e6012f6bf0b328",
"8d2e6d4ec31543e7964121dfa4fe1f9f",
"301fccdfd2254c658701abd2d5b9368e",
"b97cec467a56407483e60df732c5b038",
"88443dd117e5459fbff8729f7e0f7ac7",
"b37c0ec1fefa4a628c2b2aaa0eafdc37",
"d3687ee113de4e6aa32b51dbae4ae439",
"f0216a2a6381403aa3e4100f4ae05a0b",
"111c4426dc2a451383d4235ed11de4af",
"f134ca2f225841f58f880fe94cda0682",
"2dcb661d6ebc4cfb9217ee14f4dcc6fe",
"212e04d78edb4e3f98d52e43961118c2",
"ae440217fb4f48269a215aa1548c7bd1",
"3775293154cd4d5b9433d9ddf3cc7ecb",
"dab4a4ef69b0414392602812bd054d4f",
"0e18c3f0a671480aae5b419040f68b69",
"a5d70c71fbb6452ab21e283210129f6e",
"ad36ad050558442998f0e00eb89d262b",
"58cc93d98ec546f1ba7b7414fef8e1cd",
"d8ac9b97251c418397239b49db8a2c9b",
"91b0bf8c64a14494b8e23049fa4a9ee7",
"941b82bd3e7e46ab958b66a6ab8e431f",
"fc18640e80a34c54a00e9fb8feba2b21"
]
}
},
"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": "2d72b65a1f4c465cb8915d21a4ded81a",
"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": "fa55a956e0ec426684ffb0bdd2aaf65d",
"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": "f0216a2a6381403aa3e4100f4ae05a0b",
"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": "0e18c3f0a671480aae5b419040f68b69",
"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": "XxBVyrwixgx-"
},
"source": [
"### High Learning Rate"
]
},
{
"cell_type": "code",
"metadata": {
"id": "wHgNxifc6edk"
},
"source": [
"class FMNISTDataset(Dataset):\n",
" def __init__(self, x, y):\n",
" x = x.float()\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": "18df4a22-014b-4925-f827-be715d7c8762",
"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": "62f7dfff-924c-4259-e2fd-c4114d0ddb60",
"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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c3jqqadiD9QpKSnhk08+YfDgwYwfP56CggJ69OjBpEmTKl2/S5cufPbZZwBMmTKFbt26cfzxx8e614boHoT+/fvTp08fzj77bMrKyli0aBGPP/44119/PXl5ebz//vsUFRXxyCOPADB37lzy8/Pp1asX48aNY8eOHbHtTZo0ib59+9KrVy9WrVpV5f5lu4ttv0/BOVdzV18N4YE3tXXg7t3QqBHk5cG0aQmXa926NQMGDOCZZ55h+PDhzJ49m/POOw9JTJkyhdatW7N7925OPPFE3nzzTXr37l1pOkuWLGH27NksW7aMXbt20bdvX/r16wfAyJEjufjiiwH46U9/yj333MMVV1zBmWeeybBhwzjnnHP2Smv79u0UFRUxd+5cunXrxpgxY7jzzju5+uqrAWjbti1Lly7ljjvuYOrUqdx9990J9y/ZLrZ37tzJvffem/Yutr2m4Jzb58Q3IcU3HT388MP07duX/Px8VqxYsVdTT0ULFizgrLPOolmzZhx00EGceeaZsXnLly9n8ODB9OrVi1mzZrFixYoq8/POO+/QtWtXunXrBsDYsWOZP39+bP7IkSMB6NevX6wTvUQWLlzIhRdeCFTexfb06dPZtGkTjRs3pn///tx3331MnjyZt956Ky3dhGSspiDpXmAYsN7MeoZprYGHgC5ACXCemX2h6OnSvwNOA8qAIjOru24BnXM1U8URfaq2pdD30fDhw7nmmmtYunQpZWVl9OvXjw8//JCpU6fy2muvcfDBB1NUVJSwy+zqFBUVMWfOHPr06cP9999PcXFxjdIpV979dm263p4wYQKnn346Tz/9NIMGDeJvf/tbrIvtp556iqKiIq699lrGjBlTq7xmsqZwP3BKhWkTgLlmdhQwN4wDnAocFV6XAHdmMF/OuX1cbm4uQ4cOZdy4cbFawpYtW2jevDktW7Zk3bp1PPPMM1WmMWTIEObMmcO2bdsoLS3liSeeiM0rLS2lQ4cO7Ny5M9bdNUCLFi0oLS39Rlrdu3enpKSE9957D4A//elPfO9736vRviXbxfa7776bkS62M1ZTMLP5krpUmDwcKAzDDwDFwI1h+oMWddn6T0mtJHUws7WZyp9zbt82atQozjrrrFgzUnlX00cffTSHHXYYgwYNqnL9vn37cv7559OnTx/atWtH//79Y/NuvfVWBg4cyCGHHMLAgQNj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\n",
"text/plain": [
"